PhpStorm 2020.2 supports the OpenAPI Specifications plugin. This is a free plugin developed by JetBrains that provides completion, navigation, and validation in the OpenAPI spec files (openapi.yaml/openapi.json and swagger.yaml/swagger.json). The plugin also provides. C:Program FilesJetBrainsPhpStorm 2020.2.1binUninstall.exe is the full command line if you want to remove PhpStorm 2020.2.1. PhpStorm 2020.2.1's main file takes around 1.27 MB (1330048 bytes) and is called phpstorm64.exe. PhpStorm 2020.2.1 is comprised of the following executables which occupy 7.03 MB (7376203 bytes) on disk. 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. PHPstorm 2020.2 now released. PHP 8 Union Types. We started rolling out support for PHP 8 with union types. It comes with syntax support, type checks, validations.
Early Access ProgramLast week, we launched the Early Access Program for PhpStorm 2020.2. For the next two months, we are going to be releasing updates every week, and today we’ve got the second build of the 2020.2 EAP for you.
In this blog post, you can read about improvements for Composer, Quality Tools, and VCS.
Composer
PhpStorm 2020.1 introduced support for managing dependencies in the editor right inside the composer.json file. Based on your feedback, there are some improvements in the upcoming 2020.2.
Support for custom Satis/Packagist packages
If you have custom sources specified in the “repositories” section, you will get completion for custom packages.
There will be a gutter icon showing the current state of the caching of custom repositories.
Completion for multiple versions
When a package has multiple versions separated with a comma or pipes (||), PhpStorm will now handle it properly and provide completion with all available versions for this package.
Specify versions constraints with ~, ^, or >=
It’s quite common to use range constraints in composer.json. Earlier, completion was lost after typing ~, ^, or >=, but now it works as expected.
Link to homepage/sources
You can quickly jump to package websites right from the composer.json file.
Open settings of tools added as dependencies
PhpStorm provides many integrations with third-party tools. Now, if a supported tool is declared in composer.json, there will be a wrench icon in the gutter near it. You can click it to go straight to the corresponding section of the preferences.
Quality Tools
PhpStorm 2020.2 will come with several improvements for code quality tools.
Docker Compose Support
It was possible to use PHP_CodeSniffer, PHP CS Fixer, and PHP Mess Detector via Docker, but not Docker Compose. This has been resolved.
Exclude Patterns for PHP_CodeSniffer
If your custom ruleset.xml has an 'exclude-pattern' section, PhpStorm will now take it into account and not analyze files under the specified path.
Reformat quick-fix with remote interpreter
It will be possible to run PHP CS Fixer and PHPCBF reformatting with a remote interpreter.
VCS
Squashing local commits from the log
If you have a number of redundant commits, say some work-in-progress ones, you can now combine them into a single one to clean up the history before pushing.
In the Log tab of the Git tool window, select several commits and choose Squash Commits… from the context menu.
Better presentation of results when comparing branches
Sometimes you want to compare two branches to see which commits do not belong to one another.
With PhpStorm 2020.2, the corresponding actions will show the logs in the editor instead of the Git tool window. This will ensure that there is enough space to display all the information.
Choose the Compare with Current action from the Git Branches popup menu (VCS | Branches).
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.
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!
Your JetBrains PhpStorm team
The Drive to Develop
Please see Incompatible API Changes on how to verify compatibility.
Changes from API marked with org.jetbrains.annotations.ApiStatus.@Experimental/ ScheduledForRemoval are not listed here, as incompatible changes are to be expected.
2020.3
Java 11 is now required (blog post) when targeting 2020.3 and later only. Please make sure to always upgrade to the latest version of gradle-intellij-plugin. Follow releases on GitHub.
Changes in IntelliJ Platform 2020.3
com.intellij.openapi.application.NonBlockingReadAction.finishOnUiThreadmethod parameter type changed fromConsumer<T>toConsumer<? super T>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.openapi.diagnostic.ErrorReportSubmitter.submitmethod parameter type changed fromConsumer<SubmittedReportInfo>toConsumer<? super SubmittedReportInfo>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.execution.ui.ConsoleView.attachToProcessmethodProcessHandlerparameter marked@NotNull- This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
com.intellij.util.indexing.FileContentImpl(VirtualFile, byte[])constructor removed- Constructors of
FileContentImplwere replaced with factory methods, useFileContentImpl#createByContent(VirtualFile, byte[]). com.intellij.spellchecker.quickfixes.ChangeTo(String)constructor removed- Replaced with
ChangeTo(String, PsiElement, TextRange). com.intellij.spellchecker.tokenizer.SpellcheckingStrategy.getDefaultRegularFixes(boolean, String, PsiElement)method removed- Replaced with
SpellcheckingStrategy.getDefaultRegularFixes(boolean, String, PsiElement, TextRange). com.intellij.psi.stubs.IStubElementType.createStubmethod parameter type changed fromStubElementtoStubElement<?>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.execution.application.ApplicationConfiguration.isSwingInspectorEnabled()method removed- The Swing Inspector functionality has been removed from the product.
com.intellij.execution.application.ApplicationConfiguration.setSwingInspectorEnabled(boolean)method removed- The Swing Inspector functionality has been removed from the product.
show.swing.inspectorproperty removed from resource bundlemessages.ExecutionBundle- The Swing Inspector functionality has been removed from the product.
show.swing.inspector.disabledproperty removed from resource bundlemessages.ExecutionBundle- The Swing Inspector functionality has been removed from the product.
Changes in Java Plugin 2020.3
- The PSI structure of multi-dimensional arrays in Java source files changed (see
com.intellij.psi.PsiTypeElement) - Now the children are flattened: brackets for all the dimensions are direct children of the
PsiTypeElementthat represent the multi-dimensional array. This change doesn't break source or binary compatibility but may produce behavioral changes in the code that traverses the tree of Java source files. - The
com.intellij.psi.PsiAnnotation.getOwnermethod now returnsPsiTypeinstead ofPsiTypeElementfor type annotations in Java source files - This change supports identifying whether a type annotation is attached to an inner class or a particular dimension of a multi-dimensional array. This change doesn't break source or binary compatibility but may produce behavioral changes for callers.
Changes in PhpStorm and PHP Plugin 2020.3
- Added PHP 8 support
- See Breaking Changes in PhpStorm 2020.3.
Changes in Python Plugin 2020.3
- All parameters in
com.jetbrains.python.psi.PyElementVisitormarked@NotNull - This may break source-compatibility with inheritors written in Kotlin.
com.jetbrains.python.parsing.ParsingContext(SyntaxTreeBuilder, LanguageLevel, StatementParsing.FUTURE)method parameterStatementParsing.FUTUREremoved- It is no longer used in parsing.
com.jetbrains.python.parsing.StatementParsing(ParsingContext, StatementParsing.FUTURE)method parameterStatementParsing.FUTUREremoved- It is no longer used in parsing.
com.jetbrains.python.parsing.StatementParsing.FUTUREclass removed- Use
com.jetbrains.python.psi.FutureFeatureinstead. com.jetbrains.python.sdk.PythonSdkUpdater.updateOrShowError(Sdk, SdkModificator, Project, Component)method parameterSdkModificatorremoved- It was not processed carefully, it should be enough to pass editable sdk instead.
python.sdk.interpreter.field.is.emptyproperty removed from resource bundlemessages.PyBundle- Use
python.sdk.field.is.emptyfrommessages.PySdkBundleinstead. base.interpreterproperty removed from resource bundlemessages.PyBundle- Use
python.venv.base.labelfrommessages.PySdkBundleinstead. interpreterproperty removed from resource bundlemessages.PyBundle- Use
python.interpreter.labelfrommessages.PySdkBundleinstead. com.jetbrains.python.psi.LanguageLevel.hasWithStatement()method removed- It is
truefor all supported python versions.
Changes In CLion/AppCode 2020.3
- Required changes in project setup
- When targeting 2020.3, please see this migration guide.
2020.2
Changes in IntelliJ Platform 2020.2
- Support for JavaFX deprecated
- Plugins should migrate to JCEF. Alternatively, add an explicit dependency on JavaFX Runtime for Plugins.
com.intellij.psi.util.PsiTreeUtil.processElements(element, processor)method parameter type changed fromPsiElementProcessortoPsiElementProcessor<PsiElement>- This may break source-compatibility with clients that pass a more specific processor. Passing a more specific processor was illegal before because the
processElementspasses every descendantPsiElementto the processor regardless of its type. However, this worked with some poorly written clients, e.g.PsiElementProcessor.CollectFilteredElementsandPsiElementProcessor.FindFilteredElement(both deprecated now). To simplify the migration, a new three-argprocessElements(element, elementClass, processor)is introduced that filters by element class. In most cases, the simplest migration would be to add a wanted element class as a second argument. However, it's advised to useSyntaxTraverserAPI instead, which is more rich and flexible. com.maddyhome.idea.copyright.util.FileTypeUtil.getFileTypeByName(String)method removed- This was an internal utility method not intended for use in plugins. Use
FileTypeManager.getInstance().findFileTypeByName()instead. javassistpackage removed- Javassist library was removed, bundle it with your plugin instead.
com.intellij.compiler.backwardRefs.LanguageCompilerRefAdapter.INSTANCESfield removed- This field leaked instances of plugin's extensions on plugin unloading. Use
com.intellij.compiler.backwardRefs.LanguageCompilerRefAdapter#EP_NAME.getExtensionList()directly instead. groovy.util.AntBuilderclass removed- Add
org.codehaus.groovy:groovy-antdependency. groovy.util.GroovyTestCaseclass removed- Add
org.codehaus.groovy:groovy-testdependency. groovy.util.GroovyTestSuiteclass removed- Add
org.codehaus.groovy:groovy-testdependency. groovy.json.internalpackage removed- Use classes from
org.apache.groovy.json.internalpackage. com.intellij.openapi.externalSystem.service.execution.TaskCompletionProvider(Project, ProjectSystemId, TextAccessor, Options)constructor parameter type changed fromgroovyjarjarcommonscli.Optionstoorg.apache.commons.cli.Options- Update inheritors accordingly.
org.jetbrains.plugins.gradle.service.execution.cmd.GradleCommandLineOptionsProvider.getSupportedOptions()method return type changed fromgroovyjarjarcommonscli.Optionstoorg.apache.commons.cli.Options- Update call sites accordingly.
com.intellij.openapi.editor.markup.MarkupModel.addLineHighlighter(TextAttributesKey, int, int)abstract method added- Use it instead of
MarkupModel.addLineHighlighter(int, int, TextAttributes) com.intellij.openapi.editor.markup.MarkupModel.addRangeHighlighter(TextAttributesKey, int, int, int, HighlighterTargetArea)abstract method added- Use it instead of
MarkupModel.addRangeHighlighter(int, int, int, TextAttributes, HighlighterTargetArea) com.intellij.codeInsight.daemon.LineMarkerProvider.getLineMarkerInfomethod return type changed fromLineMarkerInfotoLineMarkerInfo<?>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.daemon.LineMarkerProvider.collectSlowLineMarkersmethod parameter type changed fromList<PsiElement>toList<? extends PsiElement>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.daemon.LineMarkerProvider.collectSlowLineMarkersmethod parameter type changed fromList<PsiElement>toCollection<? super LineMarkerInfo<?>>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.util.indexing.FileBasedIndex.FileTypeSpecificInputFilter.registerFileTypesUsedForIndexingmethod parameter type changed fromConsumer<FileType>toConsumer<? super FileType>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.psi.impl.include.FileIncludeProvider.registerFileTypesUsedForIndexingmethod parameter type changed fromConsumer<FileType>toConsumer<? super FileType>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.highlighting.HighlightUsagesHandlerBase.selectTargetsmethod parameter type changed fromList<T>toList<? extends T>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.highlighting.HighlightUsagesHandlerBase.selectTargetsmethod parameter type changed fromConsumer<List<? extends T>>toConsumer<? super List<? extends T>>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.codeInsight.highlighting.HighlightUsagesHandlerBase.computeUsagesmethod parameter type changed fromList<T>toList<? extends T>- This may break source-compatibility with inheritors written in Kotlin.
com.intellij.pom.java.LanguageLevel.JDK_13_PREVIEWfield removed- Please remove the plugin code supporting Java 13 language level features. IntelliJ IDEA supports preview features of the latest Java release and one upcoming release (if available).
VCS
com.intellij.diff.util.DiffUserDataKeysEx.REVISION_INFOfield removed- Use
com.intellij.diff.DiffVcsDataKeys.REVISION_INFOinstead. com.intellij.codeInsight.actions.FormatChangedTextUtil.getChangedElements(Project, Change[], Function)method removed- Use
com.intellij.codeInsight.actions.VcsFacadeImpl.getVcsInstance().getChangedElements(...)instead.
Changes in GitHub Plugin 2020.2
org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue(ProgressManager)constructor removed- Required for more tight control of task scheduling. Use
org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.Companion#create(ProgressManager, (ProgressIndicator) -> T)instead of subclassing org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.compute(ProgressIndicator)method return type changed fromTtoCompletableFuture<T>- Required for more tight control of task scheduling. Use
org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.Companion#create(ProgressManager, (ProgressIndicator) -> T)instead of subclassing org.jetbrains.plugins.github.pullrequest.ui.GHCompletableFutureLoadingModel()constructor removed- Model was made disposable and it is now required to pass parent disposable in constructor
org.jetbrains.plugins.github.util.GithubGitHelper.getPossibleRemoteUrlCoordinates()method removed- Use
org.jetbrains.plugins.github.util.GHProjectRepositoriesManager.getKnownRepositories()instead
Changes in Groovy Plugin 2020.2
org.jetbrains.plugins.groovy.formatter.AlignmentProvider.addPairmethod parameter type changed fromBooleantoboolean- Please adjust/recompile the code.
Changes in Java EE Plugins 2020.2
com.intellij.javaeeJava EE: EJB, JPA, Servlets has been split to: com.inteellij.javaeeJava EE Platform- main plugin other JavaEE/Jakarta plugins depend oncom.intellij.javaee.app.servers.integrationJava EE: Application Servers Integrationcom.intellij.javaee.ejbJava EE: Enterprise Java Beans (EJB)com.intellij.javaee.jpaJava EE: JPAcom.intellij.javaee.webJava EE: Web/Servlets
Changes in JavaScript Plugin 2020.2
com.intellij.lang.javascript.linter.jslintpackage removed- JSLint functionality has been unbundled and moved to a separate plugin. Issue
Changes in PhpStorm and PHP Plugin 2020.2
- Added Union Types Support
- See Breaking Changes in PhpStorm 2020.2.
Changes in Kotlin Plugin 1.4
org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings.PACKAGES_TO_USE_STAR_IMPORTSfield type changed fromPackageEntryTabletoKotlinPackageEntryTable- This change was required to implement import layout order for Kotlin.
KotlinPackageEntryTablecan be used in the same manner asPackageEntryTable.
Changes in Python Plugin 2020.2
com.jetbrains.python.PythonDialectsTokenSetProvider.INSTANCEfield removedPythonDialectsTokenSetProviderbecame an application service, usePythonDialectsTokenSetProvider.getInstance()instead.com.jetbrains.python.psi.PyUtil.getLanguageLevelForVirtualFile(Project, VirtualFile)method removed- Use
PythonLanguageLevelPusher.getLanguageLevelForVirtualFile(Project, VirtualFile)instead.
2020.1
Changes in IntelliJ Platform 2020.1
com.intellij.compiler.ant package removedgenerate-ant plugin.
org.jetbrains.jps.incremental.ModuleLevelBuilder.getCompilableFileExtensions marked abstract
ModuleLevelBuilder 's implementation.com.intellij.codeInsight.TargetElementUtilBase class removedcom.intellij.codeInsight.TargetElementUtil instead.com.intellij.psi.stubs.PrebuiltStubsProviderBase class now extends com.intellij.index.PrebuiltIndexProvider and inherits its abstract method getIndexRoot()com.intellij.psi.stubs.PlatformPrebuiltStubsProviderBase instead.com.intellij.psi.PsiElementVisitor.visitElement method PsiElement parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitFile method PsiFile parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitBinaryFile method PsiBinaryFile parameter marked @NotNull
com.intellij.psi.PsiElementVisitor.visitPlainTextFile method PsiPlainTextFile parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitErrorElement method PsiErrorElement parameter marked @NotNullPhpstorm 2020.2 Crack
com.intellij.psi.PsiElementVisitor.visitPlainText method PsiPlainText parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitDirectory method PsiDirectory parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitComment method PsiComment parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitWhiteSpace method PsiWhiteSpace parameter marked @NotNullcom.intellij.psi.PsiElementVisitor.visitOuterLanguageElement method OuterLanguageElement parameter marked @NotNullcom.intellij.codeInspection.unused.ImplicitPropertyUsageProvider.isUsed method Property parameter marked @NotNullcom.intellij.lang.ReadOnlyASTNode class removedcom.intellij.testFramework.ReadOnlyLightVirtualFile -based PSI instead.TYPE_USE nullability annotations@Nullable or @NotNull.com.intellij.navigation.ChooseByNameContributorEx.processNames method parameter type changed from Processor<String> to Processor<? extends String>com.intellij.navigation.ChooseByNameContributorEx.processElementsWithName method parameter type changed from Processor<NavigationItem> to Processor<? extends NavigationItem>org.intellij.images.*) extracted to pluginAdd
<depends>com.intellij.platform.images</depends>inplugin.xmlAdd to
build.gradle:If your plugin depends on other plugins using
com.intellij.platform.images(e.g., CSS), please make sure to usegradle-intellij-plugin>=0.4.19
Phpstorm 2020.2.1
Changes in Python Plugin 2020.1
com.jetbrains.python.psi.PyCallExpression.PyMarkedCalleeclass removed- Use
com.jetbrains.python.psi.types.PyCallableTypeinstead. com.jetbrains.python.psi.PyCallExpression.multiResolveCalleemethod return type changed fromList<PyMarkedCallee>toList<PyCallableType>- Use
com.jetbrains.python.psi.types.PyCallableTypeinstead ofcom.jetbrains.python.psi.PyCallExpression.PyMarkedCallee.
Phpstorm 2020.2 Github
