Skip to end of metadataGo to start of metadata
PHPBugWI-55753Failed to unload modified plugins: PHP (PHP plugin Auto-Reload support)
PHP Quality ToolsUsabilityWI-17740CodeSniffer gets temporary filename instead of real
Plugin: Deployment _ FTP.BugWI-54777SSH-Configuration not saved to the Development Settings
CoreBugIDEA-249530Out of Memory Alert dialog is shown when memory is not a problem
Core. IDE SettingsBugIDEA-2093842018.3.5 importing from 2.4 causes 'Antialiasing->subpixel' setting to not stick between runs
Core. IndexingBugIDEA-247316Pausing Indexing Applies to All Windows Rather than Current Project
BugIDEA-249792SharedIndexes: indexes should be recalculated on shared index plugin disabling.
Core. Navigation and SearchBugIDEA-247358Navigate to file: wrong item is focused in the Project View with 'Always Select Open File' enabled
Core. Plugin ManagementBugIDEA-240141Plugin 'IDETalk' failed to initialize and will be disabled when opening a project
EditorBugIDEA-250462Project file isn't opened from command line when another project is already opened and Light Edit frame is focused
Editor. Diff and MergeBugIDEA-249139Git Diff Viewer - No marks near the scroll
Tools. DockerFeatureIDEA-212147Docker. Support --init command line option
BugIDEA-248828Dockerfile Error: <path segment> expected, got '@'
BugIDEA-239070Clicking image links in docker compose files for Official Images opens wrong URL
BugIDEA-250305Refactoring of folder name replaces entire line when checking for references
User InterfaceUsabilityIDEA-230328Search everywhere popup opens partially offscreen
User Interface. Embedded Browser (JCEF)TaskIDEA-250780inform about missing native libs for JCEF on linux
User Interface. Project ViewUsabilityIDEA-249246'Enter' on a module source or content root opens Project Structure dialog
Version Control. GitFeatureIDEA-249119Remember selected options in Git Pull Dialog
BugIDEA-248332git pull --rebase executes only rebase
BugIDEA-248796Git Merge Dialog: considers all roots with the same name as a single one.
UsabilityIDEA-248378Git Rebase dialog: onto help popup covers old base when start typing in empty field
UsabilityIDEA-248375Git Rebase dialog: onto help button is not reachable by keyboard
UsabilityIDEA-249240The default branch in the merge dialog should be chosen more intelligently
DB IntrospectionBugDBE-10711MongoDB is not introspected when new collection is created
SQL CompletionFeatureDBE-10668Add an intention to flip 2 sides of a comparison
SQL HighlightingFeatureDBE-11383ClickHouse SQL does not know SYSTEM STOP TTL MERGES
BugDBE-11544Support Trailing commas for BigQuery
BugDBE-11385PostgreSQL Statement level trigger - Syntax Highlighting Issue
BugDBE-11380Unknown database function 'sysdate' - Snowflake JDBC
BugDBE-9899Add support to KILL QUERY syntax highlight for Clickhouse dialect
BugDBE-11493Add BOOLEAN type to BigQuery grammar
BugDBE-11433Snowflake Geospatial Function Support
BugDBE-11118DateTime64 column type cannot be recognized
BugDBE-11356Redshift dialect doesnt regognize key word GENERATED
BugDBE-11533RATIO_TO_REPORT() function not recognized in Snowflake dialect
BugDBE-11432DataGrip stopping valid syntax on Redshift
BugDBE-11545Support window statement in BigQuery
BugDBE-11375SQLite syntax 'VACUUM INTO 'file' is not recognized
JavaScript. FrameworksBugWEB-37193Schematics options aren't respected when creating a new component
BugWEB-47394All Angular schematics do not show up. Error while loading schematics info
PerformanceWEB-46800High CPU usage when breadcrumbs are enabled
JavaScript. RefactoringUsabilityWEB-47338TypeScript Inline Renaming for Generics never works.
Node.jsBugWEB-47366Support ESLint and TypeScript with Yarn PnP and Node.js 10.x
TypeScriptFeatureWEB-47397TypeScript 4.1: Syntax support for template literal types and mapped type 'as' clauses
PerformanceWEB-47089Awful performance of TypeScript with optics-ts

