Hi, Habr! We are pleased to announce the release of a major IDE update -
IntelliJ IDEA 2017.2 . Since not everyone follows the news in our official blog (and also because it will be more convenient for many to read about it in Russian), in this post I will tell you what to expect from the new version of IDE. Who is in a hurry to try the update on their own, download from
the JetBrains website , or from the
Toolbox App . Everyone else, welcome under cat.

Java
Autocompletion remains one of the most requested features of the IDE and therefore continues to improve from release to release. This time, improvements have touched the
Smart Completion feature.
')
First, the IDE learned how to suggest expressions using the
Builder pattern:

Secondly, prompts containing call chains, previously available on the second
Smart Completion call, are now displayed on the first call, and also sorted based on their popularity of the project:

The last improvement is currently available only after the project is compiled by the IDE compiler (in other words, the function is not yet available if the compilation is delegated to Gradle).
Analysis of the flow of code execution (
control flow analysis ) has also become smarter and now finds a greater number of potential errors in the code that are imperceptible at first glance.
First, the IDE notices conditions that are inconsistent or repetitive. Directly such code is not the cause of the error, however, it often indicates indirectly about it.

In addition, the IDE has now learned to understand the contract of many methods, and use it to find logical problems in the code. For example, if the
Collection # isEmpty () method returns true, this means that iteration over this collection will not be performed, and calling the
List # get method
(int index> 0) will result in an error.

New inspections include:
Replace with Set.of ,
Add Thread # onSpinWait () (both require Java 9), and
Extract set from comparison chain .
The latter can be very useful, because it helps to get rid of cumbersome constructions and make the code much more readable:

Java 9 continues to move forward slowly but inexorably. Therefore, in the update, we have added module diagrams that we hope will make working with modules even more convenient:

The
Spring Boot Run window now displays the status of running applications obtained using
Endpoints :
Beans ,
Health, and
Mappings .

The debugger now allows you to conveniently filter arrays and collections in the
Variables ,
Evaluate Expression ,
Watches ,
Inspect, and others
window .

Kotlin 1.1.3
In addition to supporting a more recent version of the language, the IDE received hints for the names of method parameters (
Parameter Hints , familiar from Java and Groovy), hints from derived types (
Type Hints ), semantic highlighting (also familiar from Java and other languages), and
TODO highlighting .
The hints of inferred types are a fundamentally new function that makes the code more readable.

Groovy 2.5.0
Groovy 2.5.0 support mainly includes support for new annotations:
groovy.transform.builder.Builder # includeSuperProperties ,
groovy.transform.AutoImplement , and
groovy.lang.Delegate for methods.
Version control
The
Log Tool window for Git provides two new features:
Revert Commit (rollback changes), and
Reword Commit . The latter allows you to change the description of the unsent change.

In addition, the IDE was able to automatically format change descriptions according to the settings (
Version Control |
Commit Dialog ): the
blank line , the
limit line line , and the
limit line . When editing the description of the change in the
Commit dialog, the inspection and the
Reformat function became available:

User interface
The editor area inside the
Find in Path popup has a left pane with navigation elements and indicators of local changes. Popup displays the progress of the search. Search results from the same lines are combined into one result.

Interface elements on Window 10 began to look native.

In the case of several high-resolution monitors (HiDPI), the IDE now correctly determines the resolution: depending on which monitor element is displayed (previously, the resolution of the main monitor was always used).
Font size is now also automatically adjusted depending on the resolution.
Javascript and typeScript
TypeScript code, like Java, now shows parameter names. Also available is the Expression Type action (previously familiar to Java):

The action
Rearrange Code , familiar to those who worked with Java code in IntelliJ IDEA, became available for JavaScript and TypeScript. It allows you to streamline code within classes.

With the new
Move Symbol refactoring, you can safely transfer classes, methods and variables from one ES6 module to another. IDE will automatically update all imports and exports.

In the new version, we have improved support for Angular Material, the UI component library for Angular. Now the IDE understands and prompts special attributes from Angular Material.

When testing JavaScript applications with
Mocha, you can now find out how well the code is covered with tests. And when working with Karma, you can now run each test separately.

Auto-completion and navigation in JavaScript code now takes into account the project configuration (for example, aliases), described in
webpack.config.js .

Performance
Any module can now be specified as “unloaded” (
Unloaded ). In this case, the IDE will exclude it from indexing and compiling.

This feature is recommended to be used only to exclude modules on which the modules you plan to work with do not depend. If you perform a refactoring, search, or
other operation that an unloaded module could potentially affect, the IDE will report this:

In addition to modules, it is now also possible to exclude files from indexing by expression. This can be useful if you want to exclude files of a specific type whose names
contain certain patterns (for example,
* _min.js) .
The indexing process can now be suspended. This can be useful when you need to urgently free up CPU resources.
In short, these are all important changes. Learn more about the changes on the
What's New page. There you can download the update.
I will be glad to answer any questions.
Program with pleasure!