What's New in AppCode

AppCode brings Swift 4 and Xcode 9.x support, dozens of improvements in Swift and mixed Objective-C/Swift resolution engine, improved performance of incremental builds, and lots of new C++ support features and improvements.

Download
Free 30-day trial
2017.3 Nov 30

Swift

Modern Swift

AppCode 2017.3 comes with support for all the latest Swift 4 features including multi-line string literals, smart keyPaths, class and subtype existentials, and more.

Inspections and intentions

Add or remove explicit types in variable declarations with the new Add/Remove explicit type intention.

Remove redundant @objc attributes in your code base simply by running the corresponding inspection on the whole project or by using the quick-fix in your code.

Parsing and resolution correctness

Focusing on parser and resolution accuracy, this release brings support for access modifiers in Swift together with multiple improvements in the resolution engine.

Completion of optionals

When completing an optional candidate, press ? or ! to have it inserted in the code right after the currently selected item in the completion list.

Mixed code

This release makes code analysis, completion, navigation, and refactorings in mixed Objective-C/Swift code more accurate thanks to the following improvements:

  • Correct resolve for Swift initializers coming from Objective-C
  • Better Objective-C/Swift translation
  • Resolve for Objective-C classes imported via .pch from Swift code

С++

Boost tests

Boost and Catch support

Support for Catch and Boost.Test test frameworks is now available in AppCode for C++. Easily create test run configurations, run separate tests directly from the source file, rerun failed tests, and do more cool things.

JUCE support

JUCE support

JUCE is widely used to develop multiplatform audio applications. AppCode 2017.3 comes with multiple fixes to the JUCE library support to avoid various incorrect code analysis warnings and allow proper navigation through the code.

List initialization

Since C++11, list initialization has been the standard way to initialize an object from braced-init-list. AppCode 2017.3 has reworked support for this language feature, including fixes for many of the incorrect code analysis warnings:

  • Invalid “parameter type mismatch” error for boost weak pointer initialization
  • Failed resolve for the members of auto variables initialized with uniform initialization
  • Invalid warnings when C99 union initializers are used
  • Missing “too few arguments” warning in case of invalid list initialization
  • And others

Name lookup

Name lookup is a standard C++ procedure to associate a name with a declaration. This release fixes the following situations when the procedure previously failed in AppCode:

  • Resolving a name before the corresponding declaration from the same scope
  • Resolving a name imported via using in some cases
  • Resolving symbols brought into the scope by class inheritance
  • And others

Build and Run

Build performance

We’ve reworked our support for the Xcode build system to make incremental builds much faster than before.

"Unlock the device" notification

AppCode now waits for the device to be unlocked and shows the corresponding notification when running/debugging your application.

Color schemes

Color schemes

Easily distinguish method/function declarations and calls in Swift, Objective-C, C, and C++ by configuring different colors for them in Preferences | Editor | Color Scheme

Testing

Testing

Now it’s even easier to run a single test or all tests in your test file, by using special icons in the editor’s left gutter for Swift, Objective-C, and C++.

Project wizard

Project wizard

Icons in project, file and target wizards are now pixel-perfectly rendered.

And even more

  • When switching between branches, the IDE preserves your workspace and automatically restores it when necessary.
  • When committing Git patches from the IDE, the IDE reads the author and commit details provided by the patch.
  • When using Tasks & Contexts, you can now shelve the changes related to your current task when you start a new task; unshelve the changes when you switch back.
  • And some more
Download
Free 30-day trial
2017.2 Jul 26

Swift

Extract method

Extract method

Easily extract methods and functions from your Swift code just by pressing ⌥⌘M, and have the signature suggested automatically together with parameter names.

Override/Implement completion

Override/Implement completion

Type the entity name you need to override or implement, select it in the completion list, and have the corresponding stub automatically generated by AppCode.

Code style

Benefit from new formatting options for Swift, including:

  • separate Blank Lines sections for protocol properties and methods
  • spaces within code braces for single-line closures
  • ability to keep simple methods and functions in one line
Inline type hints

Inline type hints

Turn on Show Swift type hints in Preferences | Editor | General | Appearance and have type hints displayed for variables without an explicit type annotation.

Objective-C

__auto_type support

__auto_type support

AppCode is now able to parse __auto_type expressions in Objective-C/C/C++ and shows the __auto_type keyword in the completion list.

