IntelliJ IDEA 2020.1 EAP2: Improvements to the Debugger, the Profiler, and More

IntelliJ IDEA 2020.1 EAP was updated today. The new EAP build adds improvements to the debugger and the profiler, and it introduces a new Commit toolwindow along with the LightEdit mode. Keep reading to learn all about these exciting changes.

Debugger

Dataflow analysis assistance

IntelliJ IDEA v2020.1 adds dataflow analysis assistance to the debugger, which predicts and shows you possible exceptions and always true/always false conditions based on the current state of the program execution.

When you debug Java code and reach a breakpoint, the IDE runs the dataflow analysis based on the current state of the program and shows you what will happen next, before the code execution reaches that point:


You can read all the details about this new feature in Integrating Java Dataflow Analysis and the Debugger.

Pin to top

Another small but helpful improvement is the ability to pin any of an object’s fields to the top of its fields list. This can come in handy when the object has so many fields that it becomes difficult to find the ones you need to investigate:

We’ve added another minor debugger improvement that allows you to connect to a debugging session from a remote machine through IPv6.

Profiler

Focus on method calls

Now when you analyze your application’s performance with the CPU profiler, you can use a number of additional options to focus more specifically on a chosen method call and filter out the unnecessary ones:

  • Focus on Subtree shows the selected method call and all the following calls in the subtree. When this is selected, the parent time-sample counter displays the overall time spent in the selected subtree.
  • Focus on Call shows the selected method and the methods that call it. When this is selected, every time frame shows only the time spent in the selected method.
  • Exclude Subtree ignores the selected method call and all the following calls in the subtree.
  • Exclude Call excludes the selected method and all calls to it.

Visit the Profiling tools section to learn how to install and use this feature to analyze applications in IntelliJ IDEA Ultimate.

Collapse recursive calls

IntelliJ IDEA now detects recursive calls when the same method is called higher up in the stack. The IDE now encourages you to take these calls out of the subtree, allowing you to bypass recursion and focus on the methods that consume most of the resources and on the calls that they make.

Recursive calls are indicated with this new special icon in the Call Tree tab:

Analyze HProf memory snapshots

IntelliJ IDEA 2020.1 enables you to open .hprof memory dump files without taking up too much of your RAM.

To open the .hprof file, go to Help | Find action and type “hprof” to find the Open Hprof Snapshot action:

Once you have chosen the .hprof file, the IDE will open it in the Profiler tool window:

A number of tabs appear in the picture above. Here’s what they do:

  • Summary shows common information like the total size, number of instances and stack traces of the file.
  • GC Roots shows all the root objects grouped by classes.
  • Classes lists all classes sorted by their numbers of instances or size.
  • Object view (double-click on an object) lists all the class instances with the field value viewer.

Note that in v2020.1 we are working on the very first version of this new feature. More sophisticated analysis should become available in the next major versions. As usual, we’re excited to see your feedback and suggestions in the comments.

Other improvements

New Commit tool window

We have been working on the new commit tool window for quite some time. In the previous EAP series, we tested several approaches to the Commit UI. Now in 2020.1 we’ve come up with a new tool window for the task. Here is what it looks like:

The new commit tool window incorporates the Local Changes and Shelf tabs. This tool window covers all commit-related tasks, like checking diffs, selecting files and chunks to commit, and entering a commit message. Commit is a vertical tool window located on the left, which leaves room for the entire editor to show the diff.

We are still working to improve the new tool window, and your suggestions and general feedback are very welcome in the comments!

LightEdit Mode

The new LightEdit Mode allows you to open files in a simple editor window without creating or loading a project. It’s been developed in response to a frequent request to use IntelliJ IDEA as a general-purpose text editor [IDEA-62898].

The easiest way to try LightEdit mode is to open a file from the command line by executing “idea file” where file refers to a file that exists in the local file system:

For more information on how to create a command line launcher, see Opening files from command line.

You can also use the Open action from the IntelliJ IDEA’s welcome screen or Open with…| IntelliJ IDEA from your OS’s system file manager.

Though the LightEdit Mode doesn’t provide the full set of the IDE features, it starts and works considerably faster. LightEdit mode is convenient for quick changes in arbitrary local text, source, and configuration files. This feature is in an early stage of development, and we are planning to implement gradual improvements and fixes over the coming EAP builds.

Preview intentions

You can now preview intentions before you apply them to your code. After pressing Alt+Enter to choose an available intention action, you now can also press Alt+Space to see a preview:

Zen Mode

The new Zen Mode has been added to get rid of possible distractions and to help you focus completely on your code. In its essence, this new mode combines the Distraction Free Mode and the Full Screen Mode, so that you don’t have to enable or disable both of these modes every time you want to enter or exit them.

