Erik Lumme.dev

9 IntelliJ IDEA features that I think you should be aware of

Posted 28 May 2022 by Erik Lumme

Every IDE has features that to some are vital for everyday work, but that others are not aware of. Here I list some of my favorite IntelliJ features.

1. The search-actions popup

In order to use a feature, you must find the feature. Similar to the palette in Visual Studio Code, the actions popup lets you search for actions and settings.

Not sure how to comment out a line, view a list of your breakpoints, or change the line separator? Simply press Ctrl/Cmd + Shift + A, or go to Help > Find Action..., and type away. The popup will also show you the shortcut for that action, if set.

Searching for line-related actions in the actions popup.
Searching for line-related actions in the actions popup.

2. Scratch files

Sometimes you want to try out a piece of code without having to run your application. This can be done in a test case or in an external process, but another convenient solution is to use scratch files.

Scratch files allow you to write and run short snippets of code, not just in Java. When running them, you will have access to the same classpath as you do when running the application. This is convenient for testing out a dependency.

You can create and view scratch files by searching for scratch in the actions popup. The same scratch files will be available across all your projects.

Two scratch files, one in Java, and one in JavaScript.
Two scratch files, one in Java, and one in JavaScript.

You can search for something across all files using Find in Files (Ctrl/Cmd + Shift + F). Not only can you apply a file pattern or scope to the search, you can also further refine it by searching with regular expressions. Regular expressions are enabled through the .* icon on the right.

Searching for Google links in various forms.
Searching for Google links in various forms.

4. Pinning search results

If you want to go through all results of a search, and you also want to perform other searches without losing the original result, you can pin your search result.

To do this, first click on Open in Find Window if your result is not there already. Then right click the tab of your results, and click on Pin Tab. Congratulations, you’re now free to do new searches, find implementations, find references, and more, without losing your original search result.

Pinning the search for Google links, as not to lose it when performing other searches.
Pinning the search for Google links, as not to lose it when performing other searches.

5. The profiler

If you need to know where in the code the CPU spends most of its time, or what is using all of your memory, you will have to do some profiling. While there are plenty of tools out there for this purpose, such as VisualVM or JProfiler, nothing beats the convenience of having the profiler integrated into your development environment.

The profiler is available through View > Tool Windows > Profiler. There you can profile a running process using an async profiler or the Java Flight Recorder. You can also take thread and heap dumps.

The profiler is not available in the community edition of IntelliJ IDEA.

IntelliJ lists running processes that you can attach to.
IntelliJ lists running processes that you can attach to.
After profiling with the async profiler, you can view the results in multiple formats.
After profiling with the async profiler, you can view the results in multiple formats.

6. Conditional breakpoints

Plain breakpoints are all very well, but there are times when you only want a breakpoint to be triggered under certain conditions. For example, there might be some code that maps database entities to JSON, and the mapping is incorrect only for a certain class.

Instead of a standard breakpoint that would be hit for every item, you can right click a breakpoint and set a condition under which it will be triggered.

A conditional breakpoint that is only triggered if the input to the method is of type 'Invoice'.
A conditional breakpoint that is only triggered if the input to the method is of type 'Invoice'.

7. Logging breakpoints

Who hasn’t added a few System.out.println statements to the code for debugging purposes? They have a couple of drawbacks, though. First, you have to remember to remove all of them afterwards. Second, you must recompile the application for them to take effect.

A better approach is to use logging breakpoints. Simply right-click a breakpoint, click on More, and check Evaluate and log. You might also want to uncheck the Suspend checkbox, so that the breakpoint will not cause the application to stop.

A breakpoint that doens't halt the program, but logs the type of the input when hit.
A breakpoint that doens't halt the program, but logs the type of the input when hit.

8. Run to cursor

After hitting a breakpoint when debugging, it’s common to walk through the next steps of the code execution, to see what happens on each line. If there are many lines of code that you’re not interested in, or perhaps a long for-loop, walking through it all can waste a lot of time.

One option is to put a breakpoint on the next line that you’re interested in, and resume program execution. A more convenient way is to simply right click on that line, and choose Run to Cursor. This resumes program execution until that line. You can also choose Force Run to Cursor, to ignore any additional breakpoints along the way.

To skip blocks of code when debugging, right click on the next line of interest and click 'Run to Cursor'.
To skip blocks of code when debugging, right click on the next line of interest and click 'Run to Cursor'.

9. The Key Promoter X plugin to learn shortcuts

Using keyboard shortcuts for commonly used actions is vital to being productive in an IDE. Plugins such as Key Promoter X can be of assistance in this regard, by notifying you when you’ve clicked on something that there is a shortcut for. It will also tell you what the shortcut is, and how many times you’ve missed it.

'Key Promoter X' showing a notification that the shortcut for 'Save all' is 'Ctrl + S'.
'Key Promoter X' showing a notification that the shortcut for 'Save all' is 'Ctrl + S'.

What are your favorite IntelliJ features? Let me know on Twitter!