IntelliJ IDEA Plugins for SAP Commerce/Java Development

Over the past few weeks, I’ve found myself answering the same questions about my IntelliJ IDEA plugins repeatedly. Instead of explaining individually, I’ve put together this article as a comprehensive reference for anyone interested in it.

Jetbrains Plugins

My main IDE is IntelliJ IDEA, which I use primarily for SAP Commerce (Hybris) development, so the list below is mainly focused on that use case. However, I use the same set of plugins for occasional non-Hybris Java projects and for writing Python automation scripts and simple web apps in PyCharm.

Core Plugins

  • SAP Commerce Developers Toolset
    This plugin is must have for SAP Commerce development; without it, working on Hybris projects in IntelliJ IDEA would be impossible. I previously used the paid version of Hybris Integration, which does not perform as well as the latest version of the SAP Commerce Developers Toolset.

  • Better Highlights
    I developed this plugin to meet my specific development needs. Plugin highlights the public keyword, what allows to quickly distinguishing between public and private methods in utility classes, which are widespread in SAP Commerce projects (and usually are garbage classes with tons of methods). Additionally, I use plugin to highlight the abstract, record, and ! symbols in Java code. In SAP Commerce projects, it is common to reference various OOTB classes in comments to clarify complex logic. The plugin enables navigation directly from these comments to the corresponding classes avoiding need to manually find them via search to look into. Another useful aspect of the plugin is its ability to display the cognitive complexity of methods in real-time, guiding me on when to refactor or simplify code. At the end this is sort of toolbox plugin, which simplifies my everyday development work.

Essential Plugins

  • Custom Postfix Templates
    JetBrains IDEs offer OOTB postfix autocompletion, which allows you to write collectionVariable.iter, press enter, and have it replaced with a for loop. This plugin enhances postfix autocompletion by adding more templates for commonly used Java libraries, such as Apache Commons. For example, in Hybris development, we often check if a list is empty using CollectionUtils. This plugin allows you to write variableList.ife, press enter, and it expands to if (CollectionUtils.isEmpty(variableList)) {}.

  • Archive Browser
    This plugin allows me to view the contents of ZIP and JAR files directly in the IDE, eliminating the need to unpack them and switch between the file manager and the IDE. It supports nested archives, which is valuable when working with OOTB or third-party extensions that may contain nested JAR files (for example, a Solr server ZIP file with library JARs in a lib folder inside the ZIP). This greatly saves time and avoids unnecessary context switching.

  • String Manipulation
    This tool is useful for normalizing data. Typically, I create a scratch file, paste data into it, and use this plugin to convert everything to lowercase, remove duplicates, sort alphabetically, and more. This is particularly helpful when preparing data for business stakeholders or cleaning up impex files.

  • SonarLint
    This plugin integrates with SonarQube for static code analysis, which is commonly used in SAP Commerce projects. It helps to identify rule violations before raising pull requests. Unfortunately, it supports only a subset of rules, so even after raising a PR, the SonarQube check can still fail.

Supporting Plugins

  • Presentation Assistant + macOS Keymap
    The Presentation Assistant was previously a separate plugin, and now it is builtin. It displays keyboard shortcuts of invoked actions, making it easier for others to follow me during screen sharing. Since I frequently collaborate with team members, this feature allows me to avoid answering questions about how I triggered certain actions in the IDE without mouse click. It also includes macOS shortcuts, which benefit those who use macOS while I work in Linux.

  • Find Pull Request
    Using PRs is the primary method of development in SAP Commerce project. This plugin allows me to trace introduced changes to pull requests and open it in browser (plugin support GitHub/GitLab/Bitbucket).

  • GitToolBox
    I mainly use this plugin for auto-fetching changes, auto cleaning up outdated branches, and displaying the committer and commit message of the current line.

  • Conventional Commit
    I have recently started using conventional commit templates for my Git commit messages, which should help maintain a clear commit history in the long run.

Nice-to-Have Plugins

  • Icon Viewer 2
    This plugin replace icon of image files in project tree with image inside the file itself, making it easier to identify files. This is especially useful when working with images in backoffice customizations or legacy storefront projects.

  • VisualVM Launcher
    VisualVM is my main tool for performance analysis. This plugin allows me to open the VisualVM profiling tool directly from the IDE, saving a few seconds compared to opening it in another way. You should have VisualVM installed separately, as this plugin just launches it.

  • PDF Viewer
    I use this plugin to view PDF files directly in the IDE, mainly for my CV project.

  • Extra ToolWindow Colorful Icons
    This plugin enhances UI icons in tool windows, adding color for better visibility. While a minor improvement, it enhances my overall user experience in the IDE.

Currently Adopting

  • Focus on Active Task
    I am currently trying to adopt this plugin, which filters out irrelevant files in the project tree. Given the large size of SAP Commerce projects and the numerous custom and OOTB extensions, this should improve my workflow by displaying only recently opened files in project tree. It takes some time for plugin to filter out items in SAP Commerce project, so give it some time after clicking corresponding button in project tree.

OS and Desktop Environment

I primarily work on Debian Linux (Sid), using Awesome WM as my window manager along with a set of XFCE/GTK applications. If you want to replicate my desktop environment, you can find my bash scripts and dotfiles here.

Text Editors

Since 2011, I had been using Sublime Text for text editing, but in the last few years, I replaced it with Fleet and Obsidian. I use Fleet for editing files and as a temporary buffer to store information in various ‘on-the-fly’ files. Fleet behaves similarly to Sublime Text in terms of handling unsaved ‘on-the-fly’ files (unlike VSCode, which works differently). And I use Obsidian for note-taking and permanent information storing.

P.S.

I also maintain an GitHub page of awesome JetBrains plugins list, where you can find a lot of other interesting plugins, which you can use to improve your personal dev experience.

comments powered by Disqus