C++

Code analysis correctness

Focusing on correctness, AppCode 2017.2 improves its C++ code analysis across the board. For example:

  • Fixes for incorrect code analysis in cases when std::enable_if is used
  • Fixes for the issues with resolving STL containers with nested template type
  • Proper support for va_* macros was added
  • Correct handling of functions that take parameter pack arguments and non-template arguments

Intentions and quick-fixes

Even when variable is unused, constructor might still have some side effects. A new quick-fix was added to preserve non-trivial constructor call on unused variable.

Intentions and quick-fixes in C++ code suggest C++ type casts (static_cast, dynamic_cast, reinterpret_cast, const_cast) instead of C-style casts.

Documentation

Documentation

AppCode 2017.2 brings support for the Xcode 8.x-9.x documentation format for Objective-C/C/C++ and Swift. Press F1 and have the documentation displayed for a symbol under the caret.

Build messages

Build messages

Benefit from improved build messages displaying compiler note messages as a subnode of the corresponding warning or error.

Version control

Reword

Reword

If you committed your changes but not pushed yet and would like to change the commit message, you can do this with the new Reword action.

Revert

Revert

The Git Revert action is now available right from the Log view. Select any number of commits and call Revert from the context menu.

Commit messages

Commit messages

It is important to keep commit messages easy-to-read and expressive, and formatting is quite important here. Configure commit messages inspections in Preferences | Version Control | Commit Dialog, and select whether you want to have a blank line between subject and body, set the maximum text length, or check the spelling in the comments.

2017.1 Mar 28

Swift

Swift 3

Language support

AppCode 2017.1 brings long-awaited improvements in Objective-C/Swift translation, support for nullability audited regions and lots of the latest Swift 3 features.

Check which new features are added

Create from usage

Create from usage

Generate new classes, structs, protocols or enums together with needed initializers right from their usages in your code.

Override/Implement

Override/Implement

Override or implement multiple methods at once – now even faster thanks to a UI showing Swift members hierarchically and more accurate code generation.

Completion

Completion

Benefit from function completion, which now takes into account parameter names in function signatures.

Structure view

Structure view

See all the //TODO, //FIXME and //MARK comment tags in the Structure view (⌘7) and File Structure popup (⌘F12).

C++ support

C++ 14

C++14

AppCode 2017.1 delivers support for the following C++14 features:

  • auto return type
  • generic lambdas
  • variable templates
  • generalized lambda captures
Nested namespaces

C++17

As the C++17 standard is just around the corner and the upcoming features are being finalized, AppCode starts supporting C++17 with nested namespaces.

Convert to auto intention

Convert to auto intention

For the sake of code readability and accuracy, AppCode now suggests to modernize your C++ code by converting variable type to auto.

As this feature should be used carefully across your code base, it’s implemented as a non-intrusive intention.

General improvements

General improvements

We continue to improve AppCode's parser and code analysis to make it even more accurate:

  • Decltype used in trailing return and constructors doesn’t confuse AppCode anymore
  • AppCode no longer suggests making static or friend functions pure virtual
  • Hidden functions from the base class are no longer suggested in completion

IDE

Build messages

Build messages

Filter compiler messages in your application – select the necessary message types via the Filter messages button on the left-hand side of the Build Messages tool window (⌘0).

Xcode-like breakpoints

Xcode-like breakpoints

Welcome a new option, Drag to the editor area, available in Preferences | Build, Execution, Deployment | Debugger | Remove breakpoint. Click a breakpoint in your code to disable it, or drag a breakpoint into the editor area to remove it.

Emoji support

Emoji support

Insert emojis into your source code easily with the native emoji chooser (^⌘Space) and have them correctly rendered in the AppCode editor and IDE windows.

Find in path

Find in path

Change Find in Path settings faster with all of them gathered on a single pane.

Remote hosts

Remote hosts

Upload your project sources to the remote server painlessly, by using the Remote Hosts Access plugin bundled in AppCode.

And even more

  • The Branches popup has been redesigned and can now mark important branches as Favorites.
  • VCS Log viewer now allows you to use regular expressions, and to match or ignore case when searching.
  • Fixes for Dvorak as well as Korean, Chinese and Japanese keyboard layouts.
  • Zero-latency typing enabled by default.