What's New in AppCode
AppCode becomes even swifter than before, bringing you support for lots of new Swift language features, new Create from usage actions, Override/Implement improvements and even 🎉😃🔥 support in the editor!
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.
Generate new classes, structs, protocols or enums together with needed initializers right from their usages in your code.
Override or implement multiple methods at once – now even faster thanks to a UI showing Swift members hierarchically and more accurate code generation.
Benefit from function completion, which now takes into account parameter names in function signatures.
See all the
//MARK comment tags in the Structure view (⌘7) and File Structure popup (⌘F12).
AppCode 2017.1 delivers support for the following C++14 features:
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.
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.
We continue to improve AppCode's parser and code analysis to make it even more accurate:
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).
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.
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.
Change Find in Path settings faster with all of them gathered on a single pane.
Upload your project sources to the remote server painlessly, by using the Remote Hosts Access plugin bundled in AppCode.
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.