New in version 2024.1
Version 2024.1 of Qodana contains several updates:
The FlexInspect feature lets you develop your own inspections from scratch using IntelliJ IDEA. Currently, the feature supports Java, Kotlin, JS, TypeScript, PHP, Go, Python, Ruby, SQL, XML, CSS, YAML, JSON, SHELL, DOCKERFILE, and MARKDOWN.
Qodana configuration settings can now be contained in any YAML-formatted file. This is available across all Qodana linters.
Incremental analysis of changes is now supported by all linters except Qodana Community for .NET.
The license audit feature is now enabled by default in the Qodana for JVM, Qodana for PHP, Qodana for JS, Qodana for Python, Qodana for Go, and Qodana for .NET linters.
Besides that, this version of Qodana provides new inspections listed below, along with the inspections that were removed or disabled. To learn how to enable the disabled inspections, you can visit the Include an inspection into the analysis scope section.
Qodana for JVM
Several inspections have been implemented in the Qodana for JVM linter:
Id | Description | Severity |
---|---|---|
Java/Control flow issues/'while' can be replaced with 'do while' |
| |
Java/Logging/Non-constant string concatenation as argument to logging call |
| |
Java/Probable bugs/Unreachable code |
| |
Java/Verbose or redundant code constructs/Mapping call before count() |
| |
Java/Visibility/Empty 'module-info.java' file |
| |
JVM languages/Logging/Non-distinguishable logging calls |
| |
Spring/Spring Security/@PreFilter/@PreAuthorize/@PostFilter self-invocation method calls |
| |
TOML/Unresolved reference |
| |
Security/Link with unencrypted protocol |
|
Here is the list of inspections that were disabled or removed from the Qodana for JVM linter:
Id | Description | Severity | Status |
---|---|---|---|
JUnit/JUnit 5 obsolete assertions |
| Disabled | |
JUnit/JUnit API usage from multiple versions in a single TestCase |
| Disabled | |
JUnit/JUnit malformed declaration |
| Disabled | |
JUnit/Old style JUnit test method in JUnit 4 class |
| Disabled | |
| Spring/Spring Security/@PreFilter self-invocation method calls |
| Removed |
Qodana Community for Android
Here is the list of inspections that have been implemented in the Qodana Community for Android linter:
Id | Description | Severity |
---|---|---|
Java/Control flow issues/'while' can be replaced with 'do while' |
| |
Java/Logging/Non-constant string concatenation as argument to logging call |
| |
Java/Probable bugs/Unreachable code |
| |
Java/Verbose or redundant code constructs/Mapping call before count() |
| |
Java/Visibility/Empty 'module-info.java' file |
| |
JVM languages/Logging/Non-distinguishable logging calls |
|
Here is the list of inspections that were disabled in the Qodana Community for Android linter:
Id | Description | Severity |
---|---|---|
| Android/Android Resources Validation |
|
| Android/Android XML element is not allowed |
|
| Android/Android XML root tag validation |
|
| Android/Navigation file |
|
| Android/Non-constant resource ID in a switch statement |
|
| Android/Room/'?' used as parameter in a Room query |
|
| Android/Room/Boolean literal used in a Room query |
|
| Android/Room/Unresolved reference in Room SQL |
|
| Android/Shrinker/Flags ignored by R8 |
|
| Android/Shrinker/Invalid flag in shrinker config |
|
| Android/Shrinker/Invalid separator between class and inner class |
|
| Android/Shrinker/Invalid using of array type |
|
| Android/Shrinker/Unresolved reference in Shrinker Config file |
|
| Android/Unknown Android XML attribute |
|
| Android/Unresolvable tag |
|
| Android/onClick handler is missing in the related activity |
|
JUnit/JUnit 5 obsolete assertions |
| |
JUnit/JUnit API usage from multiple versions in a single TestCase |
| |
JUnit/JUnit malformed declaration |
| |
JUnit/Old style JUnit test method in JUnit 4 class |
|
Qodana Community for JVM
Several inspections have been implemented in the Qodana Community for JVM linter:
Id | Description | Severity |
---|---|---|
Java/Control flow issues/'while' can be replaced with 'do while' |
| |
Java/Logging/Non-constant string concatenation as argument to logging call |
| |
Java/Lombok/Using static import for lombok generated methods |
| |
Java/Probable bugs/Unreachable code |
| |
Java/Verbose or redundant code constructs/Mapping call before count() |
| |
Java/Visibility/Empty 'module-info.java' file |
| |
JVM languages/Logging/Non-distinguishable logging calls |
|
Here is the list of inspections that were disabled in the Qodana Community for JVM linter:
Id | Description | Severity |
---|---|---|
JUnit/JUnit 5 obsolete assertions |
| |
JUnit/JUnit API usage from multiple versions in a single TestCase |
| |
JUnit/JUnit malformed declaration |
| |
JUnit/Old style JUnit test method in JUnit 4 class |
|
Qodana for PHP
Here is the list of inspections that were implemented in the Qodana for PHP linter:
Id | Description | Severity |
---|---|---|
PHP/PHPUnit/Method is deprecated in PHPUnit 11 |
| |
PHP/PHPUnit/PHPUnit annotation is deprecated in PHPUnit 11 and can be replaced with attribute |
| |
PHP/Symfony/Missed locally stored library for HTTP link |
| |
PHP/Symfony/Module is not installed in importmap |
| |
PHP/Undefined symbols/Cannot infer DQL model class to enable completion |
| |
Security/Link with unencrypted protocol |
|
Qodana for JS
Here is the inspection that was implemented in the Qodana for JS linter:
Id | Description | Severity |
---|---|---|
Security/Link with unencrypted protocol |
|
Here is the inspection that was removed from the Qodana for JS linter:
Id | Description | Severity |
---|---|---|
JavaScript and TypeScript/TypeScript/Type mismatch in 'any' type |
|
Qodana for Python
Here is the list of inspections that were implemented in the Qodana for Python linter:
Id | Description | Severity |
---|---|---|
TOML/Unresolved reference |
| |
Security/Link with unencrypted protocol |
| |
Python/Poetry package versions |
|
Qodana for Go
Here is the inspection that was implemented in the Qodana for Go linter:
Id | Description | Severity |
---|---|---|
Security/Link with unencrypted protocol |
|
Qodana for .NET
Here is the list of inspections that were implemented in the Qodana for .NET linter:
Id | Description | Severity |
---|---|---|
| C#/Compiler Warnings/Obsolete member overrides non-obsolete member |
|
| C#/Compiler Warnings/Reference kind modifier of parameter doesn't match the corresponding parameter in hidden member. |
|
| C#/Compiler Warnings/Reference kind modifier of parameter doesn't match the corresponding parameter in target. |
|
| C#/Compiler Warnings/Type is for evaluation purposes only and is subject to change or removal in future updates. |
|
| C#/Compiler Warnings/Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. |
|
| C#/NUnit/NUnit. Missing CancelAfter attribute on the test method declaration. |
|
| C#/Potential Code Quality Issues/Meaningless \[HandlesResourceDisposal\] annotation for an output parameter |
|
| C#/Potential Code Quality Issues/Possible 'System.InvalidOperationException: Collection was modified' |
|
| C#/Unity/Group path is not defined |
|
| C#/Unity/Implicit check for Unity object lifetime |
|
| C#/Unity/Incorrect Odin's group attribute type |
|
| C#/Unity/Member is presented in multiple groups |
|
| C++/Redundancies in Code/Redundant zero initializer in aggregate initialization |
|
| Razor/Potential Code Quality Issues/Unknown Razor assembly |
|
| XAML/Code Notification/XAML dynamic resource of invalid type |
|
HTTP Client/'$placeholder' in HTTP Request |
| |
HTTP Client/Auth configuration validation |
| |
HTTP Client/Inappropriate HTTP Protocol usage |
| |
HTTP Client/Incorrect HTTP header |
| |
HTTP Client/Missing request separator in HTML/XML body |
| |
HTTP Client/Missing request separator in JSON body |
| |
HTTP Client/Missing request separator in YAML body |
| |
HTTP Client/Redundant 'Content-Length' |
| |
HTTP Client/Unresolved Auth identifier |
| |
HTTP Client/Unresolved environment variable |
| |
HTTP Client/Whitespace in URL in request |
| |
JVM languages/Logging/Non-distinguishable logging calls |
| |
Proofreading/Grammar |
| |
Proofreading/Natural language detection |
| |
XML/Unresolved references |
| |
Security/Link with unencrypted protocol |
|
Here is the list of inspections that were disabled or removed from the Qodana for .NET linter:
Id | Description | Severity | Status |
---|---|---|---|
| C#/NUnit/NUnit. Cannot resolve symbol in TestCaseSource or ValueSource attribute. |
| Removed |
| C#/Spelling Issues/Typo in comment |
| Removed |
| C#/Spelling Issues/Typo in identifier |
| Removed |
| C#/Spelling Issues/Typo in string literal |
| Removed |
| C#/Unity/Possible unintended bypass of lifetime check of underlying Unity engine object (null coalescing on a type deriving from 'UnityEngine.Object' bypasses the lifetime check on the underlying Unity engine object) |
| Disabled |
| C#/Unity/Possible unintended bypass of lifetime check of underlying Unity engine object (null coalescing on a type deriving from 'UnityEngine.Object' bypasses the lifetime check on the underlying Unity engine object) |
| Disabled |
| C#/Unity/Repeated access of property on built in component is inefficient |
| Disabled |
| C++/Clang Diagnostics/microsoft-mutable-reference clang diagnostic |
| Disabled |
| C++/Clang-Tidy Checks/modernize-type-traits clang-tidy check |
| Disabled |
| XML/Spelling Issues/Typo in markup attribute value |
| Removed |
| XML/Spelling Issues/Typo in markup text |
| Removed |