Enhancing development productivity with PhpStorm Magento plugin

Working on the same technology, on the same project, on the same code – year over year – will inevitably make a developer strong, knowledgeable and something of a subject matter expert.  However, being hyper-focused for such long stretches of time introduces a variety of risks to the developer and the project assignment, namely a potential loss of interest or worse – burnout.

To offset this personal risk at the same time increasing the likely personal productivity and results, I strongly believe and recommend that every developer have an Open Source side project (or two). Why take on additional work, you ask? In addition to the obvious benefits of delivering more back to your company and the community, a side project will inevitably boost a developer’s skills, up to his or her experiences, and expand their respective community network. On a personal level, becoming a key part of additional projects expands a person’s sense of belonging. After all, we all want to be a contributing teammate surrounded by like-minded passionate developers.

Having said that, I would like to share my personal insights  – why I wanted to participate in a specific Magento Open Source project –  the Magento PhpStorm plugin. I recognize every developer has their own motivations. The following are mine:

  • My everyday work: as a developer, I need such a tool and I need it now. This might take a lot of time to wait for somebody else to write it for me.
  • This project provides the possibility to work with the technologies unfamiliar to me before, such as Java, Gradle, and IntelliJ SDK.
  • Love of the (developer) game.  Said simply and quite candidly, I love Magento, I love PhpStorm. I really think these should work together…like a charm.
  • This project is freaking interesting and has proven to be a great pleasure to work on together with brilliant minds from around the globe.

What is Magento PhpStorm for a Magento developer

Magento PhpStorm is a plugin compatible with IntelliJ IDEA Ultimate and PhpStorm IDE – most common working environments for Magento developers. This plugin is written to enhance the Magento development experience. In layman’s terms, a developer’s standard routine consists of repetitive operations that could be automated with IDE… this is exactly the purpose this plugin serves.

The tool is being written by the Magento community; each of the authors is an experienced Magento developer. Working on the plugin provides a unique possibility to take this experience and turn it into useful features.

What has been done regarding new features

For the first release, we have added a bunch of new features. The plugin had no inspections in the previous version, we added 4 of them. Each inspection warns a developer about possible issues in code. Here is the example of the plugin declaration inspection:

Magento 2 phpstorm plugin inspection gif

Along with inspections, there have been added several actions for making common Magento customizations. One of them is creating a plugin method and di.xml declaration from the context menu after right-clicking on a class public method:

Magento 2 PHPStorm plugin create a plugin

Moreover, we have added new reference navigation and completion for MFTF and RequireJs, line markers for GraphQl, and many more.

The full list of the new features is described in the project wiki.

What has been done regarding project infrastructure?

Project infrastructure has been enriched with the following:

  • partial test coverage for new and old features
  • configuration for Gradle task runner
  • CI for running tests on each PR using GitHub workflow
  • templates for the pull request, bug report and feature request
  • description of features on the wiki page
  • mechanism of releasing alpha and stable versions using GitHub workflow
  • project milestones
  • a pretty big backlog
  • project boards for convenient work with the issues

What’s next?

We are planning to:

  • add Magento version related features 
  • setup code style check
  • add features related to Magento frontend (custom themes support, etc.)
  • extend test coverage
  • make refactoring of coupled parts of code

…and this list will be extended according to the needs of the community.

Special Thanks

Thanks for all community members who have contributed to the release 1.0.0:
Vasilii Burlacu, Roman Glushko, Eduard Chitoraga, Max Mezhensky, Yaroslav Rogoza, Andrew Chornij, Shankar Konar, Alexander Shkurko, Bohdan Harniuk
Last but certainly not least, this project would not be nearly as successful without Magento’s mentor support, specifically Lena Orobei, Valerii Naida, and IntelliJ guru Jakub Chrzanowski.