IntelliJ IDEA 2017.3

Released: Nov 30, 2017

Mises à jour de 2017.3

Fonctionnalités

  • Java
    • Chain completion aware of type casts - In IntelliJ IDEA 2017.3, it is now aware of type casts and uses them to suggest chains of method calls.
    • Inference of nullability annotations for parameters - Improved the way nullability annotations are inferred. Earlier, annotations were only inferred for library methods’ parameters and for any methods’ return types. Now we can also infer nullability annotations for the parameters of static, final and private methods.
    • Nullability checks for Stream API call chains - IntelliJ IDEA 2017.3 now detects possible nullability issues even in Stream API call chains.
    • Quick-fix to explicitly declare the inferred annotation - The IDE shows the inferred annotations in the Parameter Info and Quick Doc popups. When the caret is placed on such parameter, the IDE offers a quick-fix to explicitly declare the inferred annotation.
    • Support for JUnit5 - IntelliJ IDEA 2017.3 provides inspections and quick-fixes to make it even easier for you to migrate your JUnit 4 tests to JUnit 5.
    • Replacing StringBuilder with a Stream API call chain - StringBuilder can now be replaced with Stream.collect and Collectors.joining.
    • Invert boolean method quick-fix - IntelliJ IDEA detects different code inefficiencies, such as the Invert boolean method inspection. If a method was only used in an inverted way, it will be highlighted and a quick-fix will be suggested. In IntelliJ IDEA 2017.3, this inspection is performed on the fly.
    • Separate method calls on collections and Stream API call chains - Now, where it makes sense, the IDE suggests merging separate calls of the sort and toArray methods on collections with the Stream API call chains.
    • Detecting duplicate Map keys and Set elements - The IDE now detects duplicate Map keys and duplicated Set elements.
    • Detecting redundant throws declarations - Redundant throws declarations can now be detected on the fly.
    • Quick-fix for replacing deprecated code - The IDE now suggests a quick-fix for deprecated code if there is a replacement method in the JavaDoc.
    • Unroll loop - A new intention action unrolls a loop over an explicit list of values.
    • Run Dashboard supports any Run Configurations - The IDE now lets you add different types of run configurations to the Run Dashboard. The Run Dashboard toolbar lets you rerun, stop, pause, or terminate an application. The right-hand side shows application-specific information.
    • Command line shortener - IntelliJ IDEA 2017.3 introduces a configurable command line shortener - a convenient new way to specify a method used to shorten the command line for each configuration.
  • JVM debugger
    • New Overhead tab - Displays the overhead added either when stepping over the code or when the Data Renderers evaluate values to display them in Variables, Watches, or other places. When it isn’t needed, the tab can be easily hidden and then restored again later.
    • On-demand Data Renderers - A new On-demand Data Renderers feature helps to reduce overhead. Now, the evaluation of values in Variables, Watches, and other places can be done on demand. Simply click on them when needed, instead of having them evaluated automatically.
    • Mute Renderers - To enable the On-Demand setting for the selected renderer, choose the Mute Renderers option from the context menu.
    • Improvements for Async Stacktraces - In IntelliJ IDEA 2017.3 the Async Stacktraces feature causes very low overhead and works out of the box, as the common capture points are built-in.
    • Java Stream Debugger - The Java Stream Debugger plugin, which visualizes the Java Stream operations, is built into IntelliJ IDEA 2017.3. The new functionality is available inside the Debugger tool window (click the Trace Current Stream Chain button). This plugin evaluates the current data stream and presents a visual representation of what exactly happens to each element, from the first call to the last.
    • Java EE 8 - Multiple CDI enhancements, including support for asynchronous events, HTTP/2 support in Servlet 4.0, and more. IntelliJ IDEA 2017.3 expands support for key features of Java EE 8.
    • Asynchronous CDI Events - IntelliJ IDEA 2017.3 supports Asynchronous CDI Events allowing you to easily navigate between the position where the event was fired and where it was received.
    • Dynamic beans (CDI extensions) - In IntelliJ IDEA 2017.3, you can quickly navigate between the Injection point and Injected Beans using the icons in the gutter.
    • Navigation from disposer methods to their producers - You can navigate from disposer methods to their producers using an icon in the gutter.
    • HTTP/2 support for Servlet 4.0 - One of the major features in Java EE 8 is HTTP/2 support for Servlet 4.0. HTTP/2 has an important new feature: Server push. It enables the server to send content to the client without an initial request from the client side. The main goal of this new approach is to improve the performance of web browsing. IntelliJ IDEA 2017.3 supports this new Server Push feature and offers path completion for the PushBuilder.
  • Spring
    • Neighborhood Mode in dependency diagrams - The Spring Beans Dependencies diagram has been extended with a new Neighborhood Mode feature, which lets you choose only the necessary beans and view only their dependencies. For better readability, you can easily switch to Borderless View.
    • Facetless auto-configuration - IntelliJ IDEA 2017.3 automatically detects a facet for Spring projects; for Spring MVC projects the IDE now detects both: the facet and the context.
  • Spring Boot
    • Auto-detection of MVC context - With IntelliJ IDEA 2017.3, MVC context for Spring Boot MVC web applications is automatically detected. The IDE will automatically set up a Web Facet and a Spring Boot MVC Context.
    • Support for Spring Boot MVC web applications - IntelliJ IDEA 2017.3 makes all of its major features available when working with Spring Boot MVC web applications, including auto-completion, syntax highlighting, and navigation to related views.
    • Spring Boot 2.0 Actuator Endpoints - IntelliJ IDEA 2017.3 supports Spring Boot 2.0 Actuator Endpoints.
    • Highlighting for Spring Boot configuration files - In Spring Boot configuration files, the values are now highlighted according to their type.
    • Project configuration
    • Unloaded modules - When you update a project that has unloaded modules via a VCS, the IDE will analyze all the dependencies between the modules. If the newly added modules depend on existing ones, they will be marked as loaded; otherwise, as unloaded. The IDE also checks whether unloaded modules compile successfully before a commit.
    • New method of module organization - Now you can choose how to organize your modules: by using module groups, or by grouping modules based on their qualified names.
  • Gradle
    • Coverage for Gradle - IntelliJ IDEA 2017.3 lets you run tests with coverage by using the Gradle Test Runner. You can even run tests with coverage if you select the Delegate IDE build/run action to Gradle option. Choose how you want to run your test with coverage from the main editor: with the platform test runner or with the Gradle Test Runner.
    • Build tool window - IntelliJ IDEA 2017.3 introduces a new Build tool window for Gradle build output. Previously, in some cases, Gradle build output was hidden in a background process, now it is displayed in the Build tool window.
  • Editor-based REST client
    • Brand new editor-based REST client - IntelliJ IDEA 2017.3 introduces a brand new editor-based REST client. To start using the new REST client, create a scratch file with the .http extension. Use the icon on the left-hand panel of the editor to run a request. For easier navigation, the IDE will add a link to the request results.
    • Environment variables - In the new editor-based REST client, you can define the context for executing a request. Create a rest-client.env.json file inside your project and define an environment with variables. Once the environment variables are defined, you can easily switch between different environments such as production, testing, and development.
    • Kotlin - The Kotlin plugin bundled with the IDE has been updated to Kotlin 1.2. Now support for the experimental Kotlin multiplatform projects is available inside the IDE. This new Kotlin feature makes it possible to reuse code between target platforms supported by Kotlin, which are JVM, JavaScript, and (in the future) Kotlin/Native.
    • Detecting expected declarations without the actual implementation - To call platform-specific code from a common module, you can specify expected declarations – declarations for which all platform-specific modules need to provide actual implementations. Expected declarations should have actual implementation in the platform-specific module. If you try to use an expected declaration without the actual implementation, IntelliJ IDEA 2017.3 will detect the problem and alert you.
    • Intention action to create the actual class - The Kotlin plugin provides an intention action to create an actual implementation for missing declaration for JS and JVM platforms.
    • Navigation from expected declarations to actual implementations - For the multiplatform project feature, the IDE provides a gutter icon to let you easily navigate between expected declarations and actual implementations.
  • Version control
    • Interactively Rebase from Here in Log - Git integration in IntelliJ IDEA allows you to edit your project history by performing Interactive rebase before you apply changes from one branch to another. To make it even easier to use, starting with IntelliJ IDEA 2017.3 you can invoke it right from the Log tab of the Version Control tool window. To edit several commits in the current branch, select the oldest commit in the series and choose the Interactively Rebase from Here action from the context menu.
    • Preserving workspace when switching between branches - In IntelliJ IDEA 2017.3, Git integration supports working with multiple branches. When you switch between branches, the IDE preserves your workspace: the opened files, the current run configuration, and the breakpoints. The workspace associated with a branch will be automatically restored when you switch back to that branch.
    • Improvements for Git and Mercurial merge commits - Starting with this update, the IDE shows files changed by merge commits, even if they only differ from one parent. Previously only the files that had merge conflicts were displayed. Furthermore, the IDE now displays a 3-panel Diff for merge conflicts.
    • Suggesting author and commit details for changes from patches - IntelliJ IDEA 2017.3 now reads the author and commit details provided by git format patches, so you don’t need to enter them manually when committing patches from the IDE.
    • Rename shelved changes - Changelists can now be renamed on the Shelf tab. Drag a changelist from the Local Changes tab to the Shelf tab, freeze for a second, and the Shelf tab will be activated allowing you to specify a new name for the shelved changelist.
    • Unshelve changes with drag’n’drop - Drag-and-drop a changelist from the Shelf tab to the Local Changes tab, and select a changelist to put it into.
  • Database tools
    • Grouping Data Sources - IntelliJ IDEA 20173.3 includes a new database tools feature: the ability to group data sources. Press F6 or choose Move to group… from the context menu.
    • Foreign Data Wrappers in PostgreSQL - Foreign Data Wrappers, and as a consequence, foreign tables, are now displayed in PostgreSQL.
    • Select schema & data source on running a file - IntelliJ IDEA 2017.3 now prompts you to choose a database/schema along with a datasource when you try to run an SQL file from the Project tool window.
    • Jump to Console from Data Source - For easier navigation, we’ve upgraded the context menu for datasources in the Database tool. Choose Jump to Console, and you’ll now have a handy menu for quickly switching between your consoles.
    • XQuery and XPath coding assistance - The XQuery/XPath support for Microsoft SQL Server is now provided through the Injected Languages feature.
    • Right-side alignment for numeric data - For better readability, the IDE now right-aligns numerical columns data in the table editor.
    • Synchronize IDE settings across devices - IntelliJ IDEA 2017.3 ensures better synchronization of your settings across different installations. It provides a more convenient method for storing your settings, utilizing a JetBrains repository to store items such as the UI theme, colors, fonts settings, and so on. You can apply these settings to all of your IDE instances using your JetBrains Account (JBA).
  • Scala
    • Highlighting of implicit usages - The Scala plugin now detects and highlights usages of a symbol in the current file even when it is used implicitly.
    • Build, Run, and Test processes do not depend on indexing anymore - For Scala integration, building or test execution processes shouldn’t require indexing, but this was not completely true until now. Previously, a number of dependencies forced you to wait until the IDE finished indexing. With this release, we’ve completely changed the logic, so you now you can run your existing run_configurations (application, tests …) in parallel with indexing. It’s especially useful for big projects where indexing takes considerable time.
    • Automatic SBT library import - Now the IDE suggests importing SBT libraries from the local Ivy cache.
    • A new wizard for Lightbend Tech Hub templates - The Scala plugin has introduced a new Lightbend Project Starter wizard.
  • Docker
    • New UI for Run/Debug Configurations dialog - The Docker Run/Debug Configurations has been split into 3 different types: Docker Image, Dockerfile, and Docker-compose. The dialogs for these three types have been totally redesigned. For Docker Image and Dockerfile run configurations in the Create Docker Configuration dialog, it’s now possible to accept the CLI arguments directly, without converting the docker run command into a JSON file. With the Docker plugin, in addition to using environment variables for Dockerfile and Docker Image, you can also set files with environment variables in the container during a docker build.
    • Build Image action - A new Build Image action was added to the gutter for Dockerfile.
    • Custom names for Dockerfile and docker-compose files - The Docker plugin now supports Dockerfiles and docker-compose files with custom names and paths.
  • User Interface
    • Multiple soft limits - IntelliJ IDEA now allows you to сonfigure several visual guides to help control code width. The possibility to add multiple soft limits is now available in Settings/Preferences | Editor | Code Style.
    • Preview for SVG files - IntelliJ IDEA 2017.3 introduces a new Preview panel for the SVG editor. Observe the changes in the Preview panel while editing an SVG file in the editor.