What's New in AppCode

AppCode brings new Extract Method refactoring, override/implement completion, new intentions, and lots of language support improvements for Swift as well as __auto_type support for Objective-C/C/C++.

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.

Blank lines
Spaces within braces
Simple methods and functions

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++

va* support
Parameter packs

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
Unused var
Unused var

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.

Download
Free 30-day trial
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.
2016.3 Dec 6

Swift

Swift 3

Swift 3

AppCode 2016.3 delivers the first huge part of Swift 3 support covering lots of changes introduced in this new major language version.

Check what features are supported

Performance

Performance

We've re-worked our Swift resolution engine and made code highlighting, completion and navigation much faster than ever before, even in complex projects.

With significant performance optimizations made in SourceKit integration, AppCode shows warnings, errors and fix-its in Swift code almost instantly.

Code style

Formatting

AppCode 2016.3 comes with a first-class set of Swift formatting options allowing you to easily reformat your code.

Set your preferred formatting options for closures, chained method calls, condition clauses or function parameters, define the wrapping behavior, and stop caring about spaces and indents when writing your code.

Learn more about formatting changes

Create from usage

Create from usage

Have you ever dreamed about creating a function, constant, variable or property declaration just by using it in your code? Simply press ⌥⏎ and have it created automatically in the right place!

Learn more

Testing

UI tests

UI tests

AppCode test runner now supports UI tests.

Run all tests in your test file or execute a single one simply by pressing ^⇧R.

Re-run only failed tests in one click and easily filter them out from successful ones.

Highlighting

Semantic highlighting

Semantic highlighting

Unlike the usual highlighting that picks out language keywords, types and values, semantic highlighting helps understand how data flow through the code by highlighting each variable/parameter with its own color.

Enable it in Preferences | Editor | Color & Fonts | Language Defaults and use it when writing Swift, Objective-C or C++ code.

Highlighting and configurations

Highlighting and configurations

When your code depends on a set of variables and flags set in the run/build configuration, you can see the difference in the editor immediately as you switch the configuration in AppCode. Resolve context is updated automatically, while a manual switcher is still available as before.

C/C++ support

User-defined literals

User-defined literals

This C++11 feature brings the concept of built-in type into the language and is now supported by AppCode, including correct parsing, type preview in Quick Documentation popup (F1) and Rename refactoring.

Overload resolution

Overload resolution improvements

The process of selecting the most appropriate overloaded function or operator can be tricky. AppCode 2016.3 handles this well and even introduces two new code inspections for such situations:

  • Ambiguous call
  • No matching function to call
Code analysis

Code analysis improvements

We’ve reworked dozens of checks to avoid false-positives. This work includes:

  • correct tracking of variable usages in sizeof(), cin and cases when variable is passed by reference
  • correct handling of non-trivial destructors in the Unused variable inspection
  • support for __builtin_unreachable and __attribute__(unused)
  • platform-dependent code analysis
  • and more
C11 keywords

C11 keywords

AppCode 2016.3 adds support for _Generic keyword, as well as code completion for specific C11 keywords such as _Thread_local, _Alignas, _Noreturn, _Static_assert, and _Atomic.

This version also brings support for gcc atomic builtins.

Version control

Undo commit

Undo actions

Sometimes when working with version control, you change your mind at the last moment. AppCode helps you undo certain actions to avoid any harm:

  • undo the last change that you haven’t pushed yet;
  • restore a deleted local branch.
Sign-off commit

Sign-off commit

Some projects require Git –signoff commits to be used. AppCode now makes this possible to do from the commit changes dialog.

Resolve fixes

Resolve conflicts in one click

Simple conflicts can now be resolved by the IDE. If you have several nonoverlapping changes on one line, AppCode will show a special resolve icon in the merge dialog. Click the icon to have the conflict resolved by the IDE.

Git remotes

Manage remotes through the VCS | Git menu. Now you can add, edit and remove remotes for every repo in the project.

Filters in Git/Mercurial log

AppCode now builds an index for all commits on first-time project opening and later update it on a log refresh. This improves the performance of text, author and path filters in the Git log.

Git/Mercurial log UI changes

A new design for branches and tags in Git/Hg Log makes it cleaner and easier to use:

  • labels have moved to the right;
  • commit messages in the table are now aligned;
  • commit details have moved to the right.

UI enhancements

Find in path

Find in Path

The Find in Path dialog now keeps previously used settings (scope, file name filter, context, etc.), regardless of where you call it from.

San Francisco

San Francisco font

The default font in the Default and Darcula themes is now San Francisco. It’s used across all the menus and tool windows.

Fira Code

Fira Code font

AppCode 2016.3 bundles the FiraCode font, so font ligatures are now much easier to use. To set is as your editor font, select it in settings Editor | Colors & Fonts | Font.