New in version 2023.1
Version 2023.1 of Qodana contains several updates, such as:
Easy plugin installation using
qodana.yaml
Enhanced profile configuration using YAML
New inspections available in all linters
Easy plugin installation
Starting from 2023.1, you can install plugins by pasting their IDs in the qodana.yaml
file. For example, this will let you install and run the Grazie Professional plugin from JetBrains Marketplace:
For more details, see the Manage plugins section.
Enhanced profile configuration
Starting from version 2023.1 of Qodana, you can use YAML format for configuring inspection profiles. For example, this configuration uses the qodana.starter
profile, but enables only the PHP/Error handling
category from the PHP
category of the Qodana for PHP linter:
The detailed description of profile configuration is available in the Custom YAML profiles section.
New inspections
Below is the list of inspections supported by all linters as of version 2023.1.
Id | Description | Severity | Default mode |
---|---|---|---|
| Duplicate keys in object literals |
| Disabled |
| Whitespace between the function name and the open parenthesis |
| Disabled |
| Custom RegExp inspection |
| Disabled |
| ShellCheck |
| Disabled |
| Invalid custom media |
| Disabled |
| Invalid custom selector |
| Disabled |
| Invalid media query range |
| Disabled |
| Invalid nested rule |
| Disabled |
| Unresolved CSS module value |
| Disabled |
The subsequent sections describe the inspections implemented in particular linters.
Qodana for JVM
The Qodana for JVM linter has obtained new inspections as per the table below.
Id | Description | Severity | Default mode |
---|---|---|---|
| Duplicate keys in object literals |
| Disabled |
| String template as argument to logging call |
| Enabled |
| String template as argument to logging call |
| Enabled |
| Throwable supplier never returns a value |
| Enabled |
| Enhanced |
| Disabled |
| Call math rounding with |
| Enabled |
|
|
| Enabled |
|
|
| Enabled |
| Ambiguous non-local |
| Enabled |
| External interface contains non-nullable boolean property |
| Disabled |
| External interface contains val property |
| Enabled |
| Non-external classifier extending State or Props |
| Enabled |
| Redundant |
| Disabled |
| Redundant value argument |
| Disabled |
| Kotlin object registered as extension |
| Disabled |
| Migrate to |
| Disabled |
| Extension class is a Kotlin object |
| Disabled |
| Calling |
| Enabled |
| Zip contains parameter with the |
| Enabled |
|
|
| Enabled |
Several inspections were removed from the Qodana for JVM linter.
Id | Description | Severity | Default mode |
---|---|---|---|
| Check configuration of project dependencies |
| Disabled |
| Syntax error |
| Disabled |
| JUnit unconstructable test case |
| Disabled |
| JUnit 4 test method in class extending JUnit 3 TestCase |
| Disabled |
Qodana for Go
Several inspections were added in the Qodana for Go linter.
Id | Description | Severity | Default mode |
---|---|---|---|
| Leading whitespace in directive comment |
| Enabled |
| Check dependency licenses |
| Disabled |
| Check module licenses |
| Disabled |
| Check third party software list |
| Disabled |
Qodana for JS
The Qodana for JS linter has obtained new inspections as per this table.
Id | Description | Severity | Default mode |
---|---|---|---|
| Issues with ngSrc usage in img tags |
| Disabled |
| Unresolved JavaScript reference |
| Disabled |
| Invalid DOM element nesting |
| Enabled |
| Invalid DOM element nesting |
| Enabled |
Several inspections were removed from the Qodana for JS linter.
Id | Description | Severity | Default mode |
---|---|---|---|
| TypeScriptUnresolvedVariable |
| Enabled |
| Unresolved JavaScript variable |
| Enabled |
| Unresolved imported name |
| Disabled |
| Unresolved TypeScript function |
| Enabled |
| Unresolved TypeScript variable |
| Enabled |
Qodana for PHP
The Qodana for PHP linter has obtained new inspections as per the table below.
Id | Description | Severity | Default mode |
---|---|---|---|
|
|
| Disabled |
| Overriding method/extending class marked as |
| Enabled |
| Assertion can be replaced with |
| Disabled |
| Deprecated usage of data provider since PHPUnit 10 |
| Disabled |
| Array modification of return by value function won't have any effect |
| Enabled |
| Vulnerabilities scanner |
| Disabled |
| Vulnerable paths scanner |
| Disabled |
Qodana for .NET
Apart from inspection updates, this section also describes a couple of updates in the linter, such as:
Inspection updates
Several new inspections were introduced in the Qodana for .NET linter.
Id | Description | Severity | Default mode |
---|---|---|---|
| Dictionary lookup can be simplified with |
| Enabled |
| Dictionary lookup can be simplified with |
| Enabled |
| Extract common property pattern |
| Enabled |
| Replace |
| Enabled |
| The pattern is redundant, it does not produce any runtime checks |
| Enabled |
| Empty region |
| Enabled |
| Redundant dictionary |
| Enabled |
| Redundant set |
| Enabled |
| Non-accessed local variable only used to discard the |
| Enabled |
| Arrange null checking pattern |
| Enabled |
A couple of inspections were removed from the Qodana for .NET linter as of version 2023.1 of Qodana.
Id | Description | Severity | Default mode |
---|---|---|---|
| Rider project compilation errors |
| Enabled |
| Rider global inspection |
| Enabled |
Notation change
In versions prior to 2023.1, Qodana supported the dot-net
option that let you specify the solution or project name for opening and configuring Qodana. Starting from 2023.1, it was renamed to dotnet
, the old variant becomes deprecated and will be removed after version 2023.2 of Qodana.
Default profile repo settings
In the versions of Qodana prior to 2023.1, inspection severity settings of the default profile were based on the default values obtained from ReSharper. However, this approach led to the duplication of settings in case a project was already using the solution and project configuration layers of ReShaper and Rider, and the editorconfig
files were stored in the repository. Thus, every change in those layers needed to be duplicated with the corresponding change of the YAML profile.
Starting from 2023.1, the default profile also employs the settings of ReSharper and the editorconfig
file if they are provided in the repository.