IntelliJ IDEA 2017.3: VCS enhancements and more
The IntelliJ IDEA 2017.3 EAP is available! Before we take a look at the exciting new features the latest IntelliJ IDEA 2017.3 EAP build has to offer, let’s talk about the VCS features we briefly announced last week.
If you use Git or Mercurial for version control, you can already view all commits to all the branches in the Log view. Starting with this EAP, the IDE shows the files changed by merge commits even if they only differ from one parent. Previously only the files that had merged conflicts were displayed.
Furthermore, the IDE now displays a 3-panel Diff for merge conflicts.
IntelliJ IDEA currently provides a useful tool for managing your tasks – Tasks & Contexts. With IntelliJ IDEA 2017.3, we are expanding this functionality: you can now shelve changes related to your current task when starting a new task. You can then unshelve the changes when you switch back.
IntelliJ IDEA 2017.3 also 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.
Changelists can now be renamed in the Shelf tab. It is also possible to shelve changes using drag-and-drop: drag a changelist from the Local Changes tab to the Shelf tab, and soon after the Shelf tab will be activated.
Drag-and-drop a changelist from the Shelf tab to the Local Changes tab, and the IDE will let you select a changelist to put it into.
IntelliJ IDEA 2017.3 EAP now reads the author and commit details provided by git patches, so you don’t need to enter them manually when committing patches from the IDE.
The IntelliJ IDEA 20173.3 EAP build brings a new feature to the database tools: the ability to group data sources.
Another enhancement in that area is support for Foreign Data Wrappers in PostgreSQL.
And last but not least, starting with this EAP, something color scheme designers may find useful: the ability to configure hints and tooltips background via | Preferences | Editor | Color Scheme | General | Hints and Popups |
As the Debugger is one of most important tools for any developer, we’re constantly working on making it even more capable and easier to use.
IntelliJ IDEA provides essential features for debugging asynchronous applications: Async stacktraces. The Async Stacktraces feature shows the full picture of the data flow between the threads. It allows you to view the combined stack traces of all threads.
For this code example:
We’ll have the following stacktrace:
Until now, in order to use the Async stacktraces feature, you had to specify the stacktraces to capture and the point to insert. This approach was not very convenient. Another issue that you probably faced while using this feature was a significant overhead.
To make the Async Stacktraces feature easier to use, we developed a new mechanism: Instrumenting agent. The new Instrumenting agent method extends the Async Stacktraces feature and provides almost the same functionality, with a very low overhead. You won’t need to spend time on configuring Async Stacktraces anymore, as common capture points are built-in. Starting with this EAP, the new Instrumenting agent option is enabled by default.
You can also set up a special configuration manually, if needed. (Settings | Build, Execution, Deployment | Debugger | Async Stacktraces).
Another improvement in this update is also related to the Debugger. With IntelliJ IDEA 2017.2, we presented a separate plugin to visualize the Java Stream operations called Java Stream Debugger. In this IntelliJ IDEA 2017.3 EAP build, the Java Stream Debugger plugin is bundled and available inside the Debug tool window.
Smarter code completion
The Smart Completion becomes aware of the type casts and uses them to suggest the chains of method calls. Please note that in order to use the Smart Completion feature, the project needs to be compiled by IntelliJ IDEA, don’t delegate the compilation to Gradle.
Improvements in Java inspections and actions
The IDE inspection for redundant throws declaration is now available on the fly.
IntelliJ IDEA 2017.3 provides quick-fix suggestions for deprecation inspections if a direct replacement method is available in JavaDoc.
IntelliJ IDEA detects different code inefficiencies, such as Invert boolean method inspection. If a method was used only in an invert way, the method would be highlighted and a quick-fix would be suggested. Starting from this new EAP build, this inspection is performed on the fly.
Starting with this EAP, IntelliJ IDEA warns you about duplicate Map keys.
And about duplicate Set elements.
New inspections for Fuse Stream API call chain and subsequent sort/toArray/collection creation:
There’s also a new intention action, Unroll loop:
- New improvements for unloaded modules: automatically unload newly added modules and check that unloaded modules compile successfully before commit.
- The ClearCase plugin is not bundled anymore.
- After a Drag & Drop from the Local tab to the Shelf tab in the Version Control Tool window, you can rename the changelist on the fly.
- You can also select the place where to drop your file if you Drag & Drop from Shelf to Local tab.
- When applying a patch from a file or the clipboard, the author and the commit message are automatically saved in the changelist and are used when the changelist is committed.