PhpStorm 2020.2 Early Access Program is Now Open
The Early Access Program (EAP) for PhpStorm 2020.2 starts today!
For the upcoming release, we are more focused on improving existing subsystems and stability than adding a lot of new functionality. Nevertheless, there are plenty of exciting features on the way.
The main highlights of the first EAP build are:
- Full support for GitHub Pull Requests
- Brand new Inspections Widget
- PHP control flow analysis reworked
As usual, PhpStorm EAP builds are free to use but expire within 30 days of the build date.
This EAP build is available for download from our website and in the JetBrains Toolbox App. You can also enable the option to have builds delivered automatically to your IDE under Preferences/Settings | Appearance & Behavior | System Settings | Updates.
Full support for GitHub Pull Requests
We introduced initial support for GitHub Pull Requests back in PhpStorm 2018.3. Since then, it has had several enhancements, mostly related to viewing pull requests. Some actions, however, still required you to switch to a browser.
In the upcoming PhpStorm 2020.2, it will be possible to browse, assign, manage, and merge pull requests; view the timeline and in-line comments; add comments and reviews; and accept changes.
The entire Pull Request workflow can now be done in PhpStorm, and there is no longer any need to switch to a browser.
Let’s take a look at how it works.
New layout for the pull requests view
Instead of a horizontal tool window, pull requests are now shown in a vertical one in the top left-hand corner of the screen. This way, more information can be seen at once.
First, the window displays a list of all the available pull requests. When you click on any of them, PhpStorm displays information about it, such as its message, branch names, author, assignee, changed files, commits, timeline, and comments.
From here, you can start the review process by checking the changed files and commenting on the changes.
The entire review workflow can now be completed inside the IDE. You can start reviews or request them, comment on changes, and submit reviews.
You can now view, create, edit, or remove both commit-level and line-level comments, which lets you do the code review right from the IDE.
Viewing the results of pre-commit checks in the timeline
During the pull request review process, PhpStorm will display the results of the checks in a dedicated panel at the bottom of the timeline. To resolve issues more quickly, you can use the links provided.
Merging pull requests without leaving the IDE
Previously, it was first necessary to create a local branch from a pull request, and only then was it possible to complete the merge.
Now, this workaround is no longer needed. Everything works right out of the box.
Brand new Inspections Widget
We’re pleased to introduce our brand new Inspections Widget, which is designed to make it easier to view the problems in the current file and navigate between them.
The Inspections Widget shows the warnings, errors, and other issues in the current file. You can then use the arrow icons to navigate through them.
It is still possible to use the F2 shortcut to jump to the next issue in a file. Now though, it is also possible to configure whether it should jump to all issues or only to the problems with the highest priority.
PHP control flow analysis reworked
In PhpStorm 2020.2, we’re starting to redesign the control-flow engine. While this is a huge rework that will take time, you can already see the first results in this EAP build.
The rework of the control-flow engine means that, in certain cases, PhpStorm will understand your code better than before and can help you to find potential problems.
You don’t need to do anything specific to see this feature in action, but you may notice warnings from new inspections here and there. These may require your attention, as they are possible sources of bugs or ambiguity in applications.
Here are a few examples of what PhpStorm 2020.2 will be capable of.
Find when a variable is always true/false
Let’s take Parser.php from doctrine/orm as an example.
In this code, the function is set to return some value in the event that the condition evaluates to
false. This means that if the execution passes the condition, then the variable is definitely
Use Code | Run Inspection by Name… and choose Variable is always true/false when reached to find all cases of code like this in the project.
New inspection: Array used only with write access
Let’s consider another example from doctrine/orm: the SchemaTool.php file.
This code includes an array called
$pkColumns in the
gatherColumns method that is created and updated, but eventually never read. The inspection allows you to remove this array, which will probably make the code cleaner.
New action: Type Info (⌃⇧P / Ctrl+Shift+P)
This new action is available under View | Type Info. It relies on the PhpStorm type inference engine and lets you see the type of any selected expression.
For example, what is the type of the expressions in the following snippet? It might be hard to tell just by looking at the code, while Type Info provides comprehensive insight.
When coding, you can check the type of expression on the fly by using the shortcut ⌃⇧P / Ctrl+Shift+P, which can noticeably increase productivity.
There are plenty of other places where control flow improvements could come in handy. If you find any quirks or have suggestions, please let us know.
This release has more to offer, and we will cover other notable changes in subsequent posts. So follow our updates on Twitter and Facebook if you don’t want to miss out on any of the new developments.
The full list of tickets resolved in this build is available in the release notes.
You can report any problems you find to our issue tracker, or by commenting on this post. Your feedback is much appreciated, and the most active EAPers will get special, limited-edition gifts from us. That’s right, we have our exclusive PhpStorm elephpant, which we will soon be ready to ship.
Your JetBrains PhpStorm team
The Drive to Develop
Subscribe to Blog updates
Thanks, we've got you!