What's New in AppCode
AppCode becomes swifter than ever before,
the first part of Swift 3 support, lots of helpful formatting options,
and new Swift code generation and editor features.
AppCode 2016.3 delivers the first huge part of Swift 3 support covering lots of changes introduced in this new major language version.
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.
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.
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!
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.
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.
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.
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.
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:
We’ve reworked dozens of checks to avoid false-positives. This work includes:
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.
Sometimes when working with version control, you change your mind at the last moment. AppCode helps you undo certain actions to avoid any harm:
Some projects require Git –signoff commits to be used. AppCode now makes this possible to do from the commit changes dialog.
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.
Manage remotes through the VCS | Git menu. Now you can add, edit and remove remotes for every repo in the project.
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.
A new design for branches and tags in Git/Hg Log makes it cleaner and easier to use:
The Find in Path dialog now keeps previously used settings (scope, file name filter, context, etc.), regardless of where you call it from.
The default font in the Default and Darcula themes is now San Francisco. It’s used across all the menus and tool windows.
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.
With the new Introduce Variable refactoring for Swift, you can easily extract a part of a complex expression into a local variable. The variable name will be suggested automatically, as well as options for automatic type specification and variable mutability.
See all errors and warnings immediately in the editor when writing Swift code with SourceKit inspections integrated into AppCode
Use the same fix-its as in Xcode for Swift – simply press ⌥Enter on a highlighted region to apply them.
If you happen to mistype something in your comments or code constructs, fix it simply by pressing ⌥Enter
Use Live Templates in Swift to insert frequently-used or custom code constructs into source code quickly.
Have parameter names and value placeholders autofilled simply by invoking completion on a Swift method or function.
Generate closure stub for function parameter simply by pressing ⏎ on the corresponding placeholders and easily fill closure argument names.
Invoke completion for the closure defined as a local variable and simply select an option to generate closure stub in the same way as you do for blocks in Objective-C.
Subscripts in Swift may contain multiple parameters – that's why AppCode makes it easier for you to deal with them by filling the corresponding placeholders.
Use Complete Statement (⇧⌘Enter) in Objective-C code to insert parentheses, braces, semicolons and quotes for such code constructs as if, switch or else. Quickly jump to the place where you can start typing the next statement automatically.
Generate documentation comments for Objective-C/C++ methods in no time, simply by pressing /**, /*! or /// and have parameter names inserted into the comment stub automatically.
Use completion inside documentation comment to quickly insert documentation tag or method parameter name.
Benefit from the significantly improved formatting in Quick Documentation (F1).
Save your time when updating your documentation – use Rename for method parameters and have them changed automatically in documentation comments.
Easily rename Swift methods and method parameters used in Objective-C and quickly find their usages with ⌥F7.
See all unversioned files right in the Commit window.
Navigate through the commit log easily by using tooltips with target commit information.
Completion for Objective-C types used from Swift is improved and shows relevant substitutions for any type used.
Change values of Core Data objects without stopping your debugging session with the Set value action (F2).
Parsing of build messages is significantly improved: now Messages tool window (⌘0) displays all errors and warnings in a convenient way, skipping all irrelevant information.
Build progress messages were updated to show user-friendly descriptions for particular build phases.
Edit your Podfiles with all recent syntax additions supported including use_frameworks!, abstract_target and other keywords
C++ parser in AppCode now supports variadic templates providing a lot of fixes, especially for problems in overload resolution and false positives in code analysis for related code constructs.
Symbol completion and import quick-fix for STL headers now generate correct imports.
Quick Documentation popup (F1) now provides additional details covering lambda expressions, namespace aliases and explicit instantiation, as well as links to the referenced types.
Manage your project sources and libraries independently from the project structure and choose where to perform sources indexing, code generation, refactorings and more.
Two new sorting modes are available in Structure View (⌘7) for Objective-C and C++: Sort by Type and Sort Alphabetically.
Find changes faster in Diff Viewer with by-word difference highlighting
Work with multiple Git worktrees directly from AppCode and manage them as regular repositories.
Rebase your feature branches on master in one click using the Checkout with Rebase action in Branches context menu, and easily Rename it.
If using Mercurial, now you can compare file revisions between branches.