PhpStorm 2020.2 introduces a new version of the control flow engine, which is now more powerful than ever. We’ve already shown some improvements in the EAP#1 post. Let’s explore what it offers in more detail by looking at some scenarios from real-life projects. The PhpStorm install was more complicated, the file downloaded was PhpStorm- 2020.2.2.tar.gz I opened the download folder, right clicked and unpacked, then selected the unpacked folder, cut it and created a Software folder in my home directory. Install, configure and run JetBrains IDEs with Projector Server on Linux or in WSL - JetBrains/projector-installer. PHP 8 union types support, new control flow engine for PHP, Extract Class refactoring, full support for GitHub pull requests, brand-new Inspection Widget, su.

Early Access Program

The Early Access Program for PhpStorm 2020.2 is in full swing, and today we’ve got Build 4 of the 2020.2 EAP for you.

Read on to learn about the new control flow engine, the Add caret per selected line action, and smart handling of terminal commands.

If you prefer to watch rather than read, check out our EAP video series on the JetBrainsTV YouTube channel. Episode 1 is already available.

New control flow engine

Phpstorm

PhpStorm 2020.2 introduces a new version of the control flow engine, which is now more powerful than ever. We’ve already shown some improvements in the EAP#1 post. Let’s explore what it offers in more detail by looking at some scenarios from real-life projects.

Condition always true

Let’s start with the new Condition always true inspection:

In this code snippet, PhpStorm understands that $item must always have the type FOFTable, as otherwise the function returns false. As a result, is_object($item) is always true, and the whole ternary operation can be simplified.
To help you more easily understand what’s going on, the inspection message provides detailed information about the cause. There is also a quick-fix that lets you navigate to the expression that uniquely defines the current value.
Here is another example of this inspection in action:

PhpStorm knows that as part of the elseif chain, the case with $stubContent null has already been covered, so the last condition can be simplified.
There are several other new inspections based on the new engine, including Expression is always ‘null’, Result of ‘instanceof’ is always ‘true’, and Variable is always true/false when reached. Let’s look at them in more detail.

Result of ‘instanceof’ is always ‘true

Suppose we have the following non-trivial hierarchy:

Inside ConfigEntityBase, we have the following code:

Because ConfigEntityBase implements ThirdPartySettingsInterface, the expression is always true. PhpStorm highlights it as redundant and displays a warning that suggests unwrapping the if statement for clarity.

Variable is always true/false when reached

PhpStorm not only analyzes conditions but also tracks the values of variables. It can suggest increasing code readability by replacing the always true/false variables with the corresponding boolean values.

Hinshaw live update. In this example, the ternary operator makes sure that $empty is always true in the first branch, so we can safely replace the variable with just the true value.
The inspection is disabled on purpose for the case below. This is because, according to our investigations, such code is often used to quickly change the default value:

Expression is always ‘null’

In addition to true/false values, PhpStorm now also tracks the null value of the variable. Let’s take a look at the Expression is always ‘null’ inspection.

In this example, PhpStorm builds the control flow and sees that the assigned null value isn’t rewritten, neither by a new assignment nor by a pass-by-reference call. The IDE highlights the usage of $default and suggests simplifying the expression to make it more clear.

Add caret per selected line action

Phpstorm 2020.2

The new Add Caret Per Selected Line action creates carets at the end of each selected line, and deselects the lines. Invoke it using the shortcut Alt+Shift+G on Windows/Linux or ⌥⇧G on macOS.

Phpstorm 2020.2 Github

Smart handling of terminal commands

PhpStorm has many features that can help you do specific jobs faster. In the upcoming v2020.2, if you run certain commands from the built-in terminal, the IDE will now suggest using existing IDE features instead.
Let’s say you want to check commit logs. If you type gitlog in the built-in terminal, the IDE will highlight the command in a different color, indicating that it can be handled by the IDE itself. Press Ctrl+Enter, and the IDE will open the Git tool window on the Log tab so you can explore commit logs with less effort.

This is still a work in progress, so we’d love to hear what other PHP-related commands you would like PhpStorm to handle in a similar fashion.
If you don’t find this feature useful in your workflow, you can disable smart commands by unchecking Smart command handling in Preferences/Settings | Tools | Terminal.

The full list of changes, including bug-fixes and improvements, is available in the release notes.

  • Important! PhpStorm EAP builds are not fully tested and may be unstable.
  • You can install an EAP build side by side with a stable PhpStorm version to try out the latest features.
  • EAP builds are free to use but expire 30 days after the build date.

Phpstorm 2020.2 Github File

Please 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!

Phpstorm License Server Github

Your JetBrains PhpStorm team
The Drive to Develop