Just like with any other editor mode, to enable the Zen Mode, go to View | Appearance | Enter Zen Mode, or choose it from the Quick Switch Scheme popup (Ctrl+` | View mode | Enter Zen Mode).

Check out the full release notes for the exact list of closed tickets.

That’s it for now! We’ll keep publishing the EAP builds for v2020.1 with more fixes and improvements each week. Stay tuned!

And Happy Developing!

This entry was posted in EAP Releases and tagged , . Bookmark the permalink.

42 Responses to IntelliJ IDEA 2020.1 EAP2: Improvements to the Debugger, the Profiler, and More

  1. Mark Han says:

    Data flow analysis and the new Commit UI look incredible. Having more room to view diffs is always good. Is there a keymap to check/uncheck boxes in the commit staging left panel and the commit diff view? It would tremendously speed up my workflow if this is so.

    Zen Mode is great but can we be sure to test it more with multiple projects/IDEs open? There are a lot of hiccups with Distraction Free mode with multiple windows open on MacOS.

    • michel says:

      In the commit panel use the space bar to check/uncheck boxes.
      For checking/unchecking in the commit diff view you can use your own shortcut (define a keymap for “include lines into commit” in the keymap setting).

  2. Fabio says:

    I have a lot of problems with this EAP.
    All default javascript objects are not recognized (“window” for instance) and my IDE already crashed twice.

    • Olga Klisho says:

      Hello Fabio, please create an issue at the YouTrack (https://youtrack.jetbrains.com/issues/IDEA) attaching to it the idea.log file after the bug reproduction (Help | Show Log in Finder) and providing the description of steps to reproduce and a little code sample or sample project if possible. Thank you and sorry for inconvenience.

  3. Roman says:

    Zen mode is cool, but can we also get the line numbers there?

    • Artem Sarkisov says:

      Yes you can: Invoke Search Everywhere (Double Shift) or Find Action (Shift+Cmd+A / Ctrl+Shift+A) when in the Zen Mode, and look for “show line numbers”.

  4. Joe says:

    The separator between split editors is nearly impossible to see in the EAP. You can’t tell where one editor ends and another starts. Please revert that UI change.

  5. Mike B. says:

    Regarding the new commit tool window, unfortunately the new UI layout works fine only if you have a really wide screen, otherwise the key UI part of the commit tool — a code diff will look as two narrow blocks where most of the space will be occupied by paddings — either tabs or spaces.

    Further discussion:
    https://youtrack.jetbrains.com/issue/IDEA-231847

  6. Ulrich says:

    I don’t understand why there are so many experiments with the commit dialog. It get’s worth each time. To me the last iteration, where commit and VSC history are combined worked okay. What bothers me most are two points: Alt-9 opens the commit dialog and I have found no shortcut that opens Git log view. The other thing is the position of the new commit dialog. Why can’t I resize or reposition it?

    • Artem Sarkisov says:

      You should be able both resize and reposition the commit dialog from the context menu (Right click | Move to…). Does that not work for you?

      As for the shortcut for the Git log view, you may find the new one and reassign it in Settings | Keymap.

      • Ulrich says:

        yes, I can move the dialog, but it’s initial position isn’t optimal and I have to reposition it in every project. Also; after moving the dialog to the bottom, diff preview for a changed file still appears at the top hiding any open file.

        Does changes to the commit and git log dialog are breaking my workflow and doesn’t make me “Develop with Pleasure”.

        Personally I like an integrated view of the changed file, commit message and diff preview for each file. It took me a while to adjust to the commit dialog in intellij 2019.x, but the current changes are broken to me.

        Please revert this change.

        • Artem Sarkisov says:

          Sorry to hear the new layout breaks your workflow. We are unlikely to revert it, but we will continue improving it.

          However, you may roll back to the previous commit dialog by going to Settings / Preferences | Version Control | Commit Dialog and unchecking “Commit from Local Changes…”.

          Hope that helps!

          • Ward Lootens says:

            I’m fully with Ulrich on this one.
            Like the previous workflow, with local changes, shelf, git log, history… all in the same tool (9.VCS)
            Now those things are spread in 2 tools, which feels weird…

            Also, the ‘Diff preview’ in git log is now placed at the bottom instead of at the right.
            This makes in unusable for me…

    • Carsten Otto says:

      I also noticed that Alt+9 doesn’t show me the git log. As far as I know, we have Ctrl+K to open the commit dialog. What about using Alt+9 to show the git log, and Ctrl+K to show the new commit dialog?

      • Artem Sarkisov says:

        Yes, that was changed. On Win/Linux Alt+9 now opens the new Commit tool window, and Alt+Shift+9 opens the git log. But you can rebind that in the Settings | Keymap.

  7. Dmitry Kandalov says:

    Zen mode needs an option to hide all warnings (or even errors).
    At the very least there should be shortcuts to change highlighting level.
    Otherwise, it’s not zen at all with yellow and red popping up as soon as you type something.

  8. Tim says:

    For the Commit window, I’m mostly not unhappy with the old UI actually.
    What I do miss however, is a feature to keep the commit-window open when I do not commit all files.
    Not infrequently, I have some changes that I want to commit separately from others. Then I want to select the files / changes that I want to commit, commit them, then select other files to commit, commit them separately, repeat, then push.

    • Carsten Otto says:

      There’s an (old) issue about that, and I understand your problem. For me it helped to create changelists for those different commits. And, of course: commit early, commit often :)

  9. Too many tool tips says:

    The Javadoc tooltip appears when I hover over any part of my code. It is a bit annoying after some time. Is there a way to disable it.

  10. Carsten Otto says:

    I really like the static analysis feature in the debugger. Using this analysis you can identify certain unreachable lines, for example everything in an else block if the if condition is true. Could you remove/strike-through/darken/… the unreachable code, or maybe highlight the code that will be executed with certainty?

  11. Yosef says:

    Hi How to use LightEdit if the IDEA path always changing from build number to build number. I’m using Toolbox which automatically updates it.

    • Yosef says:

      And maybe you can add to toolbox the button which will create and update PATH automatically?

      • Andrei Mishchenko says:

        There is already this option in Toolbox, open settings of installation in toolbox

        • Yosef says:

          Privet Andrei

          How to activate it? Maybe you can refer me to documentation?

          When I trying to run: idea from command line:
          ‘idea’ is not recognized as an internal or external command,
          operable program or batch file.

  12. Simen Bekkhus says:

    Any chance of moving the “local changes” tab back into the “git” tab (possibly behind an option)? I _never_ commit from IntelliJ, but I use IntelliJ to view local and historical diffs all the time, so I more or less always have the git window open.

  13. IN says:

    Problem:Integrate the maven framework. Adding dependencies after 2019.1.4 is particularly inconvenient.
    Key words:The prompt is slow, the groupId cannot be filled, and the smart prompt is not effective.
    Detailed description:
    1、In the artifactId tag of the pom.xml file. Enter the keywords that depend on the jar package. Smart prompts cannot be displayed quickly. Such as:

    test


    2、GroupId cannot be filled automatically after selecting the jar package

    • Artem Sarkisov says:

      Sorry for this issue. We are working on better Maven dependencies completion experience. At the moment for a workaround please add “maven.packagesearch.enabled=false” into Help -> Edit Custom Properties file and restart.

      • IN says:

        Thanks for your answer. With the solution you said, there are still problems.
        Problem:
        Smart prompt speed has been improved, but the groupId is not automatically filled with the corresponding “ID”

        Hopefully, this issue can be resolved in the 2020.1 version. “Maven adds dependency intelligence”

        • Andrey Dernov says:

          Is it filled in with variants when you start typing? Please note that you can use Code | Generate… (Alt+Insert shortcut) to insert new dependency template with completion.

  14. Alan Stange says:

    Lots of very nice improvements. However, I don’t see the option for “Zen Mode” on a fresh linux install. It’s not in the menu option, or in ctrl-`, etc.

    • Artem Sarkisov says:

      Just to make sure: are you running the latest v2020.1 EAP and not an earlier version?

      • Joscha says:

        Having the same issue here, there is no option to toggle the Zen mode.

        Version: IntelliJ IDEA 2020.1 EAP (Ultimate Edition)
        Build #IU-201.4515.24, built on January 30, 2020
        OS: Linux arch 5.5.2-arch1-1

  15. Algirdas says:

    Local changes tab in 2020.1 EAP1 was better… In Git panel was everything that i needed (Local changes, Branches, Git history) and where was integrated current “Commit” tab. I used Git tab on half of second screen.

    • Diego Agulló says:

      Came here to say this. My main issues with the new “Local Changes” layout are:
      * It’s quite annoying to have the diff on a separate tab of sorts, instead of integrated on the tool window – if I wanted that, I’d press Ctrl+D to open a proper diff window
      * It doesn’t include the git log, and I frequently jump between the git log and local changes to check past commits
      * The default positioning is really weird. Having it open to the left of the window instead of the bottom (where I can keep it open while I code, in an unobstrusive way) really makes me less productive

      Plus:
      * The side panel with the branches on the Git tool window is redundant. Why would I want it, when I can filter by branch like I always did?

    • Sorin Jucovschi says:

      +1

  16. Thiago Henrique Hüpner says:

    Can you implement the Dataflow analysis assistance for decompiled code?

Leave a Reply to Roman Cancel reply

Your email address will not be published. Required fields are marked *