diff options
author | Ignat Beresnev <ignat.beresnev@jetbrains.com> | 2023-01-03 02:02:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-03 02:02:00 +0100 |
commit | 5ad955f28bde39d2f9e972bd3ec2c341579d9474 (patch) | |
tree | f984d6c8ccdabf781710b978a647c0cd75526330 /qodana.sarif.json | |
parent | b7a5eac3fc848501735b3520fc12f6f5d21b9bd4 (diff) | |
download | dokka-5ad955f28bde39d2f9e972bd3ec2c341579d9474.tar.gz dokka-5ad955f28bde39d2f9e972bd3ec2c341579d9474.tar.bz2 dokka-5ad955f28bde39d2f9e972bd3ec2c341579d9474.zip |
Add false positives to Qodana baseline (#2798)
Diffstat (limited to 'qodana.sarif.json')
-rw-r--r-- | qodana.sarif.json | 20486 |
1 files changed, 7402 insertions, 13084 deletions
diff --git a/qodana.sarif.json b/qodana.sarif.json index 0abbf5c9..785269dd 100644 --- a/qodana.sarif.json +++ b/qodana.sarif.json @@ -7,7 +7,7 @@ "driver": { "name": "QDJVM", "fullName": "Qodana for JVM", - "version": "222.4502.199", + "version": "223.8394.71", "rules": [], "taxa": [ { @@ -81,6 +81,24 @@ ] }, { + "id": "Java/Performance", + "name": "Performance", + "relationships": [ + { + "target": { + "id": "Java", + "index": 5, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "Spring", "name": "Spring" }, @@ -91,7 +109,7 @@ { "target": { "id": "Spring", - "index": 7, + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -109,7 +127,7 @@ { "target": { "id": "Spring/Spring Core", - "index": 8, + "index": 9, "toolComponent": { "name": "QDJVM" } @@ -121,8 +139,8 @@ ] }, { - "id": "Java/Performance", - "name": "Performance", + "id": "Java/Code style issues", + "name": "Code style issues", "relationships": [ { "target": { @@ -139,8 +157,8 @@ ] }, { - "id": "Java/Code style issues", - "name": "Code style issues", + "id": "Java/Error handling", + "name": "Error handling", "relationships": [ { "target": { @@ -181,7 +199,7 @@ { "target": { "id": "Spring/Spring Core", - "index": 8, + "index": 9, "toolComponent": { "name": "QDJVM" } @@ -193,13 +211,13 @@ ] }, { - "id": "Java/Error handling", - "name": "Error handling", + "id": "Kotlin/Migration", + "name": "Migration", "relationships": [ { "target": { - "id": "Java", - "index": 5, + "id": "Kotlin", + "index": 2, "toolComponent": { "name": "QDJVM" } @@ -211,13 +229,13 @@ ] }, { - "id": "Kotlin/Migration", - "name": "Migration", + "id": "Java/Probable bugs", + "name": "Probable bugs", "relationships": [ { "target": { - "id": "Kotlin", - "index": 2, + "id": "Java", + "index": 5, "toolComponent": { "name": "QDJVM" } @@ -229,13 +247,13 @@ ] }, { - "id": "Java/Probable bugs", - "name": "Probable bugs", + "id": "Spring/Spring Cloud", + "name": "Spring Cloud", "relationships": [ { "target": { - "id": "Java", - "index": 5, + "id": "Spring", + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -293,7 +311,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -367,8 +385,8 @@ ] }, { - "id": "Java/Numeric issues", - "name": "Numeric issues", + "id": "Java/Control flow issues", + "name": "Control flow issues", "relationships": [ { "target": { @@ -385,8 +403,8 @@ ] }, { - "id": "Java/Control flow issues", - "name": "Control flow issues", + "id": "Java/Numeric issues", + "name": "Numeric issues", "relationships": [ { "target": { @@ -469,13 +487,13 @@ ] }, { - "id": "Java/Java language level migration aids/Java 15", - "name": "Java 15", + "id": "Java/Java language level migration aids/Probable bugs", + "name": "Probable bugs", "relationships": [ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -493,7 +511,29 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Reactive Streams", + "name": "Reactive Streams" + }, + { + "id": "Reactive Streams/Common", + "name": "Common", + "relationships": [ + { + "target": { + "id": "Reactive Streams", + "index": 37, "toolComponent": { "name": "QDJVM" } @@ -545,6 +585,28 @@ "name": "General" }, { + "id": "Gradle", + "name": "Gradle" + }, + { + "id": "Gradle/Probable bugs", + "name": "Probable bugs", + "relationships": [ + { + "target": { + "id": "Gradle", + "index": 42, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "FreeMarker", "name": "FreeMarker" }, @@ -553,6 +615,24 @@ "name": "EditorConfig" }, { + "id": "Gradle/Validity issues", + "name": "Validity issues", + "relationships": [ + { + "target": { + "id": "Gradle", + "index": 42, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "Java/Code maturity", "name": "Code maturity", "relationships": [ @@ -575,13 +655,31 @@ "name": "SQL" }, { + "id": "Spring/Spring Data", + "name": "Spring Data", + "relationships": [ + { + "target": { + "id": "Spring", + "index": 8, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "Groovy/Probable bugs", "name": "Probable bugs", "relationships": [ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -593,13 +691,13 @@ ] }, { - "id": "Java/Data flow", - "name": "Data flow", + "id": "Kotlin/Other problems", + "name": "Other problems", "relationships": [ { "target": { - "id": "Java", - "index": 5, + "id": "Kotlin", + "index": 2, "toolComponent": { "name": "QDJVM" } @@ -611,16 +709,8 @@ ] }, { - "id": "CDI (Contexts and Dependency Injection)", - "name": "CDI (Contexts and Dependency Injection)" - }, - { - "id": "Velocity", - "name": "Velocity" - }, - { - "id": "Java/JUnit", - "name": "JUnit", + "id": "Java/Data flow", + "name": "Data flow", "relationships": [ { "target": { @@ -637,6 +727,14 @@ ] }, { + "id": "CDI (Contexts and Dependency Injection)", + "name": "CDI (Contexts and Dependency Injection)" + }, + { + "id": "Velocity", + "name": "Velocity" + }, + { "id": "Kotlin/Naming conventions", "name": "Naming conventions", "relationships": [ @@ -665,7 +763,7 @@ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -791,7 +889,7 @@ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -813,7 +911,7 @@ { "target": { "id": "Spring", - "index": 7, + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -835,7 +933,7 @@ { "target": { "id": "Plugin DevKit", - "index": 60, + "index": 67, "toolComponent": { "name": "QDJVM" } @@ -889,7 +987,7 @@ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -907,7 +1005,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -925,7 +1023,25 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Java/JUnit", + "name": "JUnit", + "relationships": [ + { + "target": { + "id": "Java", + "index": 5, "toolComponent": { "name": "QDJVM" } @@ -943,7 +1059,7 @@ { "target": { "id": "Spring/Spring Core", - "index": 8, + "index": 9, "toolComponent": { "name": "QDJVM" } @@ -965,7 +1081,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1023,7 +1139,7 @@ { "target": { "id": "Plugin DevKit", - "index": 60, + "index": 67, "toolComponent": { "name": "QDJVM" } @@ -1081,7 +1197,7 @@ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -1117,7 +1233,7 @@ { "target": { "id": "Java/Lombok", - "index": 78, + "index": 86, "toolComponent": { "name": "QDJVM" } @@ -1143,7 +1259,7 @@ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -1161,7 +1277,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1209,7 +1325,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1231,7 +1347,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1249,7 +1365,7 @@ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1267,7 +1383,7 @@ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1279,17 +1395,13 @@ ] }, { - "id": "Web services", - "name": "Web services" - }, - { "id": "Groovy/Assignment issues", "name": "Assignment issues", "relationships": [ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1319,6 +1431,10 @@ ] }, { + "id": "RESTful Web Service (JAX-RS)", + "name": "RESTful Web Service (JAX-RS)" + }, + { "id": "Java/Encapsulation", "name": "Encapsulation", "relationships": [ @@ -1337,6 +1453,24 @@ ] }, { + "id": "JVM languages/Test frameworks", + "name": "Test frameworks", + "relationships": [ + { + "target": { + "id": "JVM languages", + "index": 1, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "Java/Test frameworks", "name": "Test frameworks", "relationships": [ @@ -1373,13 +1507,31 @@ ] }, { + "id": "Java/Java language level migration aids/Java 15", + "name": "Java 15", + "relationships": [ + { + "target": { + "id": "Java/Java language level migration aids", + "index": 34, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "Spring/Spring AOP", "name": "Spring AOP", "relationships": [ { "target": { "id": "Spring", - "index": 7, + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -1433,7 +1585,7 @@ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1451,7 +1603,7 @@ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -1469,7 +1621,7 @@ { "target": { "id": "Plugin DevKit", - "index": 60, + "index": 67, "toolComponent": { "name": "QDJVM" } @@ -1549,7 +1701,7 @@ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -1567,7 +1719,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1635,31 +1787,13 @@ "name": "Internationalization" }, { - "id": "Spring/Spring WebSocket", - "name": "Spring WebSocket", - "relationships": [ - { - "target": { - "id": "Spring", - "index": 7, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { "id": "Java/Java language level migration aids/Java 10", "name": "Java 10", "relationships": [ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1677,7 +1811,7 @@ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1751,17 +1885,13 @@ ] }, { - "id": "Structural search", - "name": "Structural search" - }, - { - "id": "Spring/Spring Security", - "name": "Spring Security", + "id": "Reactive Streams/Reactor", + "name": "Reactor", "relationships": [ { "target": { - "id": "Spring", - "index": 7, + "id": "Reactive Streams", + "index": 37, "toolComponent": { "name": "QDJVM" } @@ -1773,13 +1903,13 @@ ] }, { - "id": "Java/Performance/Embedded", - "name": "Embedded", + "id": "Java/Java language level migration aids/Code style issues", + "name": "Code style issues", "relationships": [ { "target": { - "id": "Java/Performance", - "index": 10, + "id": "Java/Java language level migration aids", + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1791,17 +1921,17 @@ ] }, { - "id": "Feature usage statistics", - "name": "Feature usage statistics" + "id": "Structural search", + "name": "Structural search" }, { - "id": "Spring/Spring Data", - "name": "Spring Data", + "id": "Spring/Spring Security", + "name": "Spring Security", "relationships": [ { "target": { "id": "Spring", - "index": 7, + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -1813,13 +1943,13 @@ ] }, { - "id": "Java/Probable bugs/Nullability problems", - "name": "Nullability problems", + "id": "Java/Performance/Embedded", + "name": "Embedded", "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Performance", + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -1831,17 +1961,13 @@ ] }, { - "id": "RELAX NG", - "name": "RELAX NG" - }, - { - "id": "CSS/Code quality tools", - "name": "Code quality tools", + "id": "Spring/Spring Boot", + "name": "Spring Boot", "relationships": [ { "target": { - "id": "CSS", - "index": 49, + "id": "Spring", + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -1853,13 +1979,13 @@ ] }, { - "id": "Java/Properties files", - "name": "Properties files", + "id": "Java/Probable bugs/Nullability problems", + "name": "Nullability problems", "relationships": [ { "target": { - "id": "Java", - "index": 5, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -1871,35 +1997,17 @@ ] }, { - "id": "Gradle", - "name": "Gradle" - }, - { - "id": "Gradle/Probable bugs", - "name": "Probable bugs", - "relationships": [ - { - "target": { - "id": "Gradle", - "index": 136, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] + "id": "RELAX NG", + "name": "RELAX NG" }, { - "id": "Spring/Spring Boot", - "name": "Spring Boot", + "id": "Java/Properties files", + "name": "Properties files", "relationships": [ { "target": { - "id": "Spring", - "index": 7, + "id": "Java", + "index": 5, "toolComponent": { "name": "QDJVM" } @@ -1911,13 +2019,13 @@ ] }, { - "id": "Spring/Spring Shell", - "name": "Spring Shell", + "id": "Spring/Spring Cloud Stream", + "name": "Spring Cloud Stream", "relationships": [ { "target": { "id": "Spring", - "index": 7, + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -1935,25 +2043,7 @@ { "target": { "id": "Java/Java language level migration aids", - "index": 33, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "JVM languages/Test frameworks", - "name": "Test frameworks", - "relationships": [ - { - "target": { - "id": "JVM languages", - "index": 1, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -1969,13 +2059,17 @@ "name": "PostgreSQL" }, { - "id": "Spring/Spring Web Services", - "name": "Spring Web Services", + "id": "SQL server", + "name": "SQL server" + }, + { + "id": "Groovy/Data flow", + "name": "Data flow", "relationships": [ { "target": { - "id": "Spring", - "index": 7, + "id": "Groovy", + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -1987,17 +2081,25 @@ ] }, { - "id": "SQL server", - "name": "SQL server" + "id": "YAML", + "name": "YAML" }, { - "id": "Groovy/Data flow", - "name": "Data flow", + "id": "Dependency analysis", + "name": "Dependency analysis" + }, + { + "id": "EL", + "name": "EL" + }, + { + "id": "Java/Java language level migration aids/Java 16", + "name": "Java 16", "relationships": [ { "target": { - "id": "Groovy", - "index": 19, + "id": "Java/Java language level migration aids", + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -2009,16 +2111,8 @@ ] }, { - "id": "Dependency analysis", - "name": "Dependency analysis" - }, - { - "id": "EL", - "name": "EL" - }, - { - "id": "WSDL", - "name": "WSDL" + "id": "Shell script", + "name": "Shell script" }, { "id": "Java/Lombok/Redundant definitions", @@ -2027,7 +2121,7 @@ { "target": { "id": "Java/Lombok", - "index": 78, + "index": 86, "toolComponent": { "name": "QDJVM" } @@ -2045,7 +2139,7 @@ { "target": { "id": "Spring", - "index": 7, + "index": 8, "toolComponent": { "name": "QDJVM" } @@ -2063,7 +2157,7 @@ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -2075,13 +2169,13 @@ ] }, { - "id": "Kotlin/Other problems", - "name": "Other problems", + "id": "Plugin DevKit/Workspace model", + "name": "Workspace model", "relationships": [ { "target": { - "id": "Kotlin", - "index": 2, + "id": "Plugin DevKit", + "index": 67, "toolComponent": { "name": "QDJVM" } @@ -2093,13 +2187,13 @@ ] }, { - "id": "Plugin DevKit/Workspace model", - "name": "Workspace model", + "id": "Groovy/Other", + "name": "Other", "relationships": [ { "target": { - "id": "Plugin DevKit", - "index": 60, + "id": "Groovy", + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -2111,13 +2205,13 @@ ] }, { - "id": "Groovy/Other", - "name": "Other", + "id": "Reactive Streams/Mutiny", + "name": "Mutiny", "relationships": [ { "target": { - "id": "Groovy", - "index": 19, + "id": "Reactive Streams", + "index": 37, "toolComponent": { "name": "QDJVM" } @@ -2153,7 +2247,7 @@ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -2201,13 +2295,31 @@ ] }, { + "id": "Gradle/Best practises", + "name": "Best practises", + "relationships": [ + { + "target": { + "id": "Gradle", + "index": 42, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "Groovy/Declaration redundancy", "name": "Declaration redundancy", "relationships": [ { "target": { "id": "Groovy", - "index": 19, + "index": 20, "toolComponent": { "name": "QDJVM" } @@ -2229,7 +2341,7 @@ "extensions": [ { "name": "org.intellij.intelliLang", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "InjectionNotApplicable", @@ -2244,10 +2356,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -2278,17 +2387,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Pattern validation", - "index": 106, + "index": 116, "toolComponent": { "name": "QDJVM" } @@ -2312,17 +2418,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -2346,17 +2449,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Pattern validation", - "index": 106, + "index": 116, "toolComponent": { "name": "QDJVM" } @@ -2380,10 +2480,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -2414,17 +2511,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Pattern validation", - "index": 106, + "index": 116, "toolComponent": { "name": "QDJVM" } @@ -2448,10 +2542,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -2479,7 +2570,7 @@ }, { "name": "com.intellij.java", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "OverrideOnly", @@ -2494,10 +2585,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -2528,10 +2616,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -2562,17 +2647,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -2596,10 +2678,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -2618,28 +2697,25 @@ ] }, { - "id": "UnusedReturnValue", + "id": "UncheckedExceptionClass", "shortDescription": { - "text": "Method can be made 'void'" + "text": "Unchecked 'Exception' class" }, "fullDescription": { - "text": "Reports methods whose return values are never used when called. The return type of such methods can be made 'void'. Methods annotated with Error Prone's or AssertJ's '@CanIgnoreReturnValue' annotation will not be reported. The quick-fix updates the method signature and removes 'return' statements from inside the method. Example: '// reported if visibility setting is Protected or Public\n protected String myToUpperCase(String s) {\n return s.toUpperCase();\n }\n\n // simple setter, reporting depends on setting\n public String setStr(String str) {\n myStr = str;\n return myStr;\n }\n\n void test() {\n setStr(\"value\"); // return value is unused\n myToUpperCase(\"result\"); // return value is unused\n }' After the quick-fix is applied to both methods: 'protected void myToUpperCase(String s) {\n // 'return' removed completely\n // as 's.toUpperCase()' has no side effect\n }\n\n public void setStr(String str) {\n myStr = str;\n // 'return' removed\n }\n ...' NOTE: Some methods might not be reported during in-editor highlighting due to performance reasons. To see all results, run the inspection using Code | Inspect Code or Code | Analyze Code | Run Inspection by Name> Use the Ignore simple setters option to ignore unused return values from simple setter calls. Use the Maximal reported method visibility option to control the maximum visibility of methods to be reported.", - "markdown": "Reports methods whose return values are never used when called. The return type of such methods can be made `void`.\n\nMethods annotated with Error Prone's or AssertJ's `@CanIgnoreReturnValue` annotation will not be reported.\nThe quick-fix updates the method signature and removes `return` statements from inside the method.\n\n**Example:**\n\n\n // reported if visibility setting is Protected or Public\n protected String myToUpperCase(String s) {\n return s.toUpperCase();\n }\n\n // simple setter, reporting depends on setting\n public String setStr(String str) {\n myStr = str;\n return myStr;\n }\n\n void test() {\n setStr(\"value\"); // return value is unused\n myToUpperCase(\"result\"); // return value is unused\n }\n\nAfter the quick-fix is applied to both methods:\n\n\n protected void myToUpperCase(String s) {\n // 'return' removed completely\n // as 's.toUpperCase()' has no side effect\n }\n\n public void setStr(String str) {\n myStr = str;\n // 'return' removed\n }\n ...\n\n\n**NOTE:** Some methods might not be reported during in-editor highlighting due to performance reasons.\nTo see all results, run the inspection using **Code \\| Inspect Code** or **Code \\| Analyze Code \\| Run Inspection by Name**\\>\n\nUse the **Ignore simple setters** option to ignore unused return values from simple setter calls.\n\nUse the **Maximal reported method visibility** option to control the maximum visibility of methods to be reported." + "text": "Reports subclasses of 'java.lang.RuntimeException'. Some coding standards require that all user-defined exception classes are checked. Example: 'class EnigmaException extends RuntimeException {} // warning: Unchecked exception class 'EnigmaException''", + "markdown": "Reports subclasses of `java.lang.RuntimeException`.\n\nSome coding standards require that all user-defined exception classes are checked.\n\n**Example:**\n\n\n class EnigmaException extends RuntimeException {} // warning: Unchecked exception class 'EnigmaException'\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Declaration redundancy", + "id": "Java/Error handling", "index": 12, "toolComponent": { "name": "QDJVM" @@ -2652,29 +2728,26 @@ ] }, { - "id": "UncheckedExceptionClass", + "id": "UnusedReturnValue", "shortDescription": { - "text": "Unchecked 'Exception' class" + "text": "Method can be made 'void'" }, "fullDescription": { - "text": "Reports subclasses of 'java.lang.RuntimeException'. Some coding standards require that all user-defined exception classes are checked. Example: 'class EnigmaException extends RuntimeException {} // warning: Unchecked exception class 'EnigmaException''", - "markdown": "Reports subclasses of `java.lang.RuntimeException`.\n\nSome coding standards require that all user-defined exception classes are checked.\n\n**Example:**\n\n\n class EnigmaException extends RuntimeException {} // warning: Unchecked exception class 'EnigmaException'\n" + "text": "Reports methods whose return values are never used when called. The return type of such methods can be made 'void'. Methods annotated with Error Prone's or AssertJ's '@CanIgnoreReturnValue' annotation will not be reported. The quick-fix updates the method signature and removes 'return' statements from inside the method. Example: '// reported if visibility setting is Protected or Public\n protected String myToUpperCase(String s) {\n return s.toUpperCase();\n }\n\n // simple setter, reporting depends on setting\n public String setStr(String str) {\n myStr = str;\n return myStr;\n }\n\n void test() {\n setStr(\"value\"); // return value is unused\n myToUpperCase(\"result\"); // return value is unused\n }' After the quick-fix is applied to both methods: 'protected void myToUpperCase(String s) {\n // 'return' removed completely\n // as 's.toUpperCase()' has no side effect\n }\n\n public void setStr(String str) {\n myStr = str;\n // 'return' removed\n }\n ...' NOTE: Some methods might not be reported during in-editor highlighting due to performance reasons. To see all results, run the inspection using Code | Inspect Code or Code | Analyze Code | Run Inspection by Name> Use the Ignore simple setters option to ignore unused return values from simple setter calls. Use the Maximal reported method visibility option to control the maximum visibility of methods to be reported.", + "markdown": "Reports methods whose return values are never used when called. The return type of such methods can be made `void`.\n\nMethods annotated with Error Prone's or AssertJ's `@CanIgnoreReturnValue` annotation will not be reported.\nThe quick-fix updates the method signature and removes `return` statements from inside the method.\n\n**Example:**\n\n\n // reported if visibility setting is Protected or Public\n protected String myToUpperCase(String s) {\n return s.toUpperCase();\n }\n\n // simple setter, reporting depends on setting\n public String setStr(String str) {\n myStr = str;\n return myStr;\n }\n\n void test() {\n setStr(\"value\"); // return value is unused\n myToUpperCase(\"result\"); // return value is unused\n }\n\nAfter the quick-fix is applied to both methods:\n\n\n protected void myToUpperCase(String s) {\n // 'return' removed completely\n // as 's.toUpperCase()' has no side effect\n }\n\n public void setStr(String str) {\n myStr = str;\n // 'return' removed\n }\n ...\n\n\n**NOTE:** Some methods might not be reported during in-editor highlighting due to performance reasons.\nTo see all results, run the inspection using **Code \\| Inspect Code** or **Code \\| Analyze Code \\| Run Inspection by Name**\\>\n\nUse the **Ignore simple setters** option to ignore unused return values from simple setter calls.\n\nUse the **Maximal reported method visibility** option to control the maximum visibility of methods to be reported." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Error handling", - "index": 14, + "id": "Java/Declaration redundancy", + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -2698,10 +2771,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -2732,10 +2802,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -2766,17 +2833,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -2800,17 +2864,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -2834,17 +2895,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Imports", - "index": 21, + "index": 22, "toolComponent": { "name": "QDJVM" } @@ -2868,17 +2926,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -2890,29 +2945,26 @@ ] }, { - "id": "RemoveLiteralUnderscores", + "id": "NegatedEqualityExpression", "shortDescription": { - "text": "Underscores in numeric literal" + "text": "Negated equality expression" }, "fullDescription": { - "text": "Reports numeric literals with underscores and suggests removing them with a quick-fix. This may be useful if you need to lower the language level. The quick-fix removes underscores from numeric literals. For example '1_000_000' will be converted to '1000000'. Numeric literals with underscores appeared in Java 7. This inspection can help to downgrade for backward compatibility with earlier Java versions. New in 2020.2", - "markdown": "Reports numeric literals with underscores and suggests removing them with a quick-fix. This may be useful if you need to lower the language level.\n\nThe quick-fix removes underscores from numeric literals. For example `1_000_000` will be converted to `1000000`.\n\n\n*Numeric literals with underscores* appeared in Java 7.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nNew in 2020.2" + "text": "Reports equality expressions which are negated by a prefix expression. Such expressions can be simplified using the '!=' operator. Example: '!(i == 1)' After the quick-fix is applied: 'i != 1'", + "markdown": "Reports equality expressions which are negated by a prefix expression.\n\nSuch expressions can be simplified using the `!=` operator.\n\nExample:\n\n\n !(i == 1)\n\nAfter the quick-fix is applied:\n\n\n i != 1\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Numeric issues", - "index": 26, + "id": "Java/Control flow issues", + "index": 27, "toolComponent": { "name": "QDJVM" } @@ -2924,29 +2976,26 @@ ] }, { - "id": "NegatedEqualityExpression", + "id": "RemoveLiteralUnderscores", "shortDescription": { - "text": "Negated equality expression" + "text": "Underscores in numeric literal" }, "fullDescription": { - "text": "Reports equality expressions which are negated by a prefix expression. Such expressions can be simplified using the '!=' operator. Example: '!(i == 1)' After the quick-fix is applied: 'i != 1'", - "markdown": "Reports equality expressions which are negated by a prefix expression.\n\nSuch expressions can be simplified using the `!=` operator.\n\nExample:\n\n\n !(i == 1)\n\nAfter the quick-fix is applied:\n\n\n i != 1\n" + "text": "Reports numeric literals with underscores and suggests removing them with a quick-fix. This may be useful if you need to lower the language level. The quick-fix removes underscores from numeric literals. For example '1_000_000' will be converted to '1000000'. Numeric literals with underscores appeared in Java 7. This inspection can help to downgrade for backward compatibility with earlier Java versions. New in 2020.2", + "markdown": "Reports numeric literals with underscores and suggests removing them with a quick-fix. This may be useful if you need to lower the language level.\n\nThe quick-fix removes underscores from numeric literals. For example `1_000_000` will be converted to `1000000`.\n\n\n*Numeric literals with underscores* appeared in Java 7.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nNew in 2020.2" }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { - "id": "Java/Control flow issues", - "index": 27, + "id": "Java/Numeric issues", + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -2970,10 +3019,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3004,17 +3050,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -3038,17 +3081,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -3072,17 +3112,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -3099,24 +3136,21 @@ "text": "Inconsistent whitespace indentation in text block" }, "fullDescription": { - "text": "Reports text blocks that are indented using both spaces and tabs. Such cases produce unexpected results since spaces and tabs are treated equally during text block processing. In the following example, spaces and tabs are visualized as '·' and '␉' respectively, and a tab is equal to 4 spaces in the editor. Example: 'String colors = \"\"\"\n········red\n␉ ␉ green\n········blue\"\"\";' After printing such string, the result will be: 'red\n······green\nblue' After the compiler removes 2 spaces or tabs from the beginning of each line, the lines end up with extra whitespaces at the beginning. This inspection only reports if the configured language level is 15 or higher. New in 2021.1", - "markdown": "Reports text blocks that are indented using both spaces and tabs.\n\nSuch cases produce unexpected results since spaces and tabs are treated equally during text block processing.\n\nIn the following example, spaces and tabs are visualized as `·` and `␉` respectively, and a tab is equal to 4 spaces in the editor.\n\n**Example:**\n\n\n String colors = \"\"\"\n ········red\n ␉ ␉ green\n ········blue\"\"\";\n\nAfter printing such string, the result will be:\n\n\n red\n ······green\n blue\n\nAfter the compiler removes 2 spaces or tabs from the beginning of each line, the lines end up with extra whitespaces at the beginning.\n\nThis inspection only reports if the configured language level is 15 or higher.\n\nNew in 2021.1" + "text": "Reports text blocks that are indented using both spaces and tabs. Such cases produce unexpected results since spaces and tabs are treated equally by the text block processing. In the following example, spaces and tabs are visualized as '·' and '␉' respectively, and a tab is equal to 4 spaces in the editor. Example: 'String colors = \"\"\"\n········red\n␉ ␉ green\n········blue\"\"\";' After printing such a string, the result will be: '······red\ngreen\n······blue' After the compiler removes an equal amount of spaces or tabs from the beginning of each line, some lines remain with leading spaces. This inspection only reports if the configured language level is 15 or higher. New in 2021.1", + "markdown": "Reports text blocks that are indented using both spaces and tabs. Such cases produce unexpected results since spaces and tabs are treated equally by the text block processing.\n\nIn the following example, spaces and tabs are visualized as `·` and `␉` respectively,\nand a tab is equal to 4 spaces in the editor.\n\n**Example:**\n\n\n String colors = \"\"\"\n ········red\n ␉ ␉ green\n ········blue\"\"\";\n\nAfter printing such a string, the result will be:\n\n\n ······red\n green\n ······blue\n\nAfter the compiler removes an equal amount of spaces or tabs from the beginning of each line,\nsome lines remain with leading spaces.\n\nThis inspection only reports if the configured language level is 15 or higher.\n\nNew in 2021.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 15", - "index": 34, + "id": "Java/Java language level migration aids/Probable bugs", + "index": 35, "toolComponent": { "name": "QDJVM" } @@ -3128,22 +3162,19 @@ ] }, { - "id": "DoubleNegation", + "id": "AssertionCanBeIf", "shortDescription": { - "text": "Double negation" + "text": "Assertion can be replaced with 'if' statement" }, "fullDescription": { - "text": "Reports double negations that can be simplified. Example: 'if (!!functionCall()) {}' After the quick-fix is applied: 'if (functionCall()) {}' Example: 'if (!(a != b)) {}' After the quick-fix is applied: 'if (a == b) {}'", - "markdown": "Reports double negations that can be simplified.\n\nExample:\n\n\n if (!!functionCall()) {}\n\nAfter the quick-fix is applied:\n\n\n if (functionCall()) {}\n\nExample:\n\n\n if (!(a != b)) {}\n\nAfter the quick-fix is applied:\n\n\n if (a == b) {}\n" + "text": "Reports 'assert' statements and suggests replacing them with 'if' statements that throw 'java.lang.AssertionError'. Example: 'assert param != null;' After the quick-fix is applied: 'if (param == null) throw new AssertionError();'", + "markdown": "Reports `assert` statements and suggests replacing them with `if` statements that throw `java.lang.AssertionError`.\n\nExample:\n\n\n assert param != null;\n\nAfter the quick-fix is applied:\n\n\n if (param == null) throw new AssertionError();\n" }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -3162,22 +3193,19 @@ ] }, { - "id": "AssertionCanBeIf", + "id": "DoubleNegation", "shortDescription": { - "text": "Assertion can be replaced with 'if' statement" + "text": "Double negation" }, "fullDescription": { - "text": "Reports 'assert' statements and suggests replacing them with 'if' statements that throw 'java.lang.AssertionError'. Example: 'assert param != null;' After the quick-fix is applied: 'if (param == null) throw new AssertionError();'", - "markdown": "Reports `assert` statements and suggests replacing them with `if` statements that throw `java.lang.AssertionError`.\n\nExample:\n\n\n assert param != null;\n\nAfter the quick-fix is applied:\n\n\n if (param == null) throw new AssertionError();\n" + "text": "Reports double negations that can be simplified. Example: 'if (!!functionCall()) {}' After the quick-fix is applied: 'if (functionCall()) {}' Example: 'if (!(a != b)) {}' After the quick-fix is applied: 'if (a == b) {}'", + "markdown": "Reports double negations that can be simplified.\n\nExample:\n\n\n if (!!functionCall()) {}\n\nAfter the quick-fix is applied:\n\n\n if (functionCall()) {}\n\nExample:\n\n\n if (!(a != b)) {}\n\nAfter the quick-fix is applied:\n\n\n if (a == b) {}\n" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3208,17 +3236,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Packaging issues", - "index": 36, + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -3242,17 +3267,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -3276,17 +3298,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Imports", - "index": 21, + "index": 22, "toolComponent": { "name": "QDJVM" } @@ -3310,17 +3329,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -3344,17 +3360,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -3378,17 +3391,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -3412,17 +3422,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -3446,17 +3453,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -3480,10 +3484,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3514,17 +3515,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -3548,17 +3546,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Data flow", - "index": 44, + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -3582,10 +3577,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3604,22 +3596,19 @@ ] }, { - "id": "ClassGetClass", + "id": "ResultOfObjectAllocationIgnored", "shortDescription": { - "text": "Suspicious 'Class.getClass()' call" + "text": "Result of object allocation ignored" }, "fullDescription": { - "text": "Reports 'getClass()' methods that are called on a 'java.lang.Class' instance. This is usually a mistake as the result is always equivalent to 'Class.class'. If it's a mistake, then it's better to remove the 'getClass()' call and use the qualifier directly. If the behavior is intended, then it's better to write 'Class.class' explicitly to avoid confusion. Example: 'void test(Class<?> clazz) {\n String name = clazz.getClass().getName();\n }' After one of the possible quick-fixes is applied: 'void test(Class<?> clazz) {\n String name = clazz.getName();\n }' New in 2018.2", - "markdown": "Reports `getClass()` methods that are called on a `java.lang.Class` instance.\n\nThis is usually a mistake as the result is always equivalent to `Class.class`.\nIf it's a mistake, then it's better to remove the `getClass()` call and use the qualifier directly.\nIf the behavior is intended, then it's better to write `Class.class` explicitly to avoid confusion.\n\nExample:\n\n\n void test(Class<?> clazz) {\n String name = clazz.getClass().getName();\n }\n\nAfter one of the possible quick-fixes is applied:\n\n\n void test(Class<?> clazz) {\n String name = clazz.getName();\n }\n\nNew in 2018.2" + "text": "Reports object allocations where the allocated object is ignored and neither assigned to a variable nor used in another way. Such allocation expressions are legal in Java, but are usually either unintended, or evidence of a very odd object initialization strategy. Use the options to list classes whose allocations should be ignored by this inspection.", + "markdown": "Reports object allocations where the allocated object is ignored and neither assigned to a variable nor used in another way.\n\n\nSuch allocation expressions are legal in Java, but are usually either unintended, or\nevidence of a very odd object initialization strategy.\n\n\nUse the options to list classes whose allocations should be ignored by this inspection." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3638,22 +3627,19 @@ ] }, { - "id": "ResultOfObjectAllocationIgnored", + "id": "ClassGetClass", "shortDescription": { - "text": "Result of object allocation ignored" + "text": "Suspicious 'Class.getClass()' call" }, "fullDescription": { - "text": "Reports object allocations where the allocated object is ignored and neither assigned to a variable nor used in another way. Such allocation expressions are legal in Java, but are usually either unintended, or evidence of a very odd object initialization strategy. Use the options to list classes whose allocations should be ignored by this inspection.", - "markdown": "Reports object allocations where the allocated object is ignored and neither assigned to a variable nor used in another way.\n\n\nSuch allocation expressions are legal in Java, but are usually either unintended, or\nevidence of a very odd object initialization strategy.\n\n\nUse the options to list classes whose allocations should be ignored by this inspection." + "text": "Reports 'getClass()' methods that are called on a 'java.lang.Class' instance. This is usually a mistake as the result is always equivalent to 'Class.class'. If it's a mistake, then it's better to remove the 'getClass()' call and use the qualifier directly. If the behavior is intended, then it's better to write 'Class.class' explicitly to avoid confusion. Example: 'void test(Class<?> clazz) {\n String name = clazz.getClass().getName();\n }' After one of the possible quick-fixes is applied: 'void test(Class<?> clazz) {\n String name = clazz.getName();\n }' New in 2018.2", + "markdown": "Reports `getClass()` methods that are called on a `java.lang.Class` instance.\n\nThis is usually a mistake as the result is always equivalent to `Class.class`.\nIf it's a mistake, then it's better to remove the `getClass()` call and use the qualifier directly.\nIf the behavior is intended, then it's better to write `Class.class` explicitly to avoid confusion.\n\nExample:\n\n\n void test(Class<?> clazz) {\n String name = clazz.getClass().getName();\n }\n\nAfter one of the possible quick-fixes is applied:\n\n\n void test(Class<?> clazz) {\n String name = clazz.getName();\n }\n\nNew in 2018.2" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3684,17 +3670,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -3718,50 +3701,13 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "TestCaseInProductCode", - "shortDescription": { - "text": "JUnit 'TestCase' in product source" - }, - "fullDescription": { - "text": "Reports JUnit 3 test classes in product source trees. This most likely indicates a programmer's error and can result in test code being shipped into production.", - "markdown": "Reports JUnit 3 test classes in product source trees. This most likely indicates a programmer's error and can result in test code being shipped into production." - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Java/JUnit", "index": 47, "toolComponent": { "name": "QDJVM" @@ -3786,10 +3732,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3820,17 +3763,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Finalization", - "index": 51, + "index": 58, "toolComponent": { "name": "QDJVM" } @@ -3854,17 +3794,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -3888,17 +3825,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Modularization issues", - "index": 53, + "index": 60, "toolComponent": { "name": "QDJVM" } @@ -3922,10 +3856,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -3956,17 +3887,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -3983,24 +3911,21 @@ "text": "Class independent of its package" }, "fullDescription": { - "text": "Reports classes that don't depend on any other class in their package and are not a dependency for any other class in their package. Such classes indicate ad-hoc or incoherent packaging strategies and often may be profitably moved. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", - "markdown": "Reports classes that don't depend on any other class in their package and are not a dependency for any other class in their package. Such classes indicate ad-hoc or incoherent packaging strategies and often may be profitably moved.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." + "text": "Reports classes that don't depend on any other class in their package and are not a dependency for any other class in their package. Such classes indicate ad-hoc or incoherent packaging strategies and often may be profitably moved. Classes that are the only class in their package are not reported. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", + "markdown": "Reports classes that don't depend on any other class in their package and are not a dependency for any other class in their package. Such classes indicate ad-hoc or incoherent packaging strategies and often may be profitably moved. Classes that are the only class in their package are not reported.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Packaging issues", - "index": 36, + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -4024,17 +3949,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Class", - "index": 57, + "index": 64, "toolComponent": { "name": "QDJVM" } @@ -4058,17 +3980,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -4092,17 +4011,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -4126,17 +4042,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -4160,17 +4073,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -4194,10 +4104,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -4221,24 +4128,21 @@ "text": "'InputStream' and 'OutputStream' can be constructed using 'Files' methods" }, "fullDescription": { - "text": "Reports 'FileInputStream' or 'FileOutputStream' constructors when it is possible to replace them with 'Files.newInputStream()' or 'Files.newOutputStream()' accordingly. The streams created using 'Files' methods are usually more efficient than those created by stream constructors. Example: 'InputStream is = new BufferedInputStream(new FileInputStream(file));' After the quick-fix is applied: 'InputStream is = new BufferedInputStream(Files.newInputStream(file.toPath()));' This inspection does not show warning if the language level 10 or higher, but the quick-fix is still available. This inspection only reports if the language level of the project or module is 7 or higher. New in 2022.1", - "markdown": "Reports `FileInputStream` or `FileOutputStream` constructors when it is possible to replace them with `Files.newInputStream()` or `Files.newOutputStream()` accordingly. \nThe streams created using `Files` methods are usually more efficient than those created by stream constructors.\n\nExample:\n\n\n InputStream is = new BufferedInputStream(new FileInputStream(file));\n\nAfter the quick-fix is applied:\n\n\n InputStream is = new BufferedInputStream(Files.newInputStream(file.toPath()));\n\nThis inspection does not show warning if the language level 10 or higher, but the quick-fix is still available.\n\nThis inspection only reports if the language level of the project or module is 7 or higher.\n\nNew in 2022.1" + "text": "Reports 'new FileInputStream()' or 'new FileOutputStream()' expressions that can be replaced with 'Files.newInputStream()' or 'Files.newOutputStream()' calls respectively. The streams created using 'Files' methods are usually more efficient than those created by stream constructors. Example: 'InputStream is = new BufferedInputStream(new FileInputStream(file));' After the quick-fix is applied: 'InputStream is = new BufferedInputStream(Files.newInputStream(file.toPath()));' This inspection does not show warning if the language level 10 or higher, but the quick-fix is still available. This inspection only reports if the language level of the project or module is 7 or higher. New in 2022.1", + "markdown": "Reports `new FileInputStream()` or `new FileOutputStream()` expressions that can be replaced with `Files.newInputStream()` or `Files.newOutputStream()` calls respectively. \nThe streams created using `Files` methods are usually more efficient than those created by stream constructors.\n\nExample:\n\n\n InputStream is = new BufferedInputStream(new FileInputStream(file));\n\nAfter the quick-fix is applied:\n\n\n InputStream is = new BufferedInputStream(Files.newInputStream(file.toPath()));\n\nThis inspection does not show warning if the language level 10 or higher, but the quick-fix is still available.\n\nThis inspection only reports if the language level of the project or module is 7 or higher.\n\nNew in 2022.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -4262,17 +4166,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -4296,17 +4197,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 9", - "index": 64, + "index": 71, "toolComponent": { "name": "QDJVM" } @@ -4330,17 +4228,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -4364,17 +4259,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -4398,10 +4290,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -4432,17 +4321,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -4466,17 +4352,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -4500,17 +4383,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -4534,10 +4414,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -4568,17 +4445,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -4602,17 +4476,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -4636,10 +4507,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -4670,17 +4538,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -4704,17 +4569,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -4738,17 +4600,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Concurrency annotation issues", - "index": 76, + "index": 84, "toolComponent": { "name": "QDJVM" } @@ -4772,10 +4631,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -4806,10 +4662,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -4840,17 +4693,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -4874,17 +4724,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -4898,7 +4745,7 @@ { "id": "ConfusingFloatingPointLiteral", "shortDescription": { - "text": "Confusing floating point literal" + "text": "Confusing floating-point literal" }, "fullDescription": { "text": "Reports any floating point numbers that don't have a decimal point, numbers before the decimal point, or numbers after the decimal point. Such literals may be confusing, and violate several coding standards. Example: 'double d = .03;' After the quick-fix is applied: 'double d = 0.03;' Use the Ignore floating point literals in scientific notation option to ignore floating point numbers in scientific notation.", @@ -4908,17 +4755,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -4942,17 +4786,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -4976,10 +4817,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5010,17 +4848,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Data flow", - "index": 44, + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -5044,17 +4879,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -5078,17 +4910,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -5100,29 +4929,26 @@ ] }, { - "id": "NegatedConditionalExpression", + "id": "FinalMethod", "shortDescription": { - "text": "Negated conditional expression" + "text": "Method can't be overridden" }, "fullDescription": { - "text": "Reports conditional expressions which are negated with a prefix expression, as such constructions may be confusing. There is a fix that propagates the outer negation to both branches. Example: '!(i == 1 ? a : b)' After the quick-fix is applied: 'i == 1 ? !a : !b'", - "markdown": "Reports conditional expressions which are negated with a prefix expression, as such constructions may be confusing.\n\nThere is a fix that propagates the outer negation to both branches.\n\nExample:\n\n\n !(i == 1 ? a : b)\n\nAfter the quick-fix is applied:\n\n\n i == 1 ? !a : !b\n" + "text": "Reports methods that are declared 'final'. Such methods can't be overridden and may indicate a lack of object-oriented design. Some coding standards discourage 'final' methods.", + "markdown": "Reports methods that are declared `final`. Such methods can't be overridden and may indicate a lack of object-oriented design. Some coding standards discourage `final` methods." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Control flow issues", - "index": 27, + "id": "Java/Class structure", + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -5134,29 +4960,26 @@ ] }, { - "id": "FinalMethod", + "id": "NegatedConditionalExpression", "shortDescription": { - "text": "Method can't be overridden" + "text": "Negated conditional expression" }, "fullDescription": { - "text": "Reports methods that are declared 'final'. Such methods can't be overridden and may indicate a lack of object-oriented design. Some coding standards discourage 'final' methods.", - "markdown": "Reports methods that are declared `final`. Such methods can't be overridden and may indicate a lack of object-oriented design. Some coding standards discourage `final` methods." + "text": "Reports conditional expressions which are negated with a prefix expression, as such constructions may be confusing. There is a fix that propagates the outer negation to both branches. Example: '!(i == 1 ? a : b)' After the quick-fix is applied: 'i == 1 ? !a : !b'", + "markdown": "Reports conditional expressions which are negated with a prefix expression, as such constructions may be confusing.\n\nThere is a fix that propagates the outer negation to both branches.\n\nExample:\n\n\n !(i == 1 ? a : b)\n\nAfter the quick-fix is applied:\n\n\n i == 1 ? !a : !b\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Class structure", - "index": 17, + "id": "Java/Control flow issues", + "index": 27, "toolComponent": { "name": "QDJVM" } @@ -5180,10 +5003,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5214,10 +5034,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5248,17 +5065,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -5282,17 +5096,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -5316,10 +5127,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5350,17 +5158,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Cloning issues", - "index": 86, + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -5384,17 +5189,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Manifest", - "index": 87, + "index": 95, "toolComponent": { "name": "QDJVM" } @@ -5418,17 +5220,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -5452,17 +5251,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -5486,10 +5282,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5508,6 +5301,37 @@ ] }, { + "id": "OnlyOneElementUsed", + "shortDescription": { + "text": "Only one element is used" + }, + "fullDescription": { + "text": "Reports lists, arrays, and strings where exactly one element is queried right upon the creation. Such expressions may appear after refactoring and usually could be replaced with an accessed element. Example: 'System.out.println(new int[] {1,2,3,4,5}[2]);' After the quick-fix is applied: 'System.out.println(3);' New in 2022.3", + "markdown": "Reports lists, arrays, and strings where exactly one element is queried right upon the creation. Such expressions may appear after refactoring and usually could be replaced with an accessed element.\n\nExample:\n\n\n System.out.println(new int[] {1,2,3,4,5}[2]);\n\nAfter the quick-fix is applied:\n\n\n System.out.println(3);\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Verbose or redundant code constructs", + "index": 40, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "BadExceptionThrown", "shortDescription": { "text": "Prohibited exception thrown" @@ -5520,17 +5344,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -5547,24 +5368,21 @@ "text": "Unnecessary boxing" }, "fullDescription": { - "text": "Reports explicit boxing, that is wrapping of primitive values in objects. Explicit manual boxing is unnecessary as for Java 5 and later, and can safely be removed. Examples: 'Integer i = new Integer(1);' → 'Integer i = Integer.valueOf(1);' 'int i = Integer.valueOf(1);' → 'int i = 1;' Use the Only report truly superfluously boxed expressions option to report only truly superfluous boxing, where a boxed value is immediately unboxed either implicitly or explicitly. In this case, the entire boxing-unboxing step can be removed. The inspection doesn't report simple explicit boxing. This inspection only reports if the language level of the project or module is 5 or higher.", - "markdown": "Reports explicit boxing, that is wrapping of primitive values in objects.\n\nExplicit manual boxing is unnecessary as for Java 5 and later, and can safely be removed.\n\n**Examples:**\n\n* `Integer i = new Integer(1);` → `Integer i = Integer.valueOf(1);`\n* `int i = Integer.valueOf(1);` → `int i = 1;`\n\n\nUse the **Only report truly superfluously boxed expressions** option to report only truly superfluous boxing,\nwhere a boxed value is immediately unboxed either implicitly or explicitly.\nIn this case, the entire boxing-unboxing step can be removed. The inspection doesn't report simple explicit boxing.\n\nThis inspection only reports if the language level of the project or module is 5 or higher." + "text": "Reports explicit boxing, that is wrapping of primitive values in objects. Explicit manual boxing is unnecessary as of Java 5 and later, and can safely be removed. Examples: 'Integer i = new Integer(1);' → 'Integer i = Integer.valueOf(1);' 'int i = Integer.valueOf(1);' → 'int i = 1;' Use the Only report truly superfluously boxed expressions option to report only truly superfluous boxing, where a boxed value is immediately unboxed either implicitly or explicitly. In this case, the entire boxing-unboxing step can be removed. The inspection doesn't report simple explicit boxing. This inspection only reports if the language level of the project or module is 5 or higher.", + "markdown": "Reports explicit boxing, that is wrapping of primitive values in objects.\n\nExplicit manual boxing is unnecessary as of Java 5 and later, and can safely be removed.\n\n**Examples:**\n\n* `Integer i = new Integer(1);` → `Integer i = Integer.valueOf(1);`\n* `int i = Integer.valueOf(1);` → `int i = 1;`\n\n\nUse the **Only report truly superfluously boxed expressions** option to report only truly superfluous boxing,\nwhere a boxed value is immediately unboxed either implicitly or explicitly.\nIn this case, the entire boxing-unboxing step can be removed. The inspection doesn't report simple explicit boxing.\n\nThis inspection only reports if the language level of the project or module is 5 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -5588,17 +5406,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -5622,17 +5437,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -5656,10 +5468,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5690,17 +5499,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -5724,10 +5530,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5758,10 +5561,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -5792,17 +5592,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -5826,17 +5623,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Modularization issues", - "index": 53, + "index": 60, "toolComponent": { "name": "QDJVM" } @@ -5860,10 +5654,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -5882,29 +5673,26 @@ ] }, { - "id": "TypeMayBeWeakened", + "id": "CloneableImplementsClone", "shortDescription": { - "text": "Type may be weakened" + "text": "Cloneable class without 'clone()' method" }, "fullDescription": { - "text": "Reports variable and method return types that can be changed to a more abstract (weaker) type. This allows making the code more abstract, hence more reusable. Example: '// Type of parameter can be weakened to java.util.List\n void processList(ArrayList<String> list) {\n if (list.isEmpty()) return;\n System.out.println(\"Processing\");\n for (String s : list) {\n System.out.println(\"String: \" + s);\n }\n }' Enable the Use righthand type checkbox below to prevent weakening the left side of assignments when the right side is not a type cast or a new expression. When storing the result of a method call in a variable, it is useful to retain the type of the method call result instead of unnecessarily weakening it. Enable the Use parameterized type checkbox below to use the parameterized type of the collection as the weakest type when the object evaluated is used as an argument to a collection method with a parameter type of 'java.lang.Object'. Use this option to prevent weakening to 'Object' when passing an object to the following collection methods: 'get()', 'remove()', 'contains()', 'indexOf()', 'lastIndexOf()', 'containsKey()' and 'containsValue()'. Enable the Do not weaken to Object checkbox below to specify whether a type should be weakened to 'java.lang.Object'. Weakening to 'java.lang.Object' is rarely very useful. Enable the Only weaken to an interface checkbox below to only report a problem when the type can be weakened to an interface type. Enable the Do not weaken return type checkbox below to prevent reporting a problem when the return type may be weakened. Only variables will be analyzed. Enable the Do not suggest weakening variable declared as 'var' checkbox below to prevent reporting on local variables declared using the 'var' keyword (Java 10+) Stop classes are intended to prevent weakening to classes lower than stop classes, even if it is possible. In some cases, this may improve readability.", - "markdown": "Reports variable and method return types that can be changed to a more abstract (weaker) type. This allows making the code more abstract, hence more reusable.\n\nExample:\n\n\n // Type of parameter can be weakened to java.util.List\n void processList(ArrayList<String> list) {\n if (list.isEmpty()) return;\n System.out.println(\"Processing\");\n for (String s : list) {\n System.out.println(\"String: \" + s);\n }\n }\n\n\nEnable the **Use righthand type** checkbox below\nto prevent weakening the left side of assignments when the right side is not\na type cast or a new expression. When storing the result of a method call in a variable, it is\nuseful to retain the type of the method call result instead of unnecessarily weakening it.\n\n\nEnable the **Use parameterized type** checkbox below\nto use the parameterized type of the collection as the weakest type when\nthe object evaluated is used as an argument to a collection method with a parameter type of\n`java.lang.Object`.\nUse this option to prevent weakening to `Object` when passing an object to the following collection methods:\n`get()`, `remove()`,\n`contains()`, `indexOf()`,\n`lastIndexOf()`, `containsKey()` and `containsValue()`.\n\n\nEnable the **Do not weaken to Object** checkbox below\nto specify whether a type should be weakened to `java.lang.Object`.\nWeakening to `java.lang.Object` is rarely very useful.\n\n\nEnable the **Only weaken to an interface** checkbox below\nto only report a problem when the type can be weakened to an interface type.\n\n\nEnable the **Do not weaken return type** checkbox below\nto prevent reporting a problem when the return type may be weakened.\nOnly variables will be analyzed.\n\n\nEnable the **Do not suggest weakening variable declared as 'var'** checkbox below\nto prevent reporting on local variables declared using the 'var' keyword (Java 10+)\n\n\n**Stop classes** are intended to prevent weakening to classes\nlower than stop classes, even if it is possible.\nIn some cases, this may improve readability." + "text": "Reports classes implementing the 'Cloneable' interface that don't override the 'clone()' method. Such classes use the default implementation of 'clone()', which isn't 'public' but 'protected', and which does not copy the mutable state of the class. A quick-fix is available to generate a basic 'clone()' method, which can be used as a basis for a properly functioning 'clone()' method expected from a 'Cloneable' class. Example: 'public class Data implements Cloneable {\n private String[] names;\n }' After the quick-fix is applied: 'public class Data implements Cloneable {\n private String[] names;\n\n @Override\n public Data clone() {\n try {\n Data clone = (Data) super.clone();\n // TODO: copy mutable state here, so the clone can't change the internals of the original\n return clone;\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }' Use the Ignore classes cloneable due to inheritance option to ignore classes that are 'Cloneable' because they inherit from the 'Cloneable' class. Use the Ignore when Cloneable is necessary to call clone() method of super class option to ignore classes that require implementing 'Cloneable' because they call the 'clone()' method from a superclass.", + "markdown": "Reports classes implementing the `Cloneable` interface that don't override the `clone()` method.\n\nSuch classes use the default implementation of `clone()`,\nwhich isn't `public` but `protected`, and which does not copy the mutable state of the class.\n\nA quick-fix is available to generate a basic `clone()` method,\nwhich can be used as a basis for a properly functioning `clone()` method\nexpected from a `Cloneable` class.\n\n**Example:**\n\n\n public class Data implements Cloneable {\n private String[] names;\n }\n\nAfter the quick-fix is applied:\n\n\n public class Data implements Cloneable {\n private String[] names;\n\n @Override\n public Data clone() {\n try {\n Data clone = (Data) super.clone();\n // TODO: copy mutable state here, so the clone can't change the internals of the original\n return clone;\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }\n\nUse the **Ignore classes cloneable due to inheritance** option to ignore classes that are\n`Cloneable` because they inherit from the `Cloneable` class.\n\nUse the **Ignore when Cloneable is necessary to call clone() method of super class**\noption to ignore classes that require implementing `Cloneable` because they call the `clone()` method from a superclass." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Abstraction issues", - "index": 62, + "id": "Java/Cloning issues", + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -5916,29 +5704,26 @@ ] }, { - "id": "CloneableImplementsClone", + "id": "TypeMayBeWeakened", "shortDescription": { - "text": "Cloneable class without 'clone()' method" + "text": "Type may be weakened" }, "fullDescription": { - "text": "Reports classes implementing the 'Cloneable' interface that don't override the 'clone()' method. Such classes use the default implementation of 'clone()', which isn't 'public' but 'protected', and which does not copy the mutable state of the class. A quick-fix is available to generate a basic 'clone()' method, which can be used as a basis for a properly functioning 'clone()' method expected from a 'Cloneable' class. Example: 'public class Data implements Cloneable {\n private String[] names;\n }' After the quick-fix is applied: 'public class Data implements Cloneable {\n private String[] names;\n\n @Override\n public Data clone() {\n try {\n Data clone = (Data) super.clone();\n // TODO: copy mutable state here, so the clone can't change the internals of the original\n return clone;\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }' Use the Ignore classes cloneable due to inheritance option to ignore classes that are 'Cloneable' because they inherit from the 'Cloneable' class. Use the Ignore when Cloneable is necessary to call clone() method of super class option to ignore classes that require implementing 'Cloneable' because they call the 'clone()' method from a superclass.", - "markdown": "Reports classes implementing the `Cloneable` interface that don't override the `clone()` method.\n\nSuch classes use the default implementation of `clone()`,\nwhich isn't `public` but `protected`, and which does not copy the mutable state of the class.\n\nA quick-fix is available to generate a basic `clone()` method,\nwhich can be used as a basis for a properly functioning `clone()` method\nexpected from a `Cloneable` class.\n\n**Example:**\n\n\n public class Data implements Cloneable {\n private String[] names;\n }\n\nAfter the quick-fix is applied:\n\n\n public class Data implements Cloneable {\n private String[] names;\n\n @Override\n public Data clone() {\n try {\n Data clone = (Data) super.clone();\n // TODO: copy mutable state here, so the clone can't change the internals of the original\n return clone;\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }\n\nUse the **Ignore classes cloneable due to inheritance** option to ignore classes that are\n`Cloneable` because they inherit from the `Cloneable` class.\n\nUse the **Ignore when Cloneable is necessary to call clone() method of super class**\noption to ignore classes that require implementing `Cloneable` because they call the `clone()` method from a superclass." + "text": "Reports variable and method return types that can be changed to a more abstract (weaker) type. This allows making the code more abstract, hence more reusable. Example: '// Type of parameter can be weakened to java.util.List\n void processList(ArrayList<String> list) {\n if (list.isEmpty()) return;\n System.out.println(\"Processing\");\n for (String s : list) {\n System.out.println(\"String: \" + s);\n }\n }' Enable the Use righthand type checkbox below to prevent weakening the left side of assignments when the right side is not a type cast or a new expression. When storing the result of a method call in a variable, it is useful to retain the type of the method call result instead of unnecessarily weakening it. Enable the Use parameterized type checkbox below to use the parameterized type of the collection as the weakest type when the object evaluated is used as an argument to a collection method with a parameter type of 'java.lang.Object'. Use this option to prevent weakening to 'Object' when passing an object to the following collection methods: 'get()', 'remove()', 'contains()', 'indexOf()', 'lastIndexOf()', 'containsKey()' and 'containsValue()'. Enable the Do not weaken to Object checkbox below to specify whether a type should be weakened to 'java.lang.Object'. Weakening to 'java.lang.Object' is rarely very useful. Enable the Only weaken to an interface checkbox below to only report a problem when the type can be weakened to an interface type. Enable the Do not weaken return type checkbox below to prevent reporting a problem when the return type may be weakened. Only variables will be analyzed. Enable the Do not suggest weakening variable declared as 'var' checkbox below to prevent reporting on local variables declared using the 'var' keyword (Java 10+) Stop classes are intended to prevent weakening to classes lower than stop classes, even if it is possible. In some cases, this may improve readability.", + "markdown": "Reports variable and method return types that can be changed to a more abstract (weaker) type. This allows making the code more abstract, hence more reusable.\n\nExample:\n\n\n // Type of parameter can be weakened to java.util.List\n void processList(ArrayList<String> list) {\n if (list.isEmpty()) return;\n System.out.println(\"Processing\");\n for (String s : list) {\n System.out.println(\"String: \" + s);\n }\n }\n\n\nEnable the **Use righthand type** checkbox below\nto prevent weakening the left side of assignments when the right side is not\na type cast or a new expression. When storing the result of a method call in a variable, it is\nuseful to retain the type of the method call result instead of unnecessarily weakening it.\n\n\nEnable the **Use parameterized type** checkbox below\nto use the parameterized type of the collection as the weakest type when\nthe object evaluated is used as an argument to a collection method with a parameter type of\n`java.lang.Object`.\nUse this option to prevent weakening to `Object` when passing an object to the following collection methods:\n`get()`, `remove()`,\n`contains()`, `indexOf()`,\n`lastIndexOf()`, `containsKey()` and `containsValue()`.\n\n\nEnable the **Do not weaken to Object** checkbox below\nto specify whether a type should be weakened to `java.lang.Object`.\nWeakening to `java.lang.Object` is rarely very useful.\n\n\nEnable the **Only weaken to an interface** checkbox below\nto only report a problem when the type can be weakened to an interface type.\n\n\nEnable the **Do not weaken return type** checkbox below\nto prevent reporting a problem when the return type may be weakened.\nOnly variables will be analyzed.\n\n\nEnable the **Do not suggest weakening variable declared as 'var'** checkbox below\nto prevent reporting on local variables declared using the 'var' keyword (Java 10+)\n\n\n**Stop classes** are intended to prevent weakening to classes\nlower than stop classes, even if it is possible.\nIn some cases, this may improve readability." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Cloning issues", - "index": 86, + "id": "Java/Abstraction issues", + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -5962,17 +5747,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -5996,17 +5778,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -6030,17 +5809,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -6064,17 +5840,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -6098,17 +5871,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -6132,10 +5902,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -6166,10 +5933,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -6200,17 +5964,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -6234,17 +5995,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -6268,17 +6026,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -6292,7 +6047,7 @@ { "id": "TestMethodWithoutAssertion", "shortDescription": { - "text": "JUnit test method without any assertions" + "text": "Test method without assertions" }, "fullDescription": { "text": "Reports test methods that do not contain any assertions. Such methods may indicate either incomplete or weak test cases. Example: 'public class ExtensiveTest {\n\n @Test\n public void testAlive() {\n System.out.println(\"nothing\");\n }\n }' Configure the inspection: Use the table to specify the combinations of fully qualified class name and method name regular expression that should qualify as assertions. Class names also match subclasses. Use the 'assert' keyword is considered an assertion option to specify if the Java 'assert' statements using the 'assert' keyword should be considered an assertion. Use the Ignore test methods which declare exceptions option to ignore the test methods that declare exceptions. This can be useful when you have tests that will throw an exception on failure and thus don't need any assertions.", @@ -6302,17 +6057,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -6336,17 +6088,45 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EscapedSpace", + "shortDescription": { + "text": "Non-terminal use of '\\s' escape sequence" + }, + "fullDescription": { + "text": "Reports uses of '\"\\s\"' escape sequence anywhere except text-block line endings or within series of several spaces. The '\"\\s\"' escape sequence is intended to encode a space at the end of text-block lines where normal spaces are trimmed. In other locations, as well as in regular string literals, '\"\\s\"' is identical to an ordinary space character ('\" \"'). Use of '\"\\s\"' is confusing and can be a mistake, especially if the string is interpreted as a regular expression. Example: 'if (str.matches(\"\\s+\")) {...}' Here it's likely that '\"\\\\s+\"' was intended (to match any whitespace character). If not, using 'str.matches(\" +\")' would be less confusing. The quick-fix is provided that simply replaces '\\s' with a space character. This inspection reports only if the language level of the project or module is 15 or higher. New in 2022.3", + "markdown": "Reports uses of `\"\\s\"` escape sequence anywhere except text-block line endings or within series of several spaces. The `\"\\s\"` escape sequence is intended to encode a space at the end of text-block lines where normal spaces are trimmed. In other locations, as well as in regular string literals, `\"\\s\"` is identical to an ordinary space character (`\" \"`). Use of `\"\\s\"` is confusing and can be a mistake, especially if the string is interpreted as a regular expression.\n\n**Example:**\n\n\n if (str.matches(\"\\s+\")) {...}\n\nHere it's likely that `\"\\\\s+\"` was intended (to match any whitespace character). If not, using `str.matches(\" +\")` would be less confusing.\n\n\nThe quick-fix is provided that simply replaces `\\s` with a space character.\n\nThis inspection reports only if the language level of the project or module is 15 or higher.\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -6370,10 +6150,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -6404,17 +6181,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Test frameworks", - "index": 97, + "index": 106, "toolComponent": { "name": "QDJVM" } @@ -6438,17 +6212,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -6472,10 +6243,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -6506,17 +6274,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Reflective access", - "index": 98, + "index": 107, "toolComponent": { "name": "QDJVM" } @@ -6540,17 +6305,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -6574,10 +6336,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -6608,17 +6367,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -6642,17 +6398,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -6676,17 +6429,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -6710,17 +6460,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Reflective access", - "index": 98, + "index": 107, "toolComponent": { "name": "QDJVM" } @@ -6732,29 +6479,26 @@ ] }, { - "id": "ReturnThis", + "id": "CanBeFinal", "shortDescription": { - "text": "Return of 'this'" + "text": "Declaration can have 'final' modifier" }, "fullDescription": { - "text": "Reports methods returning 'this'. While such a return is valid, it is rarely necessary, and usually indicates that the method is intended to be used as part of a chain of similar method calls (for example, 'buffer.append(\"foo\").append(\"bar\").append(\"baz\")'). Such chains are frowned upon by many coding standards. Example: 'public Builder append(String str) {\n // [...]\n return this;\n }'", - "markdown": "Reports methods returning `this`.\n\n\nWhile such a return is valid, it is rarely necessary, and usually indicates that the method is intended to be used\nas part of a chain of similar method calls (for example, `buffer.append(\"foo\").append(\"bar\").append(\"baz\")`).\nSuch chains are frowned upon by many coding standards.\n\n**Example:**\n\n\n public Builder append(String str) {\n // [...]\n return this;\n }\n" + "text": "Reports fields, methods, or classes that may have the 'final' modifier added to their declarations. Final classes can't be extended, final methods can't be overridden, and final fields can't be reassigned. Example: 'public class Person {\n private String name;\n\n Person(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n\n public String toString() {\n return getName();\n }\n }' After the quick-fix is applied: 'public final class Person {\n private final String name;\n\n Person(String name) {\n this.name = name;\n }\n\n public final String getName() {\n return name;\n }\n\n public final String toString() {\n return getName();\n }\n }' Use the Report classes and Report methods options to define which declarations are to be reported.", + "markdown": "Reports fields, methods, or classes that may have the `final` modifier added to their declarations.\n\nFinal classes can't be extended, final methods can't be overridden, and final fields can't be reassigned.\n\n**Example:**\n\n\n public class Person {\n private String name;\n\n Person(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n\n public String toString() {\n return getName();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public final class Person {\n private final String name;\n\n Person(String name) {\n this.name = name;\n }\n\n public final String getName() {\n return name;\n }\n\n public final String toString() {\n return getName();\n }\n }\n\nUse the **Report classes** and **Report methods** options to define which declarations are to be reported." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Declaration redundancy", + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -6766,29 +6510,26 @@ ] }, { - "id": "CanBeFinal", + "id": "ReturnThis", "shortDescription": { - "text": "Declaration can have 'final' modifier" + "text": "Return of 'this'" }, "fullDescription": { - "text": "Reports all fields, methods, or classes found in the specified inspection scope that may have the 'final' modifier added to their declarations. Final classes can't be extended, final methods can't be overridden, and final fields can't be reassigned. Use the Report classes and Report methods options to define which declarations are to be reported.", - "markdown": "Reports all fields, methods, or classes found in the specified inspection scope that may have the `final` modifier added to their declarations.\n\nFinal classes can't be extended, final methods can't be overridden, and final fields can't be reassigned.\n\nUse the **Report classes** and **Report methods** options to define which declarations are to be reported." + "text": "Reports methods returning 'this'. While such a return is valid, it is rarely necessary, and usually indicates that the method is intended to be used as part of a chain of similar method calls (for example, 'buffer.append(\"foo\").append(\"bar\").append(\"baz\")'). Such chains are frowned upon by many coding standards. Example: 'public Builder append(String str) {\n // [...]\n return this;\n }'", + "markdown": "Reports methods returning `this`.\n\n\nWhile such a return is valid, it is rarely necessary, and usually indicates that the method is intended to be used\nas part of a chain of similar method calls (for example, `buffer.append(\"foo\").append(\"bar\").append(\"baz\")`).\nSuch chains are frowned upon by many coding standards.\n\n**Example:**\n\n\n public Builder append(String str) {\n // [...]\n return this;\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Declaration redundancy", - "index": 12, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -6812,17 +6553,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -6846,17 +6584,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -6880,17 +6615,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -6914,17 +6646,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -6941,24 +6670,21 @@ "text": "Text block can be used" }, "fullDescription": { - "text": "Reports 'String' literals and suggests replacing them with text blocks. Requirements: '\\n' occurs two or more times. Text blocks are not concatenated. Use the Apply to single string literals option to suggest the fix for single literals containing line breaks. Example: 'String html = \"<html>\\n\" +\n \" <body>\\n\" +\n \" <p>Hello, world</p>\\n\" +\n \" </body>\\n\" +\n \"</html>\\n\";' After the quick-fix is applied: 'String html = \"\"\"\n <html>\n <body>\n <p>Hello, world</p>\n </body>\n </html>\n \"\"\";' This inspection only reports if the language level of the project or module is 15 or higher. New in 2019.3", - "markdown": "Reports `String` literals and suggests replacing them with text blocks.\n\nRequirements:\n\n* `\\n` occurs two or more times.\n* Text blocks are not concatenated.\n\n\nUse the **Apply to single string literals** option to suggest the fix for single literals containing line breaks.\n\n\n**Example:**\n\n\n String html = \"<html>\\n\" +\n \" <body>\\n\" +\n \" <p>Hello, world</p>\\n\" +\n \" </body>\\n\" +\n \"</html>\\n\";\n\nAfter the quick-fix is applied:\n\n\n String html = \"\"\"\n <html>\n <body>\n <p>Hello, world</p>\n </body>\n </html>\n \"\"\";\n\nThis inspection only reports if the language level of the project or module is 15 or higher.\n\nNew in 2019.3" + "text": "Reports 'String' concatenations that can be simplified by replacing them with text blocks. Requirements: '\\n' occurs two or more times. Text blocks are not concatenated. Use the Apply to single string literals option to suggest the fix for single literals containing line breaks. Example: 'String html = \"<html>\\n\" +\n \" <body>\\n\" +\n \" <p>Hello, world</p>\\n\" +\n \" </body>\\n\" +\n \"</html>\\n\";' After the quick-fix is applied: 'String html = \"\"\"\n <html>\n <body>\n <p>Hello, world</p>\n </body>\n </html>\n \"\"\";' This inspection only reports if the language level of the project or module is 15 or higher. New in 2019.3", + "markdown": "Reports `String` concatenations that can be simplified by replacing them with text blocks.\n\nRequirements:\n\n* `\\n` occurs two or more times.\n* Text blocks are not concatenated.\n\n\nUse the **Apply to single string literals** option to suggest the fix for single literals containing line breaks.\n\n\n**Example:**\n\n\n String html = \"<html>\\n\" +\n \" <body>\\n\" +\n \" <p>Hello, world</p>\\n\" +\n \" </body>\\n\" +\n \"</html>\\n\";\n\nAfter the quick-fix is applied:\n\n\n String html = \"\"\"\n <html>\n <body>\n <p>Hello, world</p>\n </body>\n </html>\n \"\"\";\n\nThis inspection only reports if the language level of the project or module is 15 or higher.\n\nNew in 2019.3" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 15", - "index": 34, + "index": 108, "toolComponent": { "name": "QDJVM" } @@ -6982,17 +6708,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -7004,29 +6727,26 @@ ] }, { - "id": "ChainedEquality", + "id": "NonFinalClone", "shortDescription": { - "text": "Chained equality comparisons" + "text": "Non-final 'clone()' in secure context" }, "fullDescription": { - "text": "Reports chained equality comparisons. Such comparisons may be confusing: 'a == b == c' means '(a == b) == c', but possibly 'a == b && a == c' is intended. Example: 'boolean chainedEquality(boolean a, boolean b, boolean c) {\n return a == b == c;\n }' You can use parentheses to make the comparison less confusing: 'boolean chainedEquality(boolean a, boolean b, boolean c) {\n return (a == b) == c;\n }'", - "markdown": "Reports chained equality comparisons.\n\nSuch comparisons may be confusing: `a == b == c` means `(a == b) == c`,\nbut possibly `a == b && a == c` is intended.\n\n**Example:**\n\n\n boolean chainedEquality(boolean a, boolean b, boolean c) {\n return a == b == c;\n }\n\nYou can use parentheses to make the comparison less confusing:\n\n\n boolean chainedEquality(boolean a, boolean b, boolean c) {\n return (a == b) == c;\n }\n" + "text": "Reports 'clone()' methods without the 'final' modifier. Since 'clone()' can be used to instantiate objects without using a constructor, allowing the 'clone()' method to be overridden may result in corrupted objects, and even in security exploits. This may be prevented by making the 'clone()' method or the enclosing class itself 'final'. Example: 'class Main implements Cloneable {\n @Override\n protected Object clone() throws CloneNotSupportedException {\n return super.clone();\n }\n }'", + "markdown": "Reports `clone()` methods without the `final` modifier.\n\n\nSince `clone()` can be used to instantiate objects without using a constructor, allowing the `clone()`\nmethod to be overridden may result in corrupted objects, and even in security exploits. This may be prevented by making the\n`clone()` method or the enclosing class itself `final`.\n\n**Example:**\n\n\n class Main implements Cloneable {\n @Override\n protected Object clone() throws CloneNotSupportedException {\n return super.clone();\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Security", + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -7038,29 +6758,26 @@ ] }, { - "id": "NonFinalClone", + "id": "ChainedEquality", "shortDescription": { - "text": "Non-final 'clone()' in secure context" + "text": "Chained equality comparisons" }, "fullDescription": { - "text": "Reports 'clone()' methods without the 'final' modifier. Since 'clone()' can be used to instantiate objects without using a constructor, allowing the 'clone()' method to be overridden may result in corrupted objects, and even in security exploits. This may be prevented by making the 'clone()' method or the enclosing class itself 'final'. Example: 'class Main implements Cloneable {\n @Override\n protected Object clone() throws CloneNotSupportedException {\n return super.clone();\n }\n }'", - "markdown": "Reports `clone()` methods without the `final` modifier.\n\n\nSince `clone()` can be used to instantiate objects without using a constructor, allowing the `clone()`\nmethod to be overridden may result in corrupted objects, and even in security exploits. This may be prevented by making the\n`clone()` method or the enclosing class itself `final`.\n\n**Example:**\n\n\n class Main implements Cloneable {\n @Override\n protected Object clone() throws CloneNotSupportedException {\n return super.clone();\n }\n }\n" + "text": "Reports chained equality comparisons. Such comparisons may be confusing: 'a == b == c' means '(a == b) == c', but possibly 'a == b && a == c' is intended. Example: 'boolean chainedEquality(boolean a, boolean b, boolean c) {\n return a == b == c;\n }' You can use parentheses to make the comparison less confusing: 'boolean chainedEquality(boolean a, boolean b, boolean c) {\n return (a == b) == c;\n }'", + "markdown": "Reports chained equality comparisons.\n\nSuch comparisons may be confusing: `a == b == c` means `(a == b) == c`,\nbut possibly `a == b && a == c` is intended.\n\n**Example:**\n\n\n boolean chainedEquality(boolean a, boolean b, boolean c) {\n return a == b == c;\n }\n\nYou can use parentheses to make the comparison less confusing:\n\n\n boolean chainedEquality(boolean a, boolean b, boolean c) {\n return (a == b) == c;\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Security", - "index": 31, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -7084,17 +6801,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -7118,17 +6832,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -7152,17 +6863,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -7186,10 +6894,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -7220,17 +6925,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -7254,10 +6956,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -7288,10 +6987,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -7322,17 +7018,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Resource management", - "index": 101, + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -7356,17 +7049,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -7390,17 +7080,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -7424,17 +7111,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 14", - "index": 102, + "index": 112, "toolComponent": { "name": "QDJVM" } @@ -7458,17 +7142,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues/Cast", - "index": 103, + "index": 113, "toolComponent": { "name": "QDJVM" } @@ -7492,17 +7173,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -7526,17 +7204,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -7560,17 +7235,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -7594,17 +7266,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Cloning issues", - "index": 86, + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -7628,10 +7297,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -7662,17 +7328,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues/Cast", - "index": 103, + "index": 113, "toolComponent": { "name": "QDJVM" } @@ -7696,17 +7359,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -7730,17 +7390,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JavaBeans issues", - "index": 105, + "index": 115, "toolComponent": { "name": "QDJVM" } @@ -7764,17 +7421,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -7798,17 +7452,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -7832,17 +7483,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -7866,17 +7514,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -7888,29 +7533,26 @@ ] }, { - "id": "ClassWithTooManyTransitiveDependencies", + "id": "UnnecessaryThis", "shortDescription": { - "text": "Class with too many transitive dependencies" + "text": "Unnecessary 'this' qualifier" }, "fullDescription": { - "text": "Reports classes that are directly or indirectly dependent on too many other classes. Modifications to any dependency of such a class may require changing the class thus making it prone to instability. Only top-level classes are reported. Use the Maximum number of transitive dependencies field to specify the maximum allowed number of direct or indirect dependencies for a class. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", - "markdown": "Reports classes that are directly or indirectly dependent on too many other classes.\n\nModifications to any dependency of such a class may require changing the class thus making it prone to instability.\n\nOnly top-level classes are reported.\n\nUse the **Maximum number of transitive dependencies** field to specify the maximum allowed number of direct or indirect dependencies\nfor a class.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." + "text": "Reports unnecessary 'this' qualifier. Using 'this' to disambiguate a code reference is discouraged by many coding styles and may easily become unnecessary via automatic refactorings. Example: 'class Foo {\n int x;\n void foo() {\n this.x = 2;\n }\n }' After the quick-fix is applied: 'class Foo {\n int x;\n void foo() {\n x = 2;\n }\n }' Use the inspection settings to ignore assignments to fields. For instance, 'this.x = 2;' won't be reported, but 'int y = this.x;' will be.", + "markdown": "Reports unnecessary `this` qualifier.\n\n\nUsing `this` to disambiguate a code reference is discouraged by many coding styles\nand may easily become unnecessary\nvia automatic refactorings.\n\n**Example:**\n\n\n class Foo {\n int x;\n void foo() {\n this.x = 2;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n int x;\n void foo() {\n x = 2;\n }\n }\n\n\nUse the inspection settings to ignore assignments to fields.\nFor instance, `this.x = 2;` won't be reported, but `int y = this.x;` will be." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Dependency issues", - "index": 108, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -7922,29 +7564,26 @@ ] }, { - "id": "UnnecessaryThis", + "id": "ClassWithTooManyTransitiveDependencies", "shortDescription": { - "text": "Unnecessary 'this' qualifier" + "text": "Class with too many transitive dependencies" }, "fullDescription": { - "text": "Reports unnecessary 'this' qualifier. Using 'this' to disambiguate a code reference is discouraged by many coding styles and may easily become unnecessary via automatic refactorings. Example: 'class Foo {\n int x;\n void foo() {\n this.x = 2;\n }\n }' After the quick-fix is applied: 'class Foo {\n int x;\n void foo() {\n x = 2;\n }\n }' Use the inspection settings to ignore assignments to fields. For instance, 'this.x = 2;' won't be reported, but 'int y = this.x;' will be.", - "markdown": "Reports unnecessary `this` qualifier.\n\n\nUsing `this` to disambiguate a code reference is discouraged by many coding styles\nand may easily become unnecessary\nvia automatic refactorings.\n\n**Example:**\n\n\n class Foo {\n int x;\n void foo() {\n this.x = 2;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n int x;\n void foo() {\n x = 2;\n }\n }\n\n\nUse the inspection settings to ignore assignments to fields.\nFor instance, `this.x = 2;` won't be reported, but `int y = this.x;` will be." + "text": "Reports classes that are directly or indirectly dependent on too many other classes. Modifications to any dependency of such a class may require changing the class thus making it prone to instability. Only top-level classes are reported. Use the Maximum number of transitive dependencies field to specify the maximum allowed number of direct or indirect dependencies for a class. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", + "markdown": "Reports classes that are directly or indirectly dependent on too many other classes.\n\nModifications to any dependency of such a class may require changing the class thus making it prone to instability.\n\nOnly top-level classes are reported.\n\nUse the **Maximum number of transitive dependencies** field to specify the maximum allowed number of direct or indirect dependencies\nfor a class.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Dependency issues", + "index": 118, "toolComponent": { "name": "QDJVM" } @@ -7968,10 +7607,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -8002,17 +7638,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -8036,17 +7669,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -8070,17 +7700,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues/Cast", - "index": 103, + "index": 113, "toolComponent": { "name": "QDJVM" } @@ -8104,17 +7731,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -8138,17 +7762,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -8172,17 +7793,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -8206,17 +7824,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -8240,10 +7855,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -8274,17 +7886,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -8308,17 +7917,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -8342,17 +7948,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -8376,17 +7979,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -8410,10 +8010,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -8432,29 +8029,26 @@ ] }, { - "id": "InstanceGuardedByStatic", + "id": "BooleanMethodIsAlwaysInverted", "shortDescription": { - "text": "Instance member guarded by static field" + "text": "Boolean method is always inverted" }, "fullDescription": { - "text": "Reports '@GuardedBy' annotations on instance fields or methods in which the guard is a 'static' field. Guarding a non-static by a static may result in excessive lock contention, as access to each locked field in any object instance will prevent simultaneous access to that field in every object instance. Example: 'private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static guarding field\n private Object state;\n\n @GuardedBy(\"lock\")\n public void bar() {\n state = new Object();\n }' Supported '@GuardedBy' annotations are: 'net.jcip.annotations.GuardedBy' 'javax.annotation.concurrent.GuardedBy' 'org.apache.http.annotation.GuardedBy' 'com.android.annotations.concurrency.GuardedBy' 'androidx.annotation.GuardedBy' 'com.google.errorprone.annotations.concurrent.GuardedBy'", - "markdown": "Reports `@GuardedBy` annotations on instance fields or methods in which the guard is a `static` field. Guarding a non-static by a static may result in excessive lock contention, as access to each locked field in any object instance will prevent simultaneous access to that field in every object instance.\n\nExample:\n\n\n private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static guarding field\n private Object state;\n\n @GuardedBy(\"lock\")\n public void bar() {\n state = new Object();\n }\n\nSupported `@GuardedBy` annotations are:\n\n* `net.jcip.annotations.GuardedBy`\n* `javax.annotation.concurrent.GuardedBy`\n* `org.apache.http.annotation.GuardedBy`\n* `com.android.annotations.concurrency.GuardedBy`\n* `androidx.annotation.GuardedBy`\n* `com.google.errorprone.annotations.concurrent.GuardedBy`" + "text": "Reports methods with a 'boolean' return type that are used only in a negated context. The quick-fix makes it possible to rename and invert the method. Due to performance reasons, some methods might not be highlighted in the editor. Example: 'class C {\n boolean alwaysTrue() {\n return true;\n }\n\n void f() {\n if (!alwaysTrue()) {\n return;\n }\n }\n boolean member = !alwaysTrue();\n }' After the quick-fix is applied: 'class C {\n boolean alwaysFalse() {\n return false;\n }\n\n void f() {\n if (alwaysFalse()) {\n return;\n }\n }\n boolean member = alwaysFalse();\n }'", + "markdown": "Reports methods with a `boolean` return type that are used only in a negated context.\n\nThe quick-fix makes it possible to rename and invert the method.\nDue to performance reasons, some methods might not be highlighted in the editor.\n\nExample:\n\n\n class C {\n boolean alwaysTrue() {\n return true;\n }\n\n void f() {\n if (!alwaysTrue()) {\n return;\n }\n }\n boolean member = !alwaysTrue();\n }\n\nAfter the quick-fix is applied:\n\n\n class C {\n boolean alwaysFalse() {\n return false;\n }\n\n void f() {\n if (alwaysFalse()) {\n return;\n }\n }\n boolean member = alwaysFalse();\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Concurrency annotation issues", - "index": 76, + "id": "Java/Data flow", + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -8466,29 +8060,26 @@ ] }, { - "id": "BooleanMethodIsAlwaysInverted", + "id": "InstanceGuardedByStatic", "shortDescription": { - "text": "Boolean method is always inverted" + "text": "Instance member guarded by static field" }, "fullDescription": { - "text": "Reports methods with a 'boolean' return type that are used only in a negated context. The quick-fix makes it possible to rename and invert the method. Due to performance reasons, some methods might not be highlighted in the editor. Example: 'class C {\n boolean alwaysTrue() {\n return true;\n }\n\n void f() {\n if (!alwaysTrue()) {\n return;\n }\n }\n boolean member = !alwaysTrue();\n }' After the quick-fix is applied: 'class C {\n boolean alwaysFalse() {\n return false;\n }\n\n void f() {\n if (alwaysFalse()) {\n return;\n }\n }\n boolean member = alwaysFalse();\n }'", - "markdown": "Reports methods with a `boolean` return type that are used only in a negated context.\n\nThe quick-fix makes it possible to rename and invert the method.\nDue to performance reasons, some methods might not be highlighted in the editor.\n\nExample:\n\n\n class C {\n boolean alwaysTrue() {\n return true;\n }\n\n void f() {\n if (!alwaysTrue()) {\n return;\n }\n }\n boolean member = !alwaysTrue();\n }\n\nAfter the quick-fix is applied:\n\n\n class C {\n boolean alwaysFalse() {\n return false;\n }\n\n void f() {\n if (alwaysFalse()) {\n return;\n }\n }\n boolean member = alwaysFalse();\n }\n" + "text": "Reports '@GuardedBy' annotations on instance fields or methods in which the guard is a 'static' field. Guarding a non-static by a static may result in excessive lock contention, as access to each locked field in any object instance will prevent simultaneous access to that field in every object instance. Example: 'private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static guarding field\n private Object state;\n\n @GuardedBy(\"lock\")\n public void bar() {\n state = new Object();\n }' Supported '@GuardedBy' annotations are: 'net.jcip.annotations.GuardedBy' 'javax.annotation.concurrent.GuardedBy' 'org.apache.http.annotation.GuardedBy' 'com.android.annotations.concurrency.GuardedBy' 'androidx.annotation.GuardedBy' 'com.google.errorprone.annotations.concurrent.GuardedBy'", + "markdown": "Reports `@GuardedBy` annotations on instance fields or methods in which the guard is a `static` field. Guarding a non-static by a static may result in excessive lock contention, as access to each locked field in any object instance will prevent simultaneous access to that field in every object instance.\n\nExample:\n\n\n private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static guarding field\n private Object state;\n\n @GuardedBy(\"lock\")\n public void bar() {\n state = new Object();\n }\n\nSupported `@GuardedBy` annotations are:\n\n* `net.jcip.annotations.GuardedBy`\n* `javax.annotation.concurrent.GuardedBy`\n* `org.apache.http.annotation.GuardedBy`\n* `com.android.annotations.concurrency.GuardedBy`\n* `androidx.annotation.GuardedBy`\n* `com.google.errorprone.annotations.concurrent.GuardedBy`" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Data flow", - "index": 44, + "id": "Java/Concurrency annotation issues", + "index": 84, "toolComponent": { "name": "QDJVM" } @@ -8512,17 +8103,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Resource management", - "index": 101, + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -8546,10 +8134,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -8570,27 +8155,24 @@ { "id": "TestCaseWithConstructor", "shortDescription": { - "text": "JUnit TestCase with non-trivial constructors" + "text": "TestCase with non-trivial constructors" }, "fullDescription": { - "text": "Reports JUnit test cases with initialization logic in their constructors. If a constructor fails, the '@After' annotated or 'tearDown()' method won't be called. This can leave the test environment partially initialized, which can adversely affect other tests. Instead, initialization of JUnit test cases should be done in a 'setUp()' or '@Before' annotated method. Bad example: 'public class ImportantTest {\n private File file;\n public ImportantTest() throws IOException {\n file = File.createTempFile(\"xyz\", \".tmp\");\n }\n\n // ... tests go here\n }'", - "markdown": "Reports JUnit test cases with initialization logic in their constructors. If a constructor fails, the `@After` annotated or `tearDown()` method won't be called. This can leave the test environment partially initialized, which can adversely affect other tests. Instead, initialization of JUnit test cases should be done in a `setUp()` or `@Before` annotated method.\n\nBad example:\n\n\n public class ImportantTest {\n private File file;\n public ImportantTest() throws IOException {\n file = File.createTempFile(\"xyz\", \".tmp\");\n }\n\n // ... tests go here\n }\n" + "text": "Reports test cases with initialization logic in their constructors. If a constructor fails, the '@After' annotated or 'tearDown()' method won't be called. This can leave the test environment partially initialized, which can adversely affect other tests. Instead, initialization of test cases should be done in a 'setUp()' or '@Before' annotated method. Bad example: 'public class ImportantTest {\n private File file;\n\n public ImportantTest() throws IOException {\n file = File.createTempFile(\"xyz\", \".tmp\");\n }\n\n // ... tests go here\n }'", + "markdown": "Reports test cases with initialization logic in their constructors. If a constructor fails, the `@After` annotated or `tearDown()` method won't be called. This can leave the test environment partially initialized, which can adversely affect other tests. Instead, initialization of test cases should be done in a `setUp()` or `@Before` annotated method.\n\nBad example:\n\n\n public class ImportantTest {\n private File file;\n\n public ImportantTest() throws IOException {\n file = File.createTempFile(\"xyz\", \".tmp\");\n }\n\n // ... tests go here\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -8614,17 +8196,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -8648,17 +8227,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -8672,7 +8248,7 @@ { "id": "PointlessBooleanExpression", "shortDescription": { - "text": "Pointless statement or boolean expression" + "text": "Pointless boolean expression" }, "fullDescription": { "text": "Reports unnecessary or overly complicated boolean expressions. Such expressions include '&&'-ing with 'true', '||'-ing with 'false', equality comparison with a boolean literal, or negation of a boolean literal. Such expressions can be simplified. Example: 'boolean a = !(x && false);\n boolean b = false || x;\n boolean c = x != true;' After the quick-fix is applied: 'boolean a = true;\n boolean b = x;\n boolean c = !x;' Configure the inspection: Use the Ignore named constants in determining pointless expressions option to ignore named constants when determining if an expression is pointless.", @@ -8682,10 +8258,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -8706,27 +8279,24 @@ { "id": "SuperTearDownInFinally", "shortDescription": { - "text": "'super.tearDown()' not called from 'finally' block" + "text": "JUnit 3 'super.tearDown()' is not called from 'finally' block" }, "fullDescription": { - "text": "Reports calls of the JUnit 3's 'super.tearDown()' method that are not performed inside a 'finally' block. If there are other method calls in the 'tearDown()' method that may throw an exception before the 'super.tearDown()' call, this may lead to inconsistencies and leaks. Example: 'public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"abcde\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n Files.delete(path);\n super.tearDown();\n }\n }' Improved code: 'public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"abcde\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n try {\n Files.delete(path);\n } finally {\n super.tearDown();\n }\n }\n }'", - "markdown": "Reports calls of the JUnit 3's `super.tearDown()` method that are not performed inside a `finally` block. If there are other method calls in the `tearDown()` method that may throw an exception before the `super.tearDown()` call, this may lead to inconsistencies and leaks.\n\n**Example:**\n\n\n public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"abcde\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n Files.delete(path);\n super.tearDown();\n }\n }\n\nImproved code:\n\n\n public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"abcde\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n try {\n Files.delete(path);\n } finally {\n super.tearDown();\n }\n }\n }\n" + "text": "Reports calls of the JUnit 3's 'super.tearDown()' method that are not performed inside a 'finally' block. If an exception is thrown before 'super.tearDown()' is called it could lead to inconsistencies and leaks. Example: 'public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"File\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n Files.delete(path);\n super.tearDown();\n }\n }' Improved code: 'public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"File\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n try {\n Files.delete(path);\n } finally {\n super.tearDown();\n }\n }\n }'", + "markdown": "Reports calls of the JUnit 3's `super.tearDown()` method that are not performed inside a `finally` block. If an exception is thrown before `super.tearDown()` is called it could lead to inconsistencies and leaks.\n\n**Example:**\n\n\n public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"File\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n Files.delete(path);\n super.tearDown();\n }\n }\n\nImproved code:\n\n\n public class AnotherTest extends CompanyTestCase {\n private Path path;\n\n @Override\n protected void setUp() throws Exception {\n super.setUp();\n path = Files.createTempFile(\"File\", \".tmp\");\n }\n\n @Override\n protected void tearDown() throws Exception {\n try {\n Files.delete(path);\n } finally {\n super.tearDown();\n }\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -8750,17 +8320,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -8784,17 +8351,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -8818,17 +8382,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -8852,17 +8413,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -8886,17 +8444,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Concurrency annotation issues", - "index": 76, + "index": 84, "toolComponent": { "name": "QDJVM" } @@ -8920,10 +8475,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -8954,10 +8506,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -8988,10 +8537,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -9010,40 +8556,6 @@ ] }, { - "id": "TestMethodInProductCode", - "shortDescription": { - "text": "JUnit test method in product source" - }, - "fullDescription": { - "text": "Reports methods annotated with the JUnit 4 or JUnit 5 '@Test' annotation that are located in production source trees. This most likely a mistake and can result in test code being shipped into production.", - "markdown": "Reports methods annotated with the JUnit 4 or JUnit 5 `@Test` annotation that are located in production source trees. This most likely a mistake and can result in test code being shipped into production." - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Java/JUnit", - "index": 47, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { "id": "UseOfPropertiesAsHashtable", "shortDescription": { "text": "Use of 'Properties' object as a 'Hashtable'" @@ -9056,10 +8568,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -9090,17 +8599,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -9124,17 +8630,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -9158,17 +8661,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 10", - "index": 120, + "index": 129, "toolComponent": { "name": "QDJVM" } @@ -9192,17 +8692,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -9226,17 +8723,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -9260,17 +8754,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -9282,29 +8773,26 @@ ] }, { - "id": "AbstractMethodCallInConstructor", + "id": "EqualsReplaceableByObjectsCall", "shortDescription": { - "text": "Abstract method called during object construction" + "text": "'equals()' expression replaceable by 'Objects.equals()' expression" }, "fullDescription": { - "text": "Reports calls to 'abstract' methods of the current class during object construction. A method is called during object construction if it is inside a: Constructor Non-static instance initializer Non-static field initializer 'clone()' method 'readObject()' method 'readObjectNoData()' method Such calls may result in subtle bugs, as object initialization may happen before the method call. Example: 'abstract class Parent {\n abstract void abstractMethod();\n }\n\n class Child extends Parent {\n Child() {\n abstractMethod();\n }\n }' This inspection shares the functionality with the following inspections: Overridable method called during object construction Overridden method called during object construction Only one inspection should be enabled at once to prevent warning duplication.", - "markdown": "Reports calls to `abstract` methods of the current class during object construction.\n\nA method is called during object construction if it is inside a:\n\n* Constructor\n* Non-static instance initializer\n* Non-static field initializer\n* `clone()` method\n* `readObject()` method\n* `readObjectNoData()` method\n\nSuch calls may result in subtle bugs, as object initialization may happen before the method call.\n\n**Example:**\n\n\n abstract class Parent {\n abstract void abstractMethod();\n }\n\n class Child extends Parent {\n Child() {\n abstractMethod();\n }\n }\n\nThis inspection shares the functionality with the following inspections:\n\n* Overridable method called during object construction\n* Overridden method called during object construction\n\nOnly one inspection should be enabled at once to prevent warning duplication." + "text": "Reports expressions that can be replaced with a call to 'java.util.Objects#equals'. Example: 'void f(Object a, Object b) {\n boolean result = a != null && a.equals(b);\n }' After the quick-fix is applied: 'void f(Object a, Object b) {\n boolean result = Objects.equals(a, b);\n }' Replacing expressions like 'a != null && a.equals(b)' with 'Objects.equals(a, b)' slightly changes the semantics. Use the Highlight expressions like 'a != null && a.equals(b)' option to enable or disable this behavior. This inspection only reports if the language level of the project or module is 7 or higher.", + "markdown": "Reports expressions that can be replaced with a call to `java.util.Objects#equals`.\n\n**Example:**\n\n\n void f(Object a, Object b) {\n boolean result = a != null && a.equals(b);\n }\n\nAfter the quick-fix is applied:\n\n\n void f(Object a, Object b) {\n boolean result = Objects.equals(a, b);\n }\n\n\nReplacing expressions like `a != null && a.equals(b)` with `Objects.equals(a, b)`\nslightly changes the semantics. Use the **Highlight expressions like 'a != null \\&\\& a.equals(b)'** option to enable or disable this behavior.\n\nThis inspection only reports if the language level of the project or module is 7 or higher." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { - "id": "Java/Initialization", - "index": 29, + "id": "Java/Java language level migration aids/Java 7", + "index": 130, "toolComponent": { "name": "QDJVM" } @@ -9316,29 +8804,26 @@ ] }, { - "id": "EqualsReplaceableByObjectsCall", + "id": "AbstractMethodCallInConstructor", "shortDescription": { - "text": "'equals()' expression replaceable by 'Objects.equals()' expression" + "text": "Abstract method called during object construction" }, "fullDescription": { - "text": "Reports expressions that can be replaced with a call to 'java.util.Objects#equals'. Example: 'void f(Object a, Object b) {\n boolean result = a != null && a.equals(b);\n }' After the quick-fix is applied: 'void f(Object a, Object b) {\n boolean result = Objects.equals(a, b);\n }' Replacing expressions like 'a != null && a.equals(b)' with 'Objects.equals(a, b)' slightly changes the semantics. Use the Highlight expressions like 'a != null && a.equals(b)' option to enable or disable this behavior. This inspection only reports if the language level of the project or module is 7 or higher.", - "markdown": "Reports expressions that can be replaced with a call to `java.util.Objects#equals`.\n\n**Example:**\n\n\n void f(Object a, Object b) {\n boolean result = a != null && a.equals(b);\n }\n\nAfter the quick-fix is applied:\n\n\n void f(Object a, Object b) {\n boolean result = Objects.equals(a, b);\n }\n\n\nReplacing expressions like `a != null && a.equals(b)` with `Objects.equals(a, b)`\nslightly changes the semantics. Use the **Highlight expressions like 'a != null \\&\\& a.equals(b)'** option to enable or disable this behavior.\n\nThis inspection only reports if the language level of the project or module is 7 or higher." + "text": "Reports calls to 'abstract' methods of the current class during object construction. A method is called during object construction if it is inside a: Constructor Non-static instance initializer Non-static field initializer 'clone()' method 'readObject()' method 'readObjectNoData()' method Such calls may result in subtle bugs, as object initialization may happen before the method call. Example: 'abstract class Parent {\n abstract void abstractMethod();\n }\n\n class Child extends Parent {\n Child() {\n abstractMethod();\n }\n }' This inspection shares the functionality with the following inspections: Overridable method called during object construction Overridden method called during object construction Only one inspection should be enabled at once to prevent warning duplication.", + "markdown": "Reports calls to `abstract` methods of the current class during object construction.\n\nA method is called during object construction if it is inside a:\n\n* Constructor\n* Non-static instance initializer\n* Non-static field initializer\n* `clone()` method\n* `readObject()` method\n* `readObjectNoData()` method\n\nSuch calls may result in subtle bugs, as object initialization may happen before the method call.\n\n**Example:**\n\n\n abstract class Parent {\n abstract void abstractMethod();\n }\n\n class Child extends Parent {\n Child() {\n abstractMethod();\n }\n }\n\nThis inspection shares the functionality with the following inspections:\n\n* Overridable method called during object construction\n* Overridden method called during object construction\n\nOnly one inspection should be enabled at once to prevent warning duplication." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 7", - "index": 121, + "id": "Java/Initialization", + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -9362,17 +8847,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -9396,17 +8878,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -9424,23 +8903,20 @@ }, "fullDescription": { "text": "Reports usages of Preview Feature APIs, i.e. of a module, package, class, interface, method, constructor, field, or enum constant in the 'java.*' or 'javax.*' namespace annotated with '@PreviewFeature'. A preview feature is a new feature of the Java language, Java Virtual Machine, or Java SE API that is fully specified, fully implemented, and is yet impermanent. The notion of a preview feature is defined in JEP 12. If some piece of code depends on a preview API, it may stop compiling in future JDK versions if the feature is changed or removed. The inspection only reports if the language level of the project or module is Preview. New in 2021.1", - "markdown": "Reports usages of Preview Feature APIs, i.e. of a module, package, class, interface, method, constructor, field, or enum constant in the `java.*` or `javax.*` namespace annotated with `@PreviewFeature`.\n\n\nA preview feature is a new feature of the Java language, Java Virtual Machine, or Java SE API that is fully specified, fully implemented,\nand is yet impermanent. The notion of a preview feature is defined in [JEP 12](https://openjdk.java.net/jeps/12).\n\n\nIf some piece of code depends on a preview API, it may stop compiling in future JDK versions if the feature is changed or removed.\n\nThe inspection only reports if the language level of the project or module is **Preview**.\n\nNew in 2021.1" + "markdown": "Reports usages of Preview Feature APIs, i.e. of a module, package, class, interface, method, constructor, field, or enum constant in the `java.*` or `javax.*` namespace annotated with `@PreviewFeature`.\n\n\nA preview feature is a new feature of the Java language, Java Virtual Machine, or Java SE API that is fully specified, fully implemented,\nand is yet impermanent. The notion of a preview feature is defined in [JEP 12](https://openjdk.org/jeps/12).\n\n\nIf some piece of code depends on a preview API, it may stop compiling in future JDK versions if the feature is changed or removed.\n\nThe inspection only reports if the language level of the project or module is **Preview**.\n\nNew in 2021.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Compiler issues", - "index": 122, + "index": 131, "toolComponent": { "name": "QDJVM" } @@ -9464,17 +8940,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -9498,17 +8971,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -9532,17 +9002,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -9566,17 +9033,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -9600,17 +9064,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -9634,10 +9095,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -9668,17 +9126,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -9702,17 +9157,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -9736,17 +9188,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -9770,17 +9219,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -9792,29 +9238,26 @@ ] }, { - "id": "CommentedOutCode", + "id": "SortedCollectionWithNonComparableKeys", "shortDescription": { - "text": "Commented out code" + "text": "Sorted collection with non-comparable elements" }, "fullDescription": { - "text": "Reports comments that contain Java code. Usually, code that is commented out gets outdated very quickly and becomes misleading. As most projects use some kind of version control system, it is better to delete commented out code completely and use the VCS history instead. New in 2020.3", - "markdown": "Reports comments that contain Java code.\n\nUsually, code that is commented out gets outdated very quickly and becomes misleading.\nAs most projects use some kind of version control system,\nit is better to delete commented out code completely and use the VCS history instead.\n\nNew in 2020.3" + "text": "Reports construction of sorted collections, for example 'TreeSet', that rely on natural ordering, whose element type doesn't implement the 'Comparable' interface. It's unlikely that such a collection will work properly. A false positive is possible if the collection element type is a non-comparable super-type, but the collection is intended to only hold comparable sub-types. Even if this is the case, it's better to narrow the collection element type or declare the super-type as 'Comparable' because the mentioned approach is error-prone. The inspection also reports cases when the collection element is a type parameter which is not declared as 'extends Comparable'. You can suppress the warnings on type parameters using the provided option (for example, to keep the API compatibility). New in 2018.3", + "markdown": "Reports construction of sorted collections, for example `TreeSet`, that rely on natural ordering, whose element type doesn't implement the `Comparable` interface.\n\nIt's unlikely that such a collection will work properly.\n\n\nA false positive is possible if the collection element type is a non-comparable super-type,\nbut the collection is intended to only hold comparable sub-types. Even if this is the case,\nit's better to narrow the collection element type or declare the super-type as `Comparable` because the mentioned approach is error-prone.\n\n\nThe inspection also reports cases when the collection element is a type parameter which is not declared as `extends Comparable`.\nYou can suppress the warnings on type parameters using the provided option (for example, to keep the API compatibility).\n\n\nNew in 2018.3" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code maturity", - "index": 41, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -9826,29 +9269,26 @@ ] }, { - "id": "SortedCollectionWithNonComparableKeys", + "id": "CommentedOutCode", "shortDescription": { - "text": "Sorted collection with non-comparable elements" + "text": "Commented out code" }, "fullDescription": { - "text": "Reports construction of sorted collections, for example 'TreeSet', that rely on natural ordering, whose element type doesn't implement the 'Comparable' interface. It's unlikely that such a collection will work properly. A false positive is possible if the collection element type is a non-comparable super-type, but the collection is intended to only hold comparable sub-types. Even if this is the case, it's better to narrow the collection element type or declare the super-type as 'Comparable' because the mentioned approach is error-prone. The inspection also reports cases when the collection element is a type parameter which is not declared as 'extends Comparable'. You can suppress the warnings on type parameters using the provided option (for example, to keep the API compatibility). New in 2018.3", - "markdown": "Reports construction of sorted collections, for example `TreeSet`, that rely on natural ordering, whose element type doesn't implement the `Comparable` interface.\n\nIt's unlikely that such a collection will work properly.\n\n\nA false positive is possible if the collection element type is a non-comparable super-type,\nbut the collection is intended to only hold comparable sub-types. Even if this is the case,\nit's better to narrow the collection element type or declare the super-type as `Comparable` because the mentioned approach is error-prone.\n\n\nThe inspection also reports cases when the collection element is a type parameter which is not declared as `extends Comparable`.\nYou can suppress the warnings on type parameters using the provided option (for example, to keep the API compatibility).\n\n\nNew in 2018.3" + "text": "Reports comments that contain Java code. Usually, code that is commented out gets outdated very quickly and becomes misleading. As most projects use some kind of version control system, it is better to delete commented out code completely and use the VCS history instead. New in 2020.3", + "markdown": "Reports comments that contain Java code.\n\nUsually, code that is commented out gets outdated very quickly and becomes misleading.\nAs most projects use some kind of version control system,\nit is better to delete commented out code completely and use the VCS history instead.\n\nNew in 2020.3" }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Code maturity", + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -9872,17 +9312,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -9906,17 +9343,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Memory", - "index": 126, + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -9940,17 +9374,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -9974,17 +9405,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -10008,17 +9436,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -10042,17 +9467,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 10", - "index": 120, + "index": 129, "toolComponent": { "name": "QDJVM" } @@ -10076,17 +9498,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -10110,17 +9529,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -10144,17 +9560,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -10178,10 +9591,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -10212,17 +9622,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -10246,10 +9653,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -10280,10 +9684,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -10314,17 +9715,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -10348,10 +9746,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -10372,7 +9767,7 @@ { "id": "JavaReflectionMemberAccess", "shortDescription": { - "text": "Reflective access to nonexistent/not visible class member" + "text": "Reflective access to non-existent or not visible class member" }, "fullDescription": { "text": "Reports reflective access to fields and methods that don't exist or aren't visible. Example: 'Field stringHashField() throws NoSuchFieldException {\n return String.class.getField(\"hash\");\n }' After the quick-fix is applied: 'Field stringHashField() throws NoSuchFieldException {\n return String.class.getDeclaredField(\"hash\");\n }' With a 'final' class, it's clear if there is a field or method with the specified name in the class. With non-'final' classes, it's possible that a subclass has a field or method with that name, so there could be false positives. Use the inspection's settings to get rid of such false positives everywhere or with specific classes. New in 2017.2", @@ -10382,17 +9777,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Reflective access", - "index": 98, + "index": 107, "toolComponent": { "name": "QDJVM" } @@ -10409,24 +9801,21 @@ "text": "Null-check method is called with obviously non-null argument" }, "fullDescription": { - "text": "Reports if a null-checking method (for example, 'Objects.requireNonNull' or 'Assert.assertNotNull') is called on the value that is obviously non-null (for example, a newly created object). Such a check is redundant and may indicate a programming error. New in 2017.2", - "markdown": "Reports if a null-checking method (for example, `Objects.requireNonNull` or `Assert.assertNotNull`) is called on the value that is obviously non-null (for example, a newly created object). Such a check is redundant and may indicate a programming error.\n\nNew in 2017.2" + "text": "Reports if a null-checking method (for example, 'Objects.requireNonNull' or 'Assert.assertNotNull') is called on a value that is obviously non-null (for example, a newly created object). Such a check is redundant and may indicate a programming error. Example: 'final String greeting = Objects.requireNonNull(\"Hi!\");' After the quick-fix is applied: 'final String greeting = \"Hi!\";' New in 2017.2", + "markdown": "Reports if a null-checking method (for example, `Objects.requireNonNull` or `Assert.assertNotNull`) is called on a value that is obviously non-null (for example, a newly created object). Such a check is redundant and may indicate a programming error.\n\n**Example:**\n\n\n final String greeting = Objects.requireNonNull(\"Hi!\");\n\nAfter the quick-fix is applied:\n\n\n final String greeting = \"Hi!\";\n\nNew in 2017.2" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -10450,17 +9839,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -10484,17 +9870,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -10518,17 +9901,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -10552,17 +9932,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -10586,17 +9963,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -10620,17 +9994,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -10647,17 +10018,14 @@ "text": "Suspicious regex expression argument" }, "fullDescription": { - "text": "Reports calls to 'String.replaceAll()' or 'String.split()' where the first argument is a single regex meta character argument. The regex meta characters are one of '.$|()[{^?*+\\'. They have a special meaning in regular expressions. For example, calling '\"ab.cd\".replaceAll(\".\", \"-\")' produces '\"-----\"', because the dot matches any character. Most likely the escaped variant '\"\\\\.\"' was intended instead. Example: 's.replaceAll(\".\", \"-\");' After the quick-fix is applied: 's.replaceAll(\"\\\\.\", \"-\");'", - "markdown": "Reports calls to `String.replaceAll()` or `String.split()` where the first argument is a single regex meta character argument.\n\n\nThe regex meta characters are one of `.$|()[{^?*+\\`. They have a special meaning in regular expressions.\nFor example, calling `\"ab.cd\".replaceAll(\".\", \"-\")` produces `\"-----\"`, because the dot matches any character.\nMost likely the escaped variant `\"\\\\.\"` was intended instead.\n\n**Example:**\n\n\n s.replaceAll(\".\", \"-\");\n\nAfter the quick-fix is applied:\n\n\n s.replaceAll(\"\\\\.\", \"-\");\n" + "text": "Reports calls to 'String.replaceAll()' or 'String.split()' where the first argument is a single regex meta character argument. The regex meta characters are one of '.$|()[{^?*+\\'. They have a special meaning in regular expressions. For example, calling '\"ab.cd\".replaceAll(\".\", \"-\")' produces '\"-----\"', because the dot matches any character. Most likely the escaped variant '\"\\\\.\"' was intended instead. Using 'File.separator' as a regex is also reported. The 'File.separator' has a platform specific value. It equals to '/' on Linux and Mac but equals to '\\' on Windows, which is not a valid regular expression, so such code is not portable. Example: 's.replaceAll(\".\", \"-\");' After the quick-fix is applied: 's.replaceAll(\"\\\\.\", \"-\");'", + "markdown": "Reports calls to `String.replaceAll()` or `String.split()` where the first argument is a single regex meta character argument.\n\n\nThe regex meta characters are one of `.$|()[{^?*+\\`. They have a special meaning in regular expressions.\nFor example, calling `\"ab.cd\".replaceAll(\".\", \"-\")` produces `\"-----\"`, because the dot matches any character.\nMost likely the escaped variant `\"\\\\.\"` was intended instead.\n\n\nUsing `File.separator` as a regex is also reported. The `File.separator` has a platform specific value. It\nequals to `/` on Linux and Mac but equals to `\\` on Windows, which is not a valid regular expression, so\nsuch code is not portable.\n\n**Example:**\n\n\n s.replaceAll(\".\", \"-\");\n\nAfter the quick-fix is applied:\n\n\n s.replaceAll(\"\\\\.\", \"-\");\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -10688,17 +10056,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -10722,17 +10087,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -10756,10 +10118,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -10780,27 +10139,24 @@ { "id": "TrailingWhitespacesInTextBlock", "shortDescription": { - "text": "Trailing whitespaces in text block" + "text": "Trailing whitespace in text block" }, "fullDescription": { - "text": "Reports text blocks with trailing whitespaces. Trailing whitespaces are considered incidental and stripped away by the Java compiler. This inspection only reports if the language level of the project or module is 15 or higher. New in 2021.1", - "markdown": "Reports text blocks with trailing whitespaces.\n\nTrailing whitespaces are considered incidental and stripped away by the Java compiler.\n\nThis inspection only reports if the language level of the project or module is 15 or higher.\n\nNew in 2021.1" + "text": "Reports text blocks with trailing whitespace characters. Trailing whitespace is considered incidental and will be stripped away by the Java compiler. This inspection only reports if the language level of the project or module is 15 or higher. New in 2021.1", + "markdown": "Reports text blocks with trailing whitespace characters. Trailing whitespace is considered incidental and will be stripped away by the Java compiler.\n\nThis inspection only reports if the language level of the project or module is 15 or higher.\n\nNew in 2021.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 15", - "index": 34, + "id": "Java/Java language level migration aids/Code style issues", + "index": 137, "toolComponent": { "name": "QDJVM" } @@ -10824,17 +10180,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Class", - "index": 57, + "index": 64, "toolComponent": { "name": "QDJVM" } @@ -10851,24 +10204,21 @@ "text": "'compare()' method can be used to compare numbers" }, "fullDescription": { - "text": "Reports cases where the static 'Integer.compare()' method or similar methods can be used instead of more verbose or less efficient constructs. If 'x' and 'y' are already boxed integers, then 'x.compareTo(y)' is suggested. Example: 'public int compare(int x, int y) {\n return x > y ? 1 : x < y ? -1 : 0;\n }' After the quick-fix is applied: 'public int compare(int x, int y) {\n return Integer.compare(x, y);\n }' Note that 'Double.compare' and 'Float.compare' slightly change the code semantics. In particular, they make '-0.0' and '0.0' distinguishable ('Double.compare(-0.0, 0.0)' yields -1). Also, they consistently process 'NaN' value. In most of the cases, this semantics change actually improves the code. Use the checkbox to disable this inspection for floating point numbers if semantics change is unacceptable in your case. New in 2017.2", - "markdown": "Reports cases where the static `Integer.compare()` method or similar methods can be used instead of more verbose or less efficient constructs.\n\nIf `x` and `y` are already boxed integers, then `x.compareTo(y)` is suggested.\n\n**Example:**\n\n\n public int compare(int x, int y) {\n return x > y ? 1 : x < y ? -1 : 0;\n }\n\nAfter the quick-fix is applied:\n\n\n public int compare(int x, int y) {\n return Integer.compare(x, y);\n }\n\n\nNote that `Double.compare` and `Float.compare` slightly change the code semantics. In particular,\nthey make `-0.0` and `0.0` distinguishable (`Double.compare(-0.0, 0.0)` yields -1).\nAlso, they consistently process `NaN` value. In most of the cases, this semantics change actually improves the\ncode. Use the checkbox to disable this inspection for floating point numbers if semantics change is unacceptable\nin your case.\n\nNew in 2017.2" + "text": "Reports expressions that can be replaced by a call to the 'Integer.compare()' method or a similar method from the 'Long', 'Short', 'Byte', 'Double' or 'Float' classes, instead of more verbose or less efficient constructs. If 'x' and 'y' are boxed integers, then 'x.compareTo(y)' is suggested, if they are primitives 'Integer.compare(x, y)' is suggested. Example: 'public int compare(int x, int y) {\n return x > y ? 1 : x < y ? -1 : 0;\n }' After the quick-fix is applied: 'public int compare(int x, int y) {\n return Integer.compare(x, y);\n }' Note that 'Double.compare' and 'Float.compare' slightly change the code semantics. In particular, they make '-0.0' and '0.0' distinguishable ('Double.compare(-0.0, 0.0)' yields -1). Also, they consistently process 'NaN' value. In most of the cases, this semantics change actually improves the code. Use the checkbox to disable this inspection for floating point numbers if semantics change is unacceptable in your case. New in 2017.2", + "markdown": "Reports expressions that can be replaced by a call to the `Integer.compare()` method or a similar method from the `Long`, `Short`, `Byte`, `Double` or `Float` classes, instead of more verbose or less efficient constructs.\n\nIf `x` and `y` are boxed integers, then `x.compareTo(y)` is suggested,\nif they are primitives `Integer.compare(x, y)` is suggested.\n\n**Example:**\n\n\n public int compare(int x, int y) {\n return x > y ? 1 : x < y ? -1 : 0;\n }\n\nAfter the quick-fix is applied:\n\n\n public int compare(int x, int y) {\n return Integer.compare(x, y);\n }\n\n\nNote that `Double.compare` and `Float.compare` slightly change the code semantics. In particular,\nthey make `-0.0` and `0.0` distinguishable (`Double.compare(-0.0, 0.0)` yields -1).\nAlso, they consistently process `NaN` value. In most of the cases, this semantics change actually improves the\ncode. Use the checkbox to disable this inspection for floating point numbers if semantics change is unacceptable\nin your case.\n\nNew in 2017.2" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -10885,17 +10235,14 @@ "text": "Field assignment can be moved to initializer" }, "fullDescription": { - "text": "Suggests replacing initializations of a field via assignment with field initializers. The code is highlighted only if the field initializer is located in the initializer, and joining it with the field declaration is likely to be safe. In other cases, the inspection provides a quick-fix without code highlighting, as the fix may change the code semantics. Example: 'class MyClass {\n static final int intConstant;\n \n static {\n intConstant = 10;\n }\n }' The quick fix moves the assigned value to the field initializer removing the class initializer section if possible: 'class MyClass {\n static final int intConstant = 10;\n }' Since 2017.2", - "markdown": "Suggests replacing initializations of a field via assignment with field initializers.\n\nThe code is highlighted only if the field initializer is located in the initializer, and\njoining it with the field declaration is likely to be safe.\nIn other cases, the inspection provides a quick-fix without code highlighting, as the fix may change the code semantics.\n\nExample:\n\n\n class MyClass {\n static final int intConstant;\n \n static {\n intConstant = 10;\n }\n }\n\nThe quick fix moves the assigned value to the field initializer removing the class initializer section if possible:\n\n\n class MyClass {\n static final int intConstant = 10;\n }\n\nSince 2017.2" + "text": "Suggests replacing initialization of fields using assignment with initialization in the field declaration. Only reports if the field assignment is located in an instance or static initializer, and joining it with the field declaration is likely to be safe. In other cases, like assignment inside a constructor, the quick-fix is provided without highlighting, as the fix may change the semantics. Example: 'class MyClass {\n static final int intConstant;\n \n static {\n intConstant = 10;\n }\n }' The quick fix moves the assigned value to the field initializer removing the class initializer if possible: 'class MyClass {\n static final int intConstant = 10;\n }' Since 2017.2", + "markdown": "Suggests replacing initialization of fields using assignment with initialization in the field declaration.\n\nOnly reports if the field assignment is located in an instance or static initializer, and\njoining it with the field declaration is likely to be safe.\nIn other cases, like assignment inside a constructor, the quick-fix is provided without highlighting,\nas the fix may change the semantics.\n\nExample:\n\n\n class MyClass {\n static final int intConstant;\n \n static {\n intConstant = 10;\n }\n }\n\nThe quick fix moves the assigned value to the field initializer removing the class initializer if possible:\n\n\n class MyClass {\n static final int intConstant = 10;\n }\n\nSince 2017.2" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -10926,10 +10273,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -10960,17 +10304,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -10994,17 +10335,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -11028,10 +10366,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -11050,6 +10385,37 @@ ] }, { + "id": "NegativeIntConstantInLongContext", + "shortDescription": { + "text": "Negative int hexadecimal constant in long context" + }, + "fullDescription": { + "text": "Reports negative int hexadecimal constants in long context. Such constants are implicitly widened to long, which means their higher bits will become 1 rather than 0 (e.g., 0xFFFF_FFFF will become 0xFFFF_FFFF_FFFF_FFFFL). Unlikely this is intended, and even if it is, using an explicit long constant would be less confusing. Example: '// Warning: this is int constant -1 which is widened to long\n // becoming 0xFFFF_FFFF_FFFF_FFFFL.\n long mask = 0xFFFF_FFFF;' New in 2022.3", + "markdown": "Reports negative int hexadecimal constants in long context. Such constants are implicitly widened to long, which means their higher bits will become 1 rather than 0 (e.g., 0xFFFF_FFFF will become 0xFFFF_FFFF_FFFF_FFFFL). Unlikely this is intended, and even if it is, using an explicit long constant would be less confusing.\n\n**Example:**\n\n\n // Warning: this is int constant -1 which is widened to long\n // becoming 0xFFFF_FFFF_FFFF_FFFFL.\n long mask = 0xFFFF_FFFF;\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Numeric issues", + "index": 28, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "DefaultAnnotationParam", "shortDescription": { "text": "Default annotation parameter value" @@ -11062,17 +10428,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -11089,24 +10452,21 @@ "text": "'while' loop spins on field" }, "fullDescription": { - "text": "Reports 'while' loops that spin on the value of a non-'volatile' field, waiting for it to be changed by another thread. In addition to being potentially extremely CPU intensive when little work is done inside the loop, such loops are likely to have different semantics from what was intended. The Java Memory Model allows such loop to never complete even if another thread changes the field's value. Example: 'class SpinsOnField {\n boolean ready = false;\n\n void run() {\n while (!ready) { // the loop may never complete even after markAsReady call\n // from the other thread\n }\n // do some work\n }\n\n void markAsReady() {\n ready = true;\n }\n }' Additionally, since Java 9 it's recommended to call 'Thread.onSpinWait()' inside a spin loop on a 'volatile' field, which may significantly improve performance on some hardware. Use the inspection options to only report empty 'while' loops.", - "markdown": "Reports `while` loops that spin on the value of a non-`volatile` field, waiting for it to be changed by another thread.\n\n\nIn addition to being potentially extremely CPU intensive when little work is done inside the loop, such\nloops are likely to have different semantics from what was intended. The Java Memory Model allows such loop to never complete even\nif another thread changes the field's value.\n\n**Example:**\n\n\n class SpinsOnField {\n boolean ready = false;\n\n void run() {\n while (!ready) { // the loop may never complete even after markAsReady call\n // from the other thread\n }\n // do some work\n }\n\n void markAsReady() {\n ready = true;\n }\n }\n\n\nAdditionally, since Java 9 it's recommended to call `Thread.onSpinWait()` inside a spin loop\non a `volatile` field, which may significantly improve performance on some hardware.\n\n\nUse the inspection options to only report empty `while` loops." + "text": "Reports 'while' loops that spin on the value of a non-'volatile' field, waiting for it to be changed by another thread. In addition to being potentially extremely CPU intensive when little work is done inside the loop, such loops are likely to have different semantics from what was intended. The Java Memory Model allows such loops to never complete even if another thread changes the field's value. Additionally, since Java 9 it's recommended to call 'Thread.onSpinWait()' inside a spin loop on a 'volatile' field, which may significantly improve performance on some hardware. Example: 'class SpinsOnField {\n boolean ready = false;\n\n void run() {\n while (!ready) {\n }\n // do some work\n }\n\n void markAsReady() {\n ready = true;\n }\n }' After the quick-fix is applied: 'class SpinsOnField {\n volatile boolean ready = false;\n\n void run() {\n while (!ready) {\n Thread.onSpinWait();\n }\n // do some work\n }\n\n void markAsReady() {\n ready = true;\n }\n }' Use the inspection options to only report empty 'while' loops.", + "markdown": "Reports `while` loops that spin on the value of a non-`volatile` field, waiting for it to be changed by another thread.\n\n\nIn addition to being potentially extremely CPU intensive when little work is done inside the loop, such\nloops are likely to have different semantics from what was intended.\nThe Java Memory Model allows such loops to never complete even if another thread changes the field's value.\n\n\nAdditionally, since Java 9 it's recommended to call `Thread.onSpinWait()` inside a spin loop\non a `volatile` field, which may significantly improve performance on some hardware.\n\n**Example:**\n\n\n class SpinsOnField {\n boolean ready = false;\n\n void run() {\n while (!ready) {\n }\n // do some work\n }\n\n void markAsReady() {\n ready = true;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class SpinsOnField {\n volatile boolean ready = false;\n\n void run() {\n while (!ready) {\n Thread.onSpinWait();\n }\n // do some work\n }\n\n void markAsReady() {\n ready = true;\n }\n }\n\n\nUse the inspection options to only report empty `while` loops." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -11130,17 +10490,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -11164,17 +10521,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -11198,17 +10552,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -11232,17 +10583,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -11266,10 +10614,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -11300,17 +10645,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Imports", - "index": 21, + "index": 22, "toolComponent": { "name": "QDJVM" } @@ -11334,10 +10676,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -11356,29 +10695,26 @@ ] }, { - "id": "OptionalIsPresent", + "id": "RedundantOperationOnEmptyContainer", "shortDescription": { - "text": "Non functional style 'Optional.isPresent()' usage" + "text": "Redundant operation on empty container" }, "fullDescription": { - "text": "Reports conditions, like 'if(Optional.isPresent())', that can be rewritten in the functional style, as it is shorter and easier to read. Example: 'if (str.isPresent()) str.get().trim();' After the quick-fix is applied: 'str.ifPresent(String::trim);' This inspection only reports if the language level of the project or module is 8 or higher.", - "markdown": "Reports conditions, like `if(Optional.isPresent())`, that can be rewritten in the functional style, as it is shorter and easier to read.\n\nExample:\n\n\n if (str.isPresent()) str.get().trim();\n\nAfter the quick-fix is applied:\n\n\n str.ifPresent(String::trim);\n\nThis inspection only reports if the language level of the project or module is 8 or higher." + "text": "Reports redundant operations on empty collections, maps or arrays. Iterating, removing elements, sorting, and some other operations on empty collections have no effect and can be removed. Also, they may be a signal of a bug. Example: 'if (numbers.isEmpty()){\n //error due to the missed negation\n int max = numbers.stream().max(Comparator.naturalOrder()).get();\n ...\n }' New in 2019.1", + "markdown": "Reports redundant operations on empty collections, maps or arrays.\n\n\nIterating, removing elements, sorting,\nand some other operations on empty collections have no effect and can be removed. Also, they may be a signal of a bug.\n\n**Example:**\n\n\n if (numbers.isEmpty()){\n //error due to the missed negation\n int max = numbers.stream().max(Comparator.naturalOrder()).get();\n ...\n }\n\nNew in 2019.1" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -11390,29 +10726,26 @@ ] }, { - "id": "RedundantOperationOnEmptyContainer", + "id": "OptionalIsPresent", "shortDescription": { - "text": "Redundant operation on empty container" + "text": "Non functional style 'Optional.isPresent()' usage" }, "fullDescription": { - "text": "Reports redundant operations on empty collections, maps or arrays. Iterating, removing elements, sorting, and some other operations on empty collections have no effect and can be removed. Also, they may be a signal of a bug. Example: 'if (numbers.isEmpty()){\n //error due to the missed negation\n int max = numbers.stream().max(Comparator.naturalOrder()).get();\n ...\n }' New in 2019.1", - "markdown": "Reports redundant operations on empty collections, maps or arrays.\n\n\nIterating, removing elements, sorting,\nand some other operations on empty collections have no effect and can be removed. Also, they may be a signal of a bug.\n\n**Example:**\n\n\n if (numbers.isEmpty()){\n //error due to the missed negation\n int max = numbers.stream().max(Comparator.naturalOrder()).get();\n ...\n }\n\nNew in 2019.1" + "text": "Reports conditions, like 'if(Optional.isPresent())' or 'if(Optional.isEmpty())', that can be rewritten in the functional style, as it is shorter and easier to read. Example: 'if (str.isPresent()) str.get().trim();' After the quick-fix is applied: 'str.ifPresent(String::trim);' This inspection only reports if the language level of the project or module is 8 or higher.", + "markdown": "Reports conditions, like `if(Optional.isPresent())` or `if(Optional.isEmpty())`, that can be rewritten in the functional style, as it is shorter and easier to read.\n\nExample:\n\n\n if (str.isPresent()) str.get().trim();\n\nAfter the quick-fix is applied:\n\n\n str.ifPresent(String::trim);\n\nThis inspection only reports if the language level of the project or module is 8 or higher." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -11436,17 +10769,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -11470,17 +10800,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -11504,17 +10831,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -11538,10 +10862,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -11572,17 +10893,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -11606,17 +10924,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -11640,17 +10955,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -11674,10 +10986,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -11708,17 +11017,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -11742,17 +11048,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -11776,10 +11079,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -11800,27 +11100,24 @@ { "id": "BulkFileAttributesRead", "shortDescription": { - "text": "Bulk 'Files.readAttributes' call can be used instead of multiple file attribute calls" + "text": "Bulk 'Files.readAttributes()' call can be used" }, "fullDescription": { - "text": "Reports multiple 'java.io.File' attribute checks in a row, such as: 'isDirectory' 'isFile' 'lastModified' 'length' These calls can be replaced with a bulk 'Files.readAttributes' call. Usually the bulk method is more performant then multiple attribute checks. Example: 'boolean isNewFile(File file, long lastModified) throws IOException {\n return file.isFile() && file.lastModified() > lastModified;\n}' After the quick-fix is applied: 'boolean isNewFile(File file, long lastModified) throws IOException {\n BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);\n return fileAttributes.isRegularFile() && fileAttributes.lastModifiedTime().toMillis() > lastModified;\n}' This inspection does not show a warning if 'IOException' is not handled in the current context, but the quick-fix is still available. Note that the replacements are usually not completely equivalent and should be applied with care. In particular, the behavior could differ if the file does not exist at all. This inspection only reports if the language level of the project or module is 7 or higher. New in 2022.1", - "markdown": "Reports multiple `java.io.File` attribute checks in a row, such as:\n\n* `isDirectory`\n* `isFile`\n* `lastModified`\n* `length`\n\nThese calls can be replaced with a bulk `Files.readAttributes` call. Usually the bulk method is more performant then multiple attribute checks.\n\nExample:\n\n\n boolean isNewFile(File file, long lastModified) throws IOException {\n return file.isFile() && file.lastModified() > lastModified;\n }\n\nAfter the quick-fix is applied:\n\n\n boolean isNewFile(File file, long lastModified) throws IOException {\n BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);\n return fileAttributes.isRegularFile() && fileAttributes.lastModifiedTime().toMillis() > lastModified;\n }\n\nThis inspection does not show a warning if `IOException` is not handled in the current context, but the quick-fix is still available.\n\nNote that the replacements are usually not completely equivalent and should be applied with care. In particular, the behavior could differ if\nthe file does not exist at all.\n\nThis inspection only reports if the language level of the project or module is 7 or higher.\n\nNew in 2022.1" + "text": "Reports multiple sequential 'java.io.File' attribute checks, such as: 'isDirectory()' 'isFile()' 'lastModified()' 'length()' Such calls can be replaced with a bulk 'Files.readAttributes()' call. This is usually more performant then multiple separate attribute checks. Example: 'boolean isNewFile(File file, long lastModified) throws IOException {\n return file.isFile() && file.lastModified() > lastModified;\n }' After the quick-fix is applied: 'boolean isNewFile(File file, long lastModified) throws IOException {\n BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);\n return fileAttributes.isRegularFile() && fileAttributes.lastModifiedTime().toMillis() > lastModified;\n }' This inspection does not show a warning if 'IOException' is not handled in the current context, but the quick-fix is still available. Note that the replacements are usually not completely equivalent and should be applied with care. In particular, the behavior could differ if the file does not exist at all. This inspection only reports if the language level of the project or module is 7 or higher. New in 2022.1", + "markdown": "Reports multiple sequential `java.io.File` attribute checks, such as:\n\n* `isDirectory()`\n* `isFile()`\n* `lastModified()`\n* `length()`\n\nSuch calls can be replaced with a bulk `Files.readAttributes()` call. This is usually more performant then multiple separate attribute checks.\n\nExample:\n\n\n boolean isNewFile(File file, long lastModified) throws IOException {\n return file.isFile() && file.lastModified() > lastModified;\n }\n\nAfter the quick-fix is applied:\n\n\n boolean isNewFile(File file, long lastModified) throws IOException {\n BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);\n return fileAttributes.isRegularFile() && fileAttributes.lastModifiedTime().toMillis() > lastModified;\n }\n\nThis inspection does not show a warning if `IOException` is not handled in the current context, but the quick-fix is still available.\n\nNote that the replacements are usually not completely equivalent and should be applied with care. In particular, the behavior could differ if\nthe file does not exist at all.\n\nThis inspection only reports if the language level of the project or module is 7 or higher.\n\nNew in 2022.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -11832,29 +11129,26 @@ ] }, { - "id": "WhileCanBeForeach", + "id": "ImplicitNumericConversion", "shortDescription": { - "text": "'while' loop can be replaced with enhanced 'for' loop" + "text": "Implicit numeric conversion" }, "fullDescription": { - "text": "Reports 'while' loops that iterate over collections and can be replaced with enhanced 'for' loops (foreach iteration syntax). Example: 'Iterator it = c.iterator();\n while(it.hasNext()) {\n Object obj = it.next();\n System.out.println(obj);\n }' Can be replaced with: 'for (Object obj : c) {\n System.out.println(obj);\n }' This inspection only reports if the language level of the project or module is 5 or higher.", - "markdown": "Reports `while` loops that iterate over collections and can be replaced with enhanced `for` loops (foreach iteration syntax).\n\n**Example:**\n\n\n Iterator it = c.iterator();\n while(it.hasNext()) {\n Object obj = it.next();\n System.out.println(obj);\n }\n\nCan be replaced with:\n\n\n for (Object obj : c) {\n System.out.println(obj);\n }\n\nThis inspection only reports if the language level of the project or module is 5 or higher." + "text": "Reports implicit conversion between numeric types. Implicit numeric conversion is not a problem in itself but, if unexpected, may cause difficulties when tracing bugs. Example: 'double m(int i) {\n return i * 10;\n }' After the quick-fix is applied: 'double m(int i) {\n return (double) (i * 10);\n }' Configure the inspection: Use the Ignore widening conversions option to ignore implicit conversion that cannot result in data loss (for example, 'int'->'long'). Use the Ignore conversions from and to 'char' option to ignore conversion from and to 'char'. The inspection will still report conversion from and to floating-point numbers. Use the Ignore conversion from constants and literals to make the inspection ignore conversion from literals and compile-time constants.", + "markdown": "Reports implicit conversion between numeric types.\n\nImplicit numeric conversion is not a problem in itself but, if unexpected, may cause difficulties when tracing bugs.\n\n**Example:**\n\n\n double m(int i) {\n return i * 10;\n }\n\nAfter the quick-fix is applied:\n\n\n double m(int i) {\n return (double) (i * 10);\n }\n\nConfigure the inspection:\n\n* Use the **Ignore widening conversions** option to ignore implicit conversion that cannot result in data loss (for example, `int`-\\>`long`).\n* Use the **Ignore conversions from and to 'char'** option to ignore conversion from and to `char`. The inspection will still report conversion from and to floating-point numbers.\n* Use the **Ignore conversion from constants and literals** to make the inspection ignore conversion from literals and compile-time constants." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "id": "Java/Numeric issues", + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -11866,29 +11160,26 @@ ] }, { - "id": "ImplicitNumericConversion", + "id": "WhileCanBeForeach", "shortDescription": { - "text": "Implicit numeric conversion" + "text": "'while' loop can be replaced with enhanced 'for' loop" }, "fullDescription": { - "text": "Reports implicit conversion between numeric types. Implicit numeric conversion is not a problem in itself but, if unexpected, may cause difficulties when tracing bugs. Example: 'double m(int i) {\n return i * 10;\n }' After the quick-fix is applied: 'double m(int i) {\n return (double) (i * 10);\n }' Configure the inspection: Use the Ignore widening conversions option to ignore implicit conversion that cannot result in data loss (for example, 'int'->'long'). Use the Ignore conversions from and to 'char' option to ignore conversion from and to 'char'. The inspection will still report conversion from and to floating-point numbers. Use the Ignore conversion from constants and literals to make the inspection ignore conversion from literals and compile-time constants.", - "markdown": "Reports implicit conversion between numeric types.\n\nImplicit numeric conversion is not a problem in itself but, if unexpected, may cause difficulties when tracing bugs.\n\n**Example:**\n\n\n double m(int i) {\n return i * 10;\n }\n\nAfter the quick-fix is applied:\n\n\n double m(int i) {\n return (double) (i * 10);\n }\n\nConfigure the inspection:\n\n* Use the **Ignore widening conversions** option to ignore implicit conversion that cannot result in data loss (for example, `int`-\\>`long`).\n* Use the **Ignore conversions from and to 'char'** option to ignore conversion from and to `char`. The inspection will still report conversion from and to floating-point numbers.\n* Use the **Ignore conversion from constants and literals** to make the inspection ignore conversion from literals and compile-time constants." + "text": "Reports 'while' loops that iterate over collections and can be replaced with enhanced 'for' loops (foreach iteration syntax). Example: 'Iterator it = c.iterator();\n while(it.hasNext()) {\n Object obj = it.next();\n System.out.println(obj);\n }' Can be replaced with: 'for (Object obj : c) {\n System.out.println(obj);\n }' This inspection only reports if the language level of the project or module is 5 or higher.", + "markdown": "Reports `while` loops that iterate over collections and can be replaced with enhanced `for` loops (foreach iteration syntax).\n\n**Example:**\n\n\n Iterator it = c.iterator();\n while(it.hasNext()) {\n Object obj = it.next();\n System.out.println(obj);\n }\n\nCan be replaced with:\n\n\n for (Object obj : c) {\n System.out.println(obj);\n }\n\nThis inspection only reports if the language level of the project or module is 5 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Numeric issues", - "index": 26, + "id": "Java/Java language level migration aids/Java 5", + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -11912,17 +11203,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Probable bugs/Nullability problems", - "index": 132, + "index": 142, "toolComponent": { "name": "QDJVM" } @@ -11946,10 +11234,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -11980,17 +11265,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -12014,17 +11296,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -12048,17 +11327,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -12082,17 +11358,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Imports", - "index": 21, + "index": 22, "toolComponent": { "name": "QDJVM" } @@ -12116,17 +11389,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -12150,17 +11420,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -12184,17 +11451,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -12218,17 +11482,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -12252,10 +11513,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -12274,6 +11532,37 @@ ] }, { + "id": "InterfaceMethodClashesWithObject", + "shortDescription": { + "text": "Interface method clashes with method in 'Object'" + }, + "fullDescription": { + "text": "Reports interface methods that clash with the protected methods 'clone()' and 'finalize()' from the 'java.lang.Object' class. In an interface, it is possible to declare these methods with a return type that is incompatible with the 'java.lang.Object' methods. A class that implements such an interface will not be compilable. When the interface is functional, it remains possible to create a lambda from it, but this is not recommended. Example: '// Warning: this interface cannot be implemented\n // by any class, only by a lambda or method reference\n interface MyInterface {\n double clone();\n }'", + "markdown": "Reports interface methods that clash with the **protected** methods `clone()` and `finalize()` from the `java.lang.Object` class.\n\nIn an interface, it is possible to declare these methods with a return type that is incompatible with the `java.lang.Object` methods.\nA class that implements such an interface will not be compilable.\nWhen the interface is functional, it remains possible to create a lambda from it, but this is not recommended.\n\nExample:\n\n\n // Warning: this interface cannot be implemented\n // by any class, only by a lambda or method reference\n interface MyInterface {\n double clone();\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Abstraction issues", + "index": 69, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "LoadLibraryWithNonConstantString", "shortDescription": { "text": "Call to 'System.loadLibrary()' with non-constant string" @@ -12286,17 +11575,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -12320,17 +11606,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Test frameworks", - "index": 97, + "index": 106, "toolComponent": { "name": "QDJVM" } @@ -12342,29 +11625,26 @@ ] }, { - "id": "InterfaceMethodClashesWithObject", + "id": "StaticMethodOnlyUsedInOneClass", "shortDescription": { - "text": "Interface method clashes with method in 'Object'" + "text": "Static member only used from one other class" }, "fullDescription": { - "text": "Reports interface methods that clash with the protected methods 'clone()' and 'finalize()' from the 'java.lang.Object' class. In an interface, it is possible to declare these methods with a return type that is incompatible with the 'java.lang.Object' methods. A class that implements such an interface will not be compilable. When the interface is functional, it remains possible to create a lambda from it, but this is not recommended. Example: '// Warning: this interface cannot be implemented\n // by any class, only by a lambda or method reference\n interface MyInterface {\n double clone();\n }'", - "markdown": "Reports interface methods that clash with the **protected** methods `clone()` and `finalize()` from the `java.lang.Object` class.\n\nIn an interface, it is possible to declare these methods with a return type that is incompatible with the `java.lang.Object` methods.\nA class that implements such an interface will not be compilable.\nWhen the interface is functional, it remains possible to create a lambda from it, but this is not recommended.\n\nExample:\n\n\n // Warning: this interface cannot be implemented\n // by any class, only by a lambda or method reference\n interface MyInterface {\n double clone();\n }\n" + "text": "Reports 'static' methods and fields that are only used from a class other than the containing class. Such members could be moved into the using class. Factory methods and members accessed from an anonymous class inside the member's class are ignored by this inspection. Convenience overloads, which call a method with the same name in the same class but have fewer parameters, are also ignored. Use the first checkbox to supress this inspection when the static member is only used from a test class. Use the second checkbox below to ignore member usages from inside anonymous, local, or non-static inner classes. Use the third checkbox below to not warn on members that cannot be moved without problems, for example, because a method with an identical signature is already present in the target class, or because a field or a method used inside the method will not be accessible when this method is moved. Use the fourth checkbox to ignore members located in utility classes.", + "markdown": "Reports `static` methods and fields that are only used from a class other than the containing class. Such members could be moved into the using class. Factory methods and members accessed from an anonymous class inside the member's class are ignored by this inspection. Convenience overloads, which call a method with the same name in the same class but have fewer parameters, are also ignored.\n\n\nUse the first checkbox to supress this inspection when the static member is only used from a test class.\n\n\nUse the second checkbox below to ignore member usages from inside anonymous, local, or non-static inner classes.\n\n\nUse the third checkbox below to not warn on members that cannot be moved without problems,\nfor example, because a method with an identical signature is already present in the target class,\nor because a field or a method used inside the method will not be accessible when this method is moved.\n\n\nUse the fourth checkbox to ignore members located in utility classes." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -12376,29 +11656,26 @@ ] }, { - "id": "StaticMethodOnlyUsedInOneClass", + "id": "RedundantEscapeInRegexReplacement", "shortDescription": { - "text": "Static member only used from one other class" + "text": "Redundant escape in regex replacement string" }, "fullDescription": { - "text": "Reports 'static' methods and fields that are only used from a class other than the containing class. Such members could be moved into the using class. Factory methods and members accessed from an anonymous class inside the member's class are ignored by this inspection. Convenience overloads, which call a method with the same name in the same class but have fewer parameters, are also ignored. Use the first checkbox to supress this inspection when the static member is only used from a test class. Use the second checkbox below to ignore member usages from inside anonymous, local, or non-static inner classes. Use the third checkbox below to not warn on members that cannot be moved without problems, for example, because a method with an identical signature is already present in the target class, or because a field or a method used inside the method will not be accessible when this method is moved. Use the fourth checkbox to ignore members located in utility classes.", - "markdown": "Reports `static` methods and fields that are only used from a class other than the containing class. Such members could be moved into the using class. Factory methods and members accessed from an anonymous class inside the member's class are ignored by this inspection. Convenience overloads, which call a method with the same name in the same class but have fewer parameters, are also ignored.\n\n\nUse the first checkbox to supress this inspection when the static member is only used from a test class.\n\n\nUse the second checkbox below to ignore member usages from inside anonymous, local, or non-static inner classes.\n\n\nUse the third checkbox below to not warn on members that cannot be moved without problems,\nfor example, because a method with an identical signature is already present in the target class,\nor because a field or a method used inside the method will not be accessible when this method is moved.\n\n\nUse the fourth checkbox to ignore members located in utility classes." + "text": "Reports redundant escapes in the replacement string of regex methods. It is possible to escape any character in a regex replacement string, but if a literal '$' or '\\' is required is escaping necessary. Example: 'string.replaceAll(\"a\", \"\\\\b\");' After the quick-fix is applied: 'string.replaceAll(\"a\", \"b\");' New in 2022.3", + "markdown": "Reports redundant escapes in the replacement string of regex methods. It is possible to escape any character in a regex replacement string, but if a literal `$` or `\\` is required is escaping necessary.\n\n**Example:**\n\n\n string.replaceAll(\"a\", \"\\\\b\");\n\nAfter the quick-fix is applied:\n\n\n string.replaceAll(\"a\", \"b\");\n\nNew in 2022.3" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Abstraction issues", - "index": 62, + "id": "Java/Verbose or redundant code constructs", + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -12422,17 +11699,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -12456,17 +11730,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Reflective access", - "index": 98, + "index": 107, "toolComponent": { "name": "QDJVM" } @@ -12490,10 +11761,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -12524,17 +11792,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -12558,17 +11823,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -12592,17 +11854,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -12619,24 +11878,21 @@ "text": "Simplifiable collector" }, "fullDescription": { - "text": "Reports collectors that can be simplified. In particular, some cascaded 'groupingBy' collectors can be expressed by using a simpler 'toMap' collector, which is also likely to be more performant. Example: 'Collectors.groupingByConcurrent(String::length, Collectors.collectingAndThen(Collectors.maxBy(String::compareTo), Optional::get));' After the quick-fix is applied: 'Collectors.toConcurrentMap(String::length, Function.identity(), BinaryOperator.maxBy(String::compareTo));' This inspection only reports if the language level of the project or module is 8 or higher. New in 2017.1", - "markdown": "Reports collectors that can be simplified.\n\nIn particular, some cascaded `groupingBy` collectors can be expressed by using a\nsimpler `toMap` collector, which is also likely to be more performant.\n\nExample:\n\n\n Collectors.groupingByConcurrent(String::length, Collectors.collectingAndThen(Collectors.maxBy(String::compareTo), Optional::get));\n\nAfter the quick-fix is applied:\n\n\n Collectors.toConcurrentMap(String::length, Function.identity(), BinaryOperator.maxBy(String::compareTo));\n\nThis inspection only reports if the language level of the project or module is 8 or higher.\n\nNew in 2017.1" + "text": "Reports collectors that can be simplified. In particular, some cascaded 'groupingBy()' collectors can be expressed by using a simpler 'toMap()' collector, which is also likely to be more performant. Example: 'Collectors.groupingByConcurrent(String::length, Collectors.collectingAndThen(Collectors.maxBy(String::compareTo), Optional::get));' After the quick-fix is applied: 'Collectors.toConcurrentMap(String::length, Function.identity(), BinaryOperator.maxBy(String::compareTo));' This inspection only reports if the language level of the project or module is 8 or higher. New in 2017.1", + "markdown": "Reports collectors that can be simplified.\n\nIn particular, some cascaded `groupingBy()` collectors can be expressed by using a\nsimpler `toMap()` collector, which is also likely to be more performant.\n\nExample:\n\n\n Collectors.groupingByConcurrent(String::length, Collectors.collectingAndThen(Collectors.maxBy(String::compareTo), Optional::get));\n\nAfter the quick-fix is applied:\n\n\n Collectors.toConcurrentMap(String::length, Function.identity(), BinaryOperator.maxBy(String::compareTo));\n\nThis inspection only reports if the language level of the project or module is 8 or higher.\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -12660,17 +11916,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -12694,10 +11947,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -12728,10 +11978,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -12762,17 +12009,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -12796,17 +12040,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -12830,17 +12071,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -12857,24 +12095,21 @@ "text": "'Files.readString()' or 'Files.writeString()' can be used" }, "fullDescription": { - "text": "Reports code fragments that read or write a 'String' as bytes using 'java.nio.file.Files'. These fragments can be replaced with calls to the 'Files.readString()' and 'Files.writeString()' methods introduced in Java 11. Example: 'String s = \"example\";\n Files.write(Paths.get(\"out.txt\"), s.getBytes(StandardCharsets.UTF_8), StandardOpenOption.WRITE);\n s = new String(Files.readAllBytes(Paths.get(\"in.txt\")), StandardCharsets.ISO_8859_1);' After the quick fix is applied: 'String s = \"example\";\n Files.writeString(Paths.get(\"out.txt\"), s, StandardOpenOption.WRITE);\n s = Files.readString(Paths.get(\"in.txt\"), StandardCharsets.ISO_8859_1);' New in 2018.3", - "markdown": "Reports code fragments that read or write a `String` as bytes using `java.nio.file.Files`.\n\nThese fragments can be replaced with calls to the `Files.readString()` and `Files.writeString()` methods introduced in Java 11.\n\n**Example:**\n\n\n String s = \"example\";\n Files.write(Paths.get(\"out.txt\"), s.getBytes(StandardCharsets.UTF_8), StandardOpenOption.WRITE);\n s = new String(Files.readAllBytes(Paths.get(\"in.txt\")), StandardCharsets.ISO_8859_1);\n\nAfter the quick fix is applied:\n\n\n String s = \"example\";\n Files.writeString(Paths.get(\"out.txt\"), s, StandardOpenOption.WRITE);\n s = Files.readString(Paths.get(\"in.txt\"), StandardCharsets.ISO_8859_1);\n\nNew in 2018.3" + "text": "Reports method calls that read or write a 'String' as bytes using 'java.nio.file.Files'. Such calls can be replaced with a call to a 'Files.readString()' or 'Files.writeString()' method introduced in Java 11. Example: 'String s = \"example\";\n Files.write(Paths.get(\"out.txt\"), s.getBytes(StandardCharsets.UTF_8), StandardOpenOption.WRITE);\n s = new String(Files.readAllBytes(Paths.get(\"in.txt\")), StandardCharsets.ISO_8859_1);' After the quick fix is applied: 'String s = \"example\";\n Files.writeString(Paths.get(\"out.txt\"), s, StandardOpenOption.WRITE);\n s = Files.readString(Paths.get(\"in.txt\"), StandardCharsets.ISO_8859_1);' New in 2018.3", + "markdown": "Reports method calls that read or write a `String` as bytes using `java.nio.file.Files`. Such calls can be replaced with a call to a `Files.readString()` or `Files.writeString()` method introduced in Java 11.\n\n**Example:**\n\n\n String s = \"example\";\n Files.write(Paths.get(\"out.txt\"), s.getBytes(StandardCharsets.UTF_8), StandardOpenOption.WRITE);\n s = new String(Files.readAllBytes(Paths.get(\"in.txt\")), StandardCharsets.ISO_8859_1);\n\nAfter the quick fix is applied:\n\n\n String s = \"example\";\n Files.writeString(Paths.get(\"out.txt\"), s, StandardOpenOption.WRITE);\n s = Files.readString(Paths.get(\"in.txt\"), StandardCharsets.ISO_8859_1);\n\nNew in 2018.3" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 11", - "index": 140, + "index": 146, "toolComponent": { "name": "QDJVM" } @@ -12898,17 +12133,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -12932,17 +12164,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -12966,17 +12195,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -13000,17 +12226,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Dependency issues", - "index": 108, + "index": 118, "toolComponent": { "name": "QDJVM" } @@ -13034,17 +12257,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -13068,17 +12288,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -13102,17 +12319,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -13136,17 +12350,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -13158,29 +12369,26 @@ ] }, { - "id": "SuppressionAnnotation", + "id": "UnnecessaryToStringCall", "shortDescription": { - "text": "Inspection suppression annotation" + "text": "Unnecessary call to 'toString()'" }, "fullDescription": { - "text": "Reports comments or annotations suppressing inspections. This inspection can be useful when leaving suppressions intentionally for further review. Example: '@SuppressWarnings(\"unused\")\n static Stream<String> stringProvider() {\n return Stream.of(\"foo\", \"bar\");\n }'", - "markdown": "Reports comments or annotations suppressing inspections.\n\nThis inspection can be useful when leaving suppressions intentionally for further review.\n\n**Example:**\n\n\n @SuppressWarnings(\"unused\")\n static Stream<String> stringProvider() {\n return Stream.of(\"foo\", \"bar\");\n }\n" + "text": "Reports calls to 'toString()' that are used in the following cases: In string concatenations In the 'java.lang.StringBuilder#append()' or 'java.lang.StringBuffer#append()' methods In the methods of 'java.io.PrintWriter' or 'java.io.PrintStream' in the methods 'org.slf4j.Logger' In these cases, conversion to string will be handled by the underlying library methods, and the explicit call to 'toString()' is not needed. Example: 'System.out.println(this.toString())' After the quick-fix is applied: 'System.out.println(this)' Note that without the 'toString()' call, the code semantics might be different: if the expression is null, then the 'null' string will be used instead of throwing a 'NullPointerException'. Use the Report only when qualifier is known to be not-null option to avoid warnings for the values that could potentially be null.", + "markdown": "Reports calls to `toString()` that are used in the following cases:\n\n* In string concatenations\n* In the `java.lang.StringBuilder#append()` or `java.lang.StringBuffer#append()` methods\n* In the methods of `java.io.PrintWriter` or `java.io.PrintStream`\n* in the methods `org.slf4j.Logger`\n\nIn these cases, conversion to string will be handled by the underlying library methods, and the explicit call to `toString()` is not needed.\n\nExample:\n\n\n System.out.println(this.toString())\n\nAfter the quick-fix is applied:\n\n\n System.out.println(this)\n\n\nNote that without the `toString()` call, the code semantics might be different: if the expression is null,\nthen the `null` string will be used instead of throwing a `NullPointerException`.\n\nUse the **Report only when qualifier is known to be not-null** option to avoid warnings for the values that could potentially be null." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code maturity", - "index": 41, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -13192,29 +12400,26 @@ ] }, { - "id": "UnnecessaryToStringCall", + "id": "SuppressionAnnotation", "shortDescription": { - "text": "Unnecessary call to 'toString()'" + "text": "Inspection suppression annotation" }, "fullDescription": { - "text": "Reports calls to 'toString()' that are used in the following cases: In string concatenations In the 'java.lang.StringBuilder#append()' or 'java.lang.StringBuffer#append()' methods In the methods of 'java.io.PrintWriter' or 'java.io.PrintStream' in the methods 'org.slf4j.Logger' In these cases, conversion to string will be handled by the underlying library methods, and the explicit call to 'toString()' is not needed. Example: 'System.out.println(this.toString())' After the quick-fix is applied: 'System.out.println(this)' Note that without the 'toString()' call, the code semantics might be different: if the expression is null, then the 'null' string will be used instead of throwing a 'NullPointerException'. Use the Report only when qualifier is known to be not-null option to avoid warnings for the values that could potentially be null.", - "markdown": "Reports calls to `toString()` that are used in the following cases:\n\n* In string concatenations\n* In the `java.lang.StringBuilder#append()` or `java.lang.StringBuffer#append()` methods\n* In the methods of `java.io.PrintWriter` or `java.io.PrintStream`\n* in the methods `org.slf4j.Logger`\n\nIn these cases, conversion to string will be handled by the underlying library methods, and the explicit call to `toString()` is not needed.\n\nExample:\n\n\n System.out.println(this.toString())\n\nAfter the quick-fix is applied:\n\n\n System.out.println(this)\n\n\nNote that without the `toString()` call, the code semantics might be different: if the expression is null,\nthen the `null` string will be used instead of throwing a `NullPointerException`.\n\nUse the **Report only when qualifier is known to be not-null** option to avoid warnings for the values that could potentially be null." + "text": "Reports comments or annotations suppressing inspections. This inspection can be useful when leaving suppressions intentionally for further review. Example: '@SuppressWarnings(\"unused\")\n static Stream<String> stringProvider() {\n return Stream.of(\"foo\", \"bar\");\n }'", + "markdown": "Reports comments or annotations suppressing inspections.\n\nThis inspection can be useful when leaving suppressions intentionally for further review.\n\n**Example:**\n\n\n @SuppressWarnings(\"unused\")\n static Stream<String> stringProvider() {\n return Stream.of(\"foo\", \"bar\");\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Code maturity", + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -13238,17 +12443,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Packaging issues", - "index": 36, + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -13260,29 +12462,26 @@ ] }, { - "id": "ReturnSeparatedFromComputation", + "id": "SynchronizeOnNonFinalField", "shortDescription": { - "text": "'return' separated from the result computation" + "text": "Synchronization on a non-final field" }, "fullDescription": { - "text": "Reports 'return' statements that return a local variable where the value of the variable is computed somewhere else within the same method. The quick-fix inlines the returned variable by moving the return statement to the location in which the value of the variable is computed. When the returned value can't be inlined into the 'return' statement, the quick-fix attempts to move the return statement as close to the computation of the returned value as possible. Example: 'int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n n = i;\n break;\n }\n }\n return n;' After the quick-fix is applied: 'int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n return i;\n }\n }\n return n;'", - "markdown": "Reports `return` statements that return a local variable where the value of the variable is computed somewhere else within the same method.\n\nThe quick-fix inlines the returned variable by moving the return statement to the location in which the value\nof the variable is computed.\nWhen the returned value can't be inlined into the `return` statement,\nthe quick-fix attempts to move the return statement as close to the computation of the returned value as possible.\n\nExample:\n\n\n int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n n = i;\n break;\n }\n }\n return n;\n\nAfter the quick-fix is applied:\n\n\n int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n return i;\n }\n }\n return n;\n" + "text": "Reports 'synchronized' statement lock expressions that consist of a non-'final' field reference. Such statements are unlikely to have useful semantics, as different threads may acquire different locks even when operating on the same object. Example: 'private Object o;\n public void foo() {\n synchronized (o) // synchronization on a non-final field\n { }\n }'", + "markdown": "Reports `synchronized` statement lock expressions that consist of a non-`final` field reference. Such statements are unlikely to have useful semantics, as different threads may acquire different locks even when operating on the same object.\n\n**Example:**\n\n\n private Object o;\n public void foo() {\n synchronized (o) // synchronization on a non-final field\n { }\n }\n" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Threading issues", + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -13294,29 +12493,26 @@ ] }, { - "id": "SynchronizeOnNonFinalField", + "id": "ReturnSeparatedFromComputation", "shortDescription": { - "text": "Synchronization on a non-final field" + "text": "'return' separated from the result computation" }, "fullDescription": { - "text": "Reports 'synchronized' statement lock expressions that consist of a non-'final' field reference. Such statements are unlikely to have useful semantics, as different threads may acquire different locks even when operating on the same object. Example: 'private Object o;\n public void foo() {\n synchronized (o) // synchronization on a non-final field\n { }\n }'", - "markdown": "Reports `synchronized` statement lock expressions that consist of a non-`final` field reference. Such statements are unlikely to have useful semantics, as different threads may acquire different locks even when operating on the same object.\n\n**Example:**\n\n\n private Object o;\n public void foo() {\n synchronized (o) // synchronization on a non-final field\n { }\n }\n" + "text": "Reports 'return' statements that return a local variable where the value of the variable is computed somewhere else within the same method. The quick-fix inlines the returned variable by moving the return statement to the location in which the value of the variable is computed. When the returned value can't be inlined into the 'return' statement, the quick-fix attempts to move the return statement as close to the computation of the returned value as possible. Example: 'int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n n = i;\n break;\n }\n }\n return n;' After the quick-fix is applied: 'int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n return i;\n }\n }\n return n;'", + "markdown": "Reports `return` statements that return a local variable where the value of the variable is computed somewhere else within the same method.\n\nThe quick-fix inlines the returned variable by moving the return statement to the location in which the value\nof the variable is computed.\nWhen the returned value can't be inlined into the `return` statement,\nthe quick-fix attempts to move the return statement as close to the computation of the returned value as possible.\n\nExample:\n\n\n int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n n = i;\n break;\n }\n }\n return n;\n\nAfter the quick-fix is applied:\n\n\n int n = -1;\n for (int i = 0; i < a.length; i++) {\n if (a[i] == b) {\n return i;\n }\n }\n return n;\n" }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { - "id": "Java/Threading issues", - "index": 25, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -13340,10 +12536,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13374,17 +12567,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -13408,10 +12598,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13430,29 +12617,26 @@ ] }, { - "id": "SuspiciousIndentAfterControlStatement", + "id": "NumericOverflow", "shortDescription": { - "text": "Suspicious indentation after control statement without braces" + "text": "Numeric overflow" }, "fullDescription": { - "text": "Reports suspicious indentation of statements after a control statement without braces. Such indentation can make it look like the statement is inside the control statement, when in fact it will be executed unconditionally after the control statement. Example: 'class Bar {\n void foo(int i) {\n if (i == 0)\n System.out.println(\"foo\");\n System.out.println(\"bar\"); // warning\n if (i == 1);\n System.out.println(\"great\"); // warning\n if (i == 42)\n System.out.println(\"answer\");\n System.out.println(\"question\"); // warning\n }\n }'", - "markdown": "Reports suspicious indentation of statements after a control statement without braces.\n\n\nSuch indentation can make it look like the statement is inside the control statement,\nwhen in fact it will be executed unconditionally after the control statement.\n\n**Example:**\n\n\n class Bar {\n void foo(int i) {\n if (i == 0)\n System.out.println(\"foo\");\n System.out.println(\"bar\"); // warning\n if (i == 1);\n System.out.println(\"great\"); // warning\n if (i == 42)\n System.out.println(\"answer\");\n System.out.println(\"question\"); // warning\n }\n }\n" + "text": "Reports expressions that overflow during computation. Usually, this happens by accident and indicates a bug. For example, a wrong type is used or a shift should be done in an opposite direction . Examples: 'float a = 1.0f/0.0f;\n long b = 30 * 24 * 60 * 60 * 1000;\n long c = 1000L << 62;'", + "markdown": "Reports expressions that overflow during computation. Usually, this happens by accident and indicates a bug. For example, a wrong type is used or a shift should be done in an opposite direction .\n\n**Examples:**\n\n\n float a = 1.0f/0.0f;\n long b = 30 * 24 * 60 * 60 * 1000;\n long c = 1000L << 62;\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Numeric issues", + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -13464,29 +12648,26 @@ ] }, { - "id": "NumericOverflow", + "id": "AssignmentToSuperclassField", "shortDescription": { - "text": "Numeric overflow" + "text": "Constructor assigns value to field defined in superclass" }, "fullDescription": { - "text": "Reports expressions that overflow during computation. Usually, this happens by accident and indicates a bug. For example, a wrong type is used or a shift should be done in an opposite direction . Examples: 'float a = 1.0f/0.0f;\n long b = 30 * 24 * 60 * 60 * 1000;\n long c = 1000L << 62;'", - "markdown": "Reports expressions that overflow during computation. Usually, this happens by accident and indicates a bug. For example, a wrong type is used or a shift should be done in an opposite direction .\n\n**Examples:**\n\n\n float a = 1.0f/0.0f;\n long b = 30 * 24 * 60 * 60 * 1000;\n long c = 1000L << 62;\n" + "text": "Reports assignment to, or modification of fields that are declared in a superclass from within a subclass constructor. It is considered preferable to initialize the fields of a superclass in its own constructor and delegate to that constructor in a subclass. This will also allow declaring a field 'final' if it isn't changed after the construction. Example: 'class Super {\n int x;\n }\n class Sub extends Super {\n Sub(int _x) {\n // Warning: x is declared in a superclass\n x = _x;\n }\n }' To avoid the problem, declare a superclass constructor: 'class Super {\n final int x;\n\n Super(int _x) {\n x = _x;\n }\n }\n class Sub extends Super {\n Sub(int _x) {\n super(_x);\n }\n }'", + "markdown": "Reports assignment to, or modification of fields that are declared in a superclass from within a subclass constructor.\n\nIt is considered preferable to initialize the fields of a superclass in its own constructor and\ndelegate to that constructor in a subclass. This will also allow declaring a field `final`\nif it isn't changed after the construction.\n\n**Example:**\n\n\n class Super {\n int x;\n }\n class Sub extends Super {\n Sub(int _x) {\n // Warning: x is declared in a superclass\n x = _x;\n }\n }\n\nTo avoid the problem, declare a superclass constructor:\n\n\n class Super {\n final int x;\n\n Super(int _x) {\n x = _x;\n }\n }\n class Sub extends Super {\n Sub(int _x) {\n super(_x);\n }\n }\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Numeric issues", - "index": 26, + "id": "Java/Assignment issues", + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -13498,29 +12679,26 @@ ] }, { - "id": "AssignmentToSuperclassField", + "id": "SuspiciousIndentAfterControlStatement", "shortDescription": { - "text": "Constructor assigns value to field defined in superclass" + "text": "Suspicious indentation after control statement without braces" }, "fullDescription": { - "text": "Reports assignment to, or modification of fields that are declared in a superclass from within a subclass constructor. It is considered preferable to initialize the fields of a superclass in its own constructor and delegate to that constructor in a subclass. This will also allow declaring a field 'final' if it isn't changed after the construction. Example: 'class Super {\n int x;\n }\n class Sub extends Super {\n Sub(int _x) {\n // Warning: x is declared in a superclass\n x = _x;\n }\n }' To avoid the problem, declare a superclass constructor: 'class Super {\n final int x;\n\n Super(int _x) {\n x = _x;\n }\n }\n class Sub extends Super {\n Sub(int _x) {\n super(_x);\n }\n }'", - "markdown": "Reports assignment to, or modification of fields that are declared in a superclass from within a subclass constructor.\n\nIt is considered preferable to initialize the fields of a superclass in its own constructor and\ndelegate to that constructor in a subclass. This will also allow declaring a field `final`\nif it isn't changed after the construction.\n\n**Example:**\n\n\n class Super {\n int x;\n }\n class Sub extends Super {\n Sub(int _x) {\n // Warning: x is declared in a superclass\n x = _x;\n }\n }\n\nTo avoid the problem, declare a superclass constructor:\n\n\n class Super {\n final int x;\n\n Super(int _x) {\n x = _x;\n }\n }\n class Sub extends Super {\n Sub(int _x) {\n super(_x);\n }\n }\n" + "text": "Reports suspicious indentation of statements after a control statement without braces. Such indentation can make it look like the statement is inside the control statement, when in fact it will be executed unconditionally after the control statement. Example: 'class Bar {\n void foo(int i) {\n if (i == 0)\n System.out.println(\"foo\");\n System.out.println(\"bar\"); // warning\n if (i == 1);\n System.out.println(\"great\"); // warning\n if (i == 42)\n System.out.println(\"answer\");\n System.out.println(\"question\"); // warning\n }\n }'", + "markdown": "Reports suspicious indentation of statements after a control statement without braces.\n\n\nSuch indentation can make it look like the statement is inside the control statement,\nwhen in fact it will be executed unconditionally after the control statement.\n\n**Example:**\n\n\n class Bar {\n void foo(int i) {\n if (i == 0)\n System.out.println(\"foo\");\n System.out.println(\"bar\"); // warning\n if (i == 1);\n System.out.println(\"great\"); // warning\n if (i == 42)\n System.out.println(\"answer\");\n System.out.println(\"question\"); // warning\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Assignment issues", - "index": 63, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -13544,10 +12722,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13578,17 +12753,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -13612,17 +12784,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -13646,17 +12815,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -13680,10 +12846,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13714,51 +12877,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "ConstantConditions", - "shortDescription": { - "text": "Constant conditions & exceptions" - }, - "fullDescription": { - "text": "Reports code constructs that always produce the same result, may throw exceptions, or violates nullability contracts. Examples: 'if (array.length < index) {\n System.out.println(array[index]);\n} // Array index is always out of bounds\n\nif (str == null) System.out.println(\"str is null\");\nSystem.out.println(str.trim());\n// the last statement may throw an NPE\n\n@NotNull\nInteger square(@Nullable Integer input) {\n // the method contract is violated\n return input == null ? null : input * input;\n}' The inspection behavior may be controlled by a number of annotations, such as nullability annotations, '@Contract' annotation, '@Range' annotation and so on. Configure the inspection: Use the Suggest @Nullable annotation for methods/fields/parameters where nullable values are used option to warn when a nullable value is passed as an argument to a method with a non-annotated parameter, stored into non-annotated field, or returned from a non-annotated method. In this case, the inspection will suggest propagating the '@Nullable' annotation. You can also configure nullability annotations using the Configure Annotations button. Use the Treat non-annotated members and parameters as @Nullable option to assume that non-annotated members can be null, so they must not be used in non-null context. Use the Report not-null required parameter with null-literal argument usages option to report method parameters that cannot be null (e.g. immediately dereferenced in the method body), but there are call sites where a 'null' literal is passed. Use the Report nullable methods that always return a non-null value option to report methods that are annotated as '@Nullable', but always return non-null value. In this case, it's suggested that you change the annotation to '@NotNull'. Use the Don't report assertions with condition statically proven to be always true option to avoid reporting assertions that were statically proven to be always true. This also includes conditions like 'if (alwaysFalseCondition) throw new IllegalArgumentException();'. Use the Ignore assert statements option to control how the inspection treats 'assert' statements. By default, the option is disabled, which means that the assertions are assumed to be executed (-ea mode). If the option is enabled, the assertions will be completely ignored (-da mode). Use the Warn when reading a value guaranteed to be constant option to add warnings on reading variables that contain some constant values, for example: 'true', 'false', or 'null'. Use the Report problems that happen only on some code paths option to control whether to report problems that may happen only on some code path. If this option is disabled, warnings like exception is possible will not be reported. The inspection will report only warnings like exception will definitely occur. This mode may greatly reduce the number of false-positives, especially if the code is not consistently annotated with nullability and contract annotations. That is why it can be useful for finding the most important problems in legacy code bases.", - "markdown": "Reports code constructs that always produce the same result, may throw exceptions, or violates nullability contracts.\n\nExamples:\n\n if (array.length < index) {\n System.out.println(array[index]);\n } // Array index is always out of bounds\n\n if (str == null) System.out.println(\"str is null\");\n System.out.println(str.trim());\n // the last statement may throw an NPE\n\n @NotNull\n Integer square(@Nullable Integer input) {\n // the method contract is violated\n return input == null ? null : input * input;\n }\n\n\nThe inspection behavior may be controlled by a number of annotations, such as\n[nullability](https://www.jetbrains.com/help/idea/nullable-and-notnull-annotations.html) annotations,\n[@Contract](https://www.jetbrains.com/help/idea/contract-annotations.html) annotation,\n`@Range` annotation and so on.\n\nConfigure the inspection:\n\n* Use the **Suggest @Nullable annotation for methods/fields/parameters where nullable values are used** option to warn when a nullable value is passed as an argument to a method with a non-annotated parameter, stored into non-annotated field, or returned from a non-annotated method. In this case, the inspection will suggest propagating the `@Nullable` annotation. You can also configure nullability annotations using the **Configure Annotations** button.\n* Use the **Treat non-annotated members and parameters as @Nullable** option to assume that non-annotated members can be null, so they must not be used in non-null context.\n* Use the **Report not-null required parameter with null-literal argument usages** option to report method parameters that cannot be null (e.g. immediately dereferenced in the method body), but there are call sites where a `null` literal is passed.\n* Use the **Report nullable methods that always return a non-null value** option to report methods that are annotated as `@Nullable`, but always return non-null value. In this case, it's suggested that you change the annotation to `@NotNull`.\n* Use the **Don't report assertions with condition statically proven to be always true** option to avoid reporting assertions that were statically proven to be always true. This also includes conditions like `if (alwaysFalseCondition) throw new IllegalArgumentException();`.\n* Use the **Ignore assert statements** option to control how the inspection treats `assert` statements. By default, the option is disabled, which means that the assertions are assumed to be executed (-ea mode). If the option is enabled, the assertions will be completely ignored (-da mode).\n* Use the **Warn when reading a value guaranteed to be constant** option to add warnings on reading variables that contain some constant values, for example: `true`, `false`, or `null`.\n* Use the **Report problems that happen only on some code paths** option to control whether to report problems that may happen only on some code path. If this option is disabled, warnings like *exception is possible* will not be reported. The inspection will report only warnings like *exception will definitely occur*. This mode may greatly reduce the number of false-positives, especially if the code is not consistently annotated with nullability and contract annotations. That is why it can be useful for finding the most important problems in legacy code bases." - }, - "defaultConfiguration": { - "enabled": true, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Java/Probable bugs", - "index": 16, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -13782,10 +12908,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13816,17 +12939,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -13850,10 +12970,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13884,10 +13001,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13918,17 +13032,45 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SwitchExpressionCanBePushedDown", + "shortDescription": { + "text": "Common subexpression can be extracted from 'switch'" + }, + "fullDescription": { + "text": "Reports switch expressions and statements where every branch has a common subexpression, so the 'switch' could be moved inside. This action shortens the code. In many cases, it's reasonable to extract the resulting switch expression to a separate variable or method. Example: 'switch (value) {\n case 0 -> System.out.println(\"zero\");\n case 1 -> System.out.println(\"one\");\n case 2, 3, 4 -> System.out.println(\"few\");\n default -> System.out.println(\"many\");\n }' After the quick-fix is applied: 'System.out.println(switch (value) {\n case 0 -> \"zero\";\n case 1 -> \"one\";\n case 2, 3, 4 -> \"few\";\n default -> \"many\";\n });' This inspection is applicable only to enhanced switches with arrow syntax. New in 2022.3", + "markdown": "Reports switch expressions and statements where every branch has a common subexpression, so the `switch` could be moved inside. This action shortens the code. In many cases, it's reasonable to extract the resulting switch expression to a separate variable or method.\n\nExample:\n\n\n switch (value) {\n case 0 -> System.out.println(\"zero\");\n case 1 -> System.out.println(\"one\");\n case 2, 3, 4 -> System.out.println(\"few\");\n default -> System.out.println(\"many\");\n }\n\nAfter the quick-fix is applied:\n\n\n System.out.println(switch (value) {\n case 0 -> \"zero\";\n case 1 -> \"one\";\n case 2, 3, 4 -> \"few\";\n default -> \"many\";\n });\n\n\nThis inspection is applicable only to enhanced switches with arrow syntax.\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Control flow issues", + "index": 27, "toolComponent": { "name": "QDJVM" } @@ -13952,10 +13094,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -13986,10 +13125,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14008,29 +13144,26 @@ ] }, { - "id": "ScheduledThreadPoolExecutorWithZeroCoreThreads", + "id": "ChannelResource", "shortDescription": { - "text": "'ScheduledThreadPoolExecutor' with zero core threads" + "text": "'Channel' opened but not safely closed" }, "fullDescription": { - "text": "Reports any 'java.util.concurrent.ScheduledThreadPoolExecutor' instances in which 'corePoolSize' is set to zero via the 'setCorePoolSize' method or the object constructor. A 'ScheduledThreadPoolExecutor' with zero core threads will run nothing. Example: 'void foo(int corePoolSize) {\n if (corePoolSize != 0) return;\n ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(corePoolSize); // warning\n executor.setCorePoolSize(corePoolSize); // warning\n }'", - "markdown": "Reports any `java.util.concurrent.ScheduledThreadPoolExecutor` instances in which `corePoolSize` is set to zero via the `setCorePoolSize` method or the object constructor.\n\n\nA `ScheduledThreadPoolExecutor` with zero core threads will run nothing.\n\n**Example:**\n\n\n void foo(int corePoolSize) {\n if (corePoolSize != 0) return;\n ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(corePoolSize); // warning\n executor.setCorePoolSize(corePoolSize); // warning\n }\n" + "text": "Reports 'Channel' resources that are not safely closed, including any instances created by calling 'getChannel()' on a file or socket resource. By default, the inspection assumes that the resources can be closed by any method with 'close' or 'cleanup' in its name. Example: 'void send(Socket socket) throws IOException {\n SocketChannel channel = socket.getChannel(); //warning\n channel.write(ByteBuffer.wrap(\"message\".getBytes()));\n }' Use the following options to configure the inspection: Whether a 'Channel' resource is allowed to be opened inside a 'try' block. This style is less desirable because it is more verbose than opening a 'Channel' in front of a 'try' block. Whether the resource can be closed by any method call with the resource passed as argument.", + "markdown": "Reports `Channel` resources that are not safely closed, including any instances created by calling `getChannel()` on a file or socket resource.\n\n\nBy default, the inspection assumes that the resources can be closed by any method with\n'close' or 'cleanup' in its name.\n\n**Example:**\n\n\n void send(Socket socket) throws IOException {\n SocketChannel channel = socket.getChannel(); //warning\n channel.write(ByteBuffer.wrap(\"message\".getBytes()));\n }\n\n\nUse the following options to configure the inspection:\n\n* Whether a `Channel` resource is allowed to be opened inside a `try` block. This style is less desirable because it is more verbose than opening a `Channel` in front of a `try` block.\n* Whether the resource can be closed by any method call with the resource passed as argument." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Resource management", + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -14042,29 +13175,26 @@ ] }, { - "id": "ChannelResource", + "id": "ScheduledThreadPoolExecutorWithZeroCoreThreads", "shortDescription": { - "text": "'Channel' opened but not safely closed" + "text": "'ScheduledThreadPoolExecutor' with zero core threads" }, "fullDescription": { - "text": "Reports 'Channel' resources that are not safely closed, including any instances created by calling 'getChannel()' on a file or socket resource. By default, the inspection assumes that the resources can be closed by any method with 'close' or 'cleanup' in its name. Example: 'void send(Socket socket) throws IOException {\n SocketChannel channel = socket.getChannel(); //warning\n channel.write(ByteBuffer.wrap(\"message\".getBytes()));\n }' Use the following options to configure the inspection: Whether a 'Channel' resource is allowed to be opened inside a 'try' block. This style is less desirable because it is more verbose than opening a 'Channel' in front of a 'try' block. Whether the resource can be closed by any method call with the resource passed as argument.", - "markdown": "Reports `Channel` resources that are not safely closed, including any instances created by calling `getChannel()` on a file or socket resource.\n\n\nBy default, the inspection assumes that the resources can be closed by any method with\n'close' or 'cleanup' in its name.\n\n**Example:**\n\n\n void send(Socket socket) throws IOException {\n SocketChannel channel = socket.getChannel(); //warning\n channel.write(ByteBuffer.wrap(\"message\".getBytes()));\n }\n\n\nUse the following options to configure the inspection:\n\n* Whether a `Channel` resource is allowed to be opened inside a `try` block. This style is less desirable because it is more verbose than opening a `Channel` in front of a `try` block.\n* Whether the resource can be closed by any method call with the resource passed as argument." + "text": "Reports any 'java.util.concurrent.ScheduledThreadPoolExecutor' instances in which 'corePoolSize' is set to zero via the 'setCorePoolSize' method or the object constructor. A 'ScheduledThreadPoolExecutor' with zero core threads will run nothing. Example: 'void foo(int corePoolSize) {\n if (corePoolSize != 0) return;\n ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(corePoolSize); // warning\n executor.setCorePoolSize(corePoolSize); // warning\n }'", + "markdown": "Reports any `java.util.concurrent.ScheduledThreadPoolExecutor` instances in which `corePoolSize` is set to zero via the `setCorePoolSize` method or the object constructor.\n\n\nA `ScheduledThreadPoolExecutor` with zero core threads will run nothing.\n\n**Example:**\n\n\n void foo(int corePoolSize) {\n if (corePoolSize != 0) return;\n ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(corePoolSize); // warning\n executor.setCorePoolSize(corePoolSize); // warning\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Resource management", - "index": 101, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -14088,17 +13218,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -14122,10 +13249,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14156,17 +13280,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -14190,17 +13311,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -14224,17 +13342,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -14258,10 +13373,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14292,10 +13404,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14326,10 +13435,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14360,17 +13466,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -14394,17 +13497,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Resource management", - "index": 101, + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -14428,10 +13528,7 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -14462,17 +13559,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -14496,17 +13590,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -14530,17 +13621,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -14564,17 +13652,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -14591,24 +13676,21 @@ "text": "Interface may be annotated as '@FunctionalInterface'" }, "fullDescription": { - "text": "Reports interfaces that can be annotated with '@FunctionalInterface' (available since JDK 1.8). Annotating an interface with '@FunctionalInterface' indicates that the interface is functional and cannot have any more 'abstract' methods. This inspection only reports if the language level of the project or module is 8 or higher.", - "markdown": "Reports interfaces that can be annotated with `@FunctionalInterface` (available since JDK 1.8).\n\nAnnotating an interface with `@FunctionalInterface` indicates that the interface\nis functional and cannot have any more `abstract` methods.\n\nThis inspection only reports if the language level of the project or module is 8 or higher." + "text": "Reports interfaces that can be annotated with '@FunctionalInterface' (available since JDK 1.8). Annotating an interface with '@FunctionalInterface' indicates that the interface is functional and no more 'abstract' methods can be added to it. Example: 'interface FileProcessor {\n void execute(File file);\n }' After the quick-fix is applied: '@FunctionalInterface\n interface FileProcessor {\n void execute(File file);\n }' This inspection only reports if the language level of the project or module is 8 or higher.", + "markdown": "Reports interfaces that can be annotated with `@FunctionalInterface` (available since JDK 1.8).\n\nAnnotating an interface with `@FunctionalInterface` indicates that the interface\nis functional and no more `abstract` methods can be added to it.\n\n**Example:**\n\n\n interface FileProcessor {\n void execute(File file);\n }\n\nAfter the quick-fix is applied:\n\n\n @FunctionalInterface\n interface FileProcessor {\n void execute(File file);\n }\n\nThis inspection only reports if the language level of the project or module is 8 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -14632,10 +13714,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14654,29 +13733,26 @@ ] }, { - "id": "SuspiciousLiteralUnderscore", + "id": "StringEquality", "shortDescription": { - "text": "Suspicious underscore in number literal" + "text": "String comparison using '==', instead of 'equals()'" }, "fullDescription": { - "text": "Reports decimal number literals that use the underscore numeric separator with groups where the number of digits is not three. Such literals may contain a typo. This inspection will not warn on literals containing two consecutive underscores. It is also allowed to omit underscores in the fractional part of 'double' and 'float' literals. Example: 'int oneMillion = 1_000_0000;'", - "markdown": "Reports decimal number literals that use the underscore numeric separator with groups where the number of digits is not three. Such literals may contain a typo.\n\nThis inspection will not warn on literals containing two consecutive underscores.\nIt is also allowed to omit underscores in the fractional part of `double` and `float` literals.\n\n**Example:** `int oneMillion = 1_000_0000;`" + "text": "Reports code that uses of == or != to compare strings. These operators determine referential equality instead of comparing content. In most cases, strings should be compared using 'equals()', which does a character-by-character comparison when the strings are different objects. Example: 'void foo(String s, String t) {\n final boolean b = t == s;\n }' If 't' is known to be non-null, then it's safe to apply the \"unsafe\" quick-fix and get the result similar to the following: 'void foo(String s, String t) {\n final boolean b = t.equals(s);\n }'", + "markdown": "Reports code that uses of **==** or **!=** to compare strings.\n\n\nThese operators determine referential equality instead of comparing content.\nIn most cases, strings should be compared using `equals()`,\nwhich does a character-by-character comparison when the strings are different objects.\n\n**Example:**\n\n\n void foo(String s, String t) {\n final boolean b = t == s;\n }\n\nIf `t` is known to be non-null, then it's safe to apply the \"unsafe\" quick-fix and get the result similar to the following:\n\n\n void foo(String s, String t) {\n final boolean b = t.equals(s);\n }\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Numeric issues", - "index": 26, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -14688,29 +13764,26 @@ ] }, { - "id": "StringEquality", + "id": "SuspiciousLiteralUnderscore", "shortDescription": { - "text": "String comparison using '==', instead of 'equals()'" + "text": "Suspicious underscore in number literal" }, "fullDescription": { - "text": "Reports code that uses of == or != to compare strings. These operators determine referential equality instead of comparing content. In most cases, strings should be compared using 'equals()', which does a character-by-character comparison when the strings are different objects. Example: 'void foo(String s, String t) {\n final boolean b = t == s;\n }' If 't' is known to be non-null, then it's safe to apply the \"unsafe\" quick-fix and get the result similar to the following: 'void foo(String s, String t) {\n final boolean b = t.equals(s);\n }'", - "markdown": "Reports code that uses of **==** or **!=** to compare strings.\n\n\nThese operators determine referential equality instead of comparing content.\nIn most cases, strings should be compared using `equals()`,\nwhich does a character-by-character comparison when the strings are different objects.\n\n**Example:**\n\n\n void foo(String s, String t) {\n final boolean b = t == s;\n }\n\nIf `t` is known to be non-null, then it's safe to apply the \"unsafe\" quick-fix and get the result similar to the following:\n\n\n void foo(String s, String t) {\n final boolean b = t.equals(s);\n }\n" + "text": "Reports decimal number literals that use the underscore numeric separator with groups where the number of digits is not three. Such literals may contain a typo. This inspection will not warn on literals containing two consecutive underscores. It is also allowed to omit underscores in the fractional part of 'double' and 'float' literals. Example: 'int oneMillion = 1_000_0000;'", + "markdown": "Reports decimal number literals that use the underscore numeric separator with groups where the number of digits is not three. Such literals may contain a typo.\n\nThis inspection will not warn on literals containing two consecutive underscores.\nIt is also allowed to omit underscores in the fractional part of `double` and `float` literals.\n\n**Example:** `int oneMillion = 1_000_0000;`" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Numeric issues", + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -14734,10 +13807,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -14768,17 +13838,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -14802,17 +13869,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -14836,17 +13900,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -14870,17 +13931,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -14904,17 +13962,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -14938,10 +13993,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -14972,17 +14024,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -14999,24 +14048,21 @@ "text": "Class initializer may be 'static'" }, "fullDescription": { - "text": "Reports instance initializers which may be made 'static'. An instance initializer may be static if it does not reference any of its class' non-static members. Static initializers are executed once the class is resolved, while instance initializers are executed on each instantiation of the class. Example: 'class A {\n public static String CONSTANT;\n {\n CONSTANT = \"Hello\";\n }\n }' After the quick-fix is applied: 'class A {\n public static String CONSTANT;\n static {\n CONSTANT = \"Hello\"; //now initialized only once per class\n }\n }'", - "markdown": "Reports instance initializers which may be made `static`.\n\n\nAn instance initializer may be static if it does not reference any of its class' non-static members.\nStatic initializers are executed once the class is resolved,\nwhile instance initializers are executed on each instantiation of the class.\n\n**Example:**\n\n\n class A {\n public static String CONSTANT;\n {\n CONSTANT = \"Hello\";\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class A {\n public static String CONSTANT;\n static {\n CONSTANT = \"Hello\"; //now initialized only once per class\n }\n }\n" + "text": "Reports instance initializers which may be made 'static'. An instance initializer may be static if it does not reference any of its class' non-static members. Static initializers are executed once the class is resolved, while instance initializers are executed on each instantiation of the class. This inspection doesn't report instance empty initializers and initializers in anonymous classes. Example: 'class A {\n public static String CONSTANT;\n {\n CONSTANT = \"Hello\";\n }\n }' After the quick-fix is applied: 'class A {\n public static String CONSTANT;\n static {\n CONSTANT = \"Hello\"; //now initialized only once per class\n }\n }'", + "markdown": "Reports instance initializers which may be made `static`.\n\n\nAn instance initializer may be static if it does not reference any of its class' non-static members.\nStatic initializers are executed once the class is resolved,\nwhile instance initializers are executed on each instantiation of the class.\n\nThis inspection doesn't report instance empty initializers and initializers in anonymous classes.\n\n**Example:**\n\n\n class A {\n public static String CONSTANT;\n {\n CONSTANT = \"Hello\";\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class A {\n public static String CONSTANT;\n static {\n CONSTANT = \"Hello\"; //now initialized only once per class\n }\n }\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -15040,10 +14086,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -15068,23 +14111,20 @@ }, "fullDescription": { "text": "Reports calls to 'java.util.Set.removeAll()' with a 'java.util.List' argument. Such a call can be slow when the size of the argument is greater than or equal to the size of the set, and the set is a subclass of 'java.util.AbstractSet'. In this case, 'List.contains()' is called for each element in the set, which will perform a linear search. Example: 'public void check(String... ss) {\n // possible O(n^2) complexity\n mySet.removeAll(List.of(ss));\n }' After the quick fix is applied: 'public void check(String... ss) {\n // O(n) complexity\n List.of(ss).forEach(mySet::remove);\n }' New in 2020.3", - "markdown": "Reports calls to `java.util.Set.removeAll()` with a `java.util.List` argument.\n\n\nSuch a call can be slow when the size of the argument is greater than or equal to the size of the set,\nand the set is a subclass of `java.util.AbstractSet`.\nIn this case, `List.contains()` is called for each element in the set, which will perform a linear search.\n\n**Example:**\n\n public void check(String... ss) {\n // possible O(n^2) complexity\n mySet.removeAll(List.of(ss));\n }\n\nAfter the quick fix is applied:\n\n public void check(String... ss) {\n // O(n) complexity\n List.of(ss).forEach(mySet::remove);\n }\n\nNew in 2020.3" + "markdown": "Reports calls to `java.util.Set.removeAll()` with a `java.util.List` argument.\n\n\nSuch a call can be slow when the size of the argument is greater than or equal to the size of the set,\nand the set is a subclass of `java.util.AbstractSet`.\nIn this case, `List.contains()` is called for each element in the set, which will perform a linear search.\n\n**Example:**\n\n\n public void check(String... ss) {\n // possible O(n^2) complexity\n mySet.removeAll(List.of(ss));\n }\n\nAfter the quick fix is applied:\n\n\n public void check(String... ss) {\n // O(n) complexity\n List.of(ss).forEach(mySet::remove);\n }\n\nNew in 2020.3" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -15108,10 +14148,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -15142,17 +14179,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Memory", - "index": 126, + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -15176,17 +14210,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Class", - "index": 57, + "index": 64, "toolComponent": { "name": "QDJVM" } @@ -15198,29 +14229,26 @@ ] }, { - "id": "ClassComplexity", + "id": "SystemGC", "shortDescription": { - "text": "Overly complex class" + "text": "Call to 'System.gc()' or 'Runtime.gc()'" }, "fullDescription": { - "text": "Reports classes whose total complexity exceeds the specified maximum. The total complexity of a class is the sum of cyclomatic complexities of all the methods and initializers the class declares. Inherited methods and initializers are not counted toward the total complexity. Too high complexity indicates that the class should be refactored into several smaller classes. Use the Cyclomatic complexity limit field below to specify the maximum allowed complexity for a class.", - "markdown": "Reports classes whose total complexity exceeds the specified maximum.\n\nThe total complexity of a class is the sum of cyclomatic complexities of all the methods\nand initializers the class declares. Inherited methods and initializers are not counted\ntoward the total complexity.\n\nToo high complexity indicates that the class should be refactored into several smaller classes.\n\nUse the **Cyclomatic complexity limit** field below to specify the maximum allowed complexity for a class." + "text": "Reports 'System.gc()' or 'Runtime.gc()' calls. While occasionally useful in testing, explicitly triggering garbage collection via 'System.gc()' is almost never recommended in production code and can result in serious performance issues.", + "markdown": "Reports `System.gc()` or `Runtime.gc()` calls. While occasionally useful in testing, explicitly triggering garbage collection via `System.gc()` is almost never recommended in production code and can result in serious performance issues." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Class metrics", - "index": 95, + "id": "Java/Memory", + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -15232,29 +14260,26 @@ ] }, { - "id": "SystemGC", + "id": "ClassComplexity", "shortDescription": { - "text": "Call to 'System.gc()' or 'Runtime.gc()'" + "text": "Overly complex class" }, "fullDescription": { - "text": "Reports 'System.gc()' or 'Runtime.gc()' calls. While occasionally useful in testing, explicitly triggering garbage collection via 'System.gc()' is almost never recommended in production code and can result in serious performance issues.", - "markdown": "Reports `System.gc()` or `Runtime.gc()` calls. While occasionally useful in testing, explicitly triggering garbage collection via `System.gc()` is almost never recommended in production code and can result in serious performance issues." + "text": "Reports classes whose total complexity exceeds the specified maximum. The total complexity of a class is the sum of cyclomatic complexities of all the methods and initializers the class declares. Inherited methods and initializers are not counted toward the total complexity. Too high complexity indicates that the class should be refactored into several smaller classes. Use the Cyclomatic complexity limit field below to specify the maximum allowed complexity for a class.", + "markdown": "Reports classes whose total complexity exceeds the specified maximum.\n\nThe total complexity of a class is the sum of cyclomatic complexities of all the methods\nand initializers the class declares. Inherited methods and initializers are not counted\ntoward the total complexity.\n\nToo high complexity indicates that the class should be refactored into several smaller classes.\n\nUse the **Cyclomatic complexity limit** field below to specify the maximum allowed complexity for a class." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Memory", - "index": 126, + "id": "Java/Class metrics", + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -15278,10 +14303,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -15300,29 +14322,26 @@ ] }, { - "id": "InnerClassMayBeStatic", + "id": "SetReplaceableByEnumSet", "shortDescription": { - "text": "Inner class may be 'static'" + "text": "'Set' can be replaced with 'EnumSet'" }, "fullDescription": { - "text": "Reports inner classes that can be made 'static'. A 'static' inner class does not keep an implicit reference to its enclosing instance. This prevents a common cause of memory leaks and uses less memory per instance of the class. Example: 'public class Outer {\n class Inner { // not static\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }' After the quick-fix is applied: 'public class Outer {\n static class Inner {\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }'", - "markdown": "Reports inner classes that can be made `static`.\n\nA `static` inner class does not keep an implicit reference to its enclosing instance.\nThis prevents a common cause of memory leaks and uses less memory per instance of the class.\n\n**Example:**\n\n\n public class Outer {\n class Inner { // not static\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class Outer {\n static class Inner {\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }\n" + "text": "Reports instantiations of 'java.util.Set' objects whose content types are enumerated classes. Such 'Set' objects can be replaced with 'java.util.EnumSet' objects. 'EnumSet' implementations can be much more efficient compared to other sets, as the underlying data structure is a bit vector. Use the quick-fix to replace the initializer with a call to 'EnumSet.noneOf()'. This quick-fix is not available when the type of the variable is a sub-class of 'Set'. Example: 'enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = new HashSet<MyEnum>();' After the quick-fix is applied: 'enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = EnumSet.noneOf(MyEnum.class);'", + "markdown": "Reports instantiations of `java.util.Set` objects whose content types are enumerated classes. Such `Set` objects can be replaced with `java.util.EnumSet` objects.\n\n\n`EnumSet` implementations can be much more efficient compared to\nother sets, as the underlying data structure is a bit vector. Use the quick-fix to replace the initializer with a call to\n`EnumSet.noneOf()`. This quick-fix is not available when the type of the variable is a sub-class of `Set`.\n\n**Example:**\n\n\n enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = new HashSet<MyEnum>();\n\nAfter the quick-fix is applied:\n\n\n enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = EnumSet.noneOf(MyEnum.class);\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Memory", - "index": 126, + "id": "Java/Performance", + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -15334,29 +14353,26 @@ ] }, { - "id": "SetReplaceableByEnumSet", + "id": "Java9UndeclaredServiceUsage", "shortDescription": { - "text": "'Set' can be replaced with 'EnumSet'" + "text": "Usage of service not declared in 'module-info'" }, "fullDescription": { - "text": "Reports instantiations of 'java.util.Set' objects whose content types are enumerated classes. Such 'Set' objects can be replaced with 'java.util.EnumSet' objects. 'EnumSet' implementations can be much more efficient compared to other sets, as the underlying data structure is a bit vector. Use the quick-fix to replace the initializer with a call to 'EnumSet.noneOf()'. This quick-fix is not available when the type of the variable is a sub-class of 'Set'. Example: 'enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = new HashSet<MyEnum>();' After the quick-fix is applied: 'enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = EnumSet.noneOf(MyEnum.class);'", - "markdown": "Reports instantiations of `java.util.Set` objects whose content types are enumerated classes. Such `Set` objects can be replaced with `java.util.EnumSet` objects.\n\n\n`EnumSet` implementations can be much more efficient compared to\nother sets, as the underlying data structure is a bit vector. Use the quick-fix to replace the initializer with a call to\n`EnumSet.noneOf()`. This quick-fix is not available when the type of the variable is a sub-class of `Set`.\n\n**Example:**\n\n\n enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = new HashSet<MyEnum>();\n\nAfter the quick-fix is applied:\n\n\n enum MyEnum { FOO, BAR; }\n\n Set<MyEnum> enums = EnumSet.noneOf(MyEnum.class);\n" + "text": "Reports situations in which a service is loaded with 'java.util.ServiceLoader' but it isn't declared with the 'uses' clause in the 'module-info.java' file and suggests inserting it. New in 2018.1", + "markdown": "Reports situations in which a service is loaded with `java.util.ServiceLoader` but it isn't declared with the `uses` clause in the `module-info.java` file and suggests inserting it.\n\nNew in 2018.1" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Performance", - "index": 10, + "id": "Java/Visibility", + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -15368,29 +14384,26 @@ ] }, { - "id": "Java9UndeclaredServiceUsage", + "id": "InnerClassMayBeStatic", "shortDescription": { - "text": "Usage of service not declared in 'module-info'" + "text": "Inner class may be 'static'" }, "fullDescription": { - "text": "Reports situations in which a service is loaded with 'java.util.ServiceLoader' but it isn't declared with the 'uses' clause in the 'module-info.java' file and suggests inserting it. New in 2018.1", - "markdown": "Reports situations in which a service is loaded with `java.util.ServiceLoader` but it isn't declared with the `uses` clause in the `module-info.java` file and suggests inserting it.\n\nNew in 2018.1" + "text": "Reports inner classes that can be made 'static'. A 'static' inner class does not keep an implicit reference to its enclosing instance. This prevents a common cause of memory leaks and uses less memory per instance of the class. Example: 'public class Outer {\n class Inner { // not static\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }' After the quick-fix is applied: 'public class Outer {\n static class Inner {\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }'", + "markdown": "Reports inner classes that can be made `static`.\n\nA `static` inner class does not keep an implicit reference to its enclosing instance.\nThis prevents a common cause of memory leaks and uses less memory per instance of the class.\n\n**Example:**\n\n\n public class Outer {\n class Inner { // not static\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class Outer {\n static class Inner {\n public void foo() {\n bar(\"x\");\n }\n\n private void bar(String string) {}\n }\n }\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Visibility", - "index": 75, + "id": "Java/Memory", + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -15414,17 +14427,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -15448,10 +14458,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -15482,17 +14489,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -15509,24 +14513,21 @@ "text": "Declaration access can be weaker" }, "fullDescription": { - "text": "Reports all fields, methods or classes, found in the specified inspection scope that may have their access modifier narrowed down. Example: 'class Sample {\n void foo() {\n bar(\"foo\", \"foo\");\n }\n void bar(String x, String y) { } // can be private\n }' Use the inspection's options to define the rules for the modifier change suggestions.", - "markdown": "Reports all fields, methods or classes, found in the specified inspection scope that may have their access modifier narrowed down.\n\nExample:\n\n\n class Sample {\n void foo() {\n bar(\"foo\", \"foo\");\n }\n void bar(String x, String y) { } // can be private\n }\n\nUse the inspection's options to define the rules for the modifier change suggestions." + "text": "Reports fields, methods or classes that may have their access modifier narrowed down. Example: 'class Sample {\n void foo() {\n bar(\"foo\", \"foo\");\n }\n void bar(String x, String y) { } // can be private\n }' After the quick-fix is applied: 'class Sample {\n void foo() {\n bar(\"foo\", \"foo\");\n }\n private void bar(String x, String y) { }\n }' Use the inspection's options to define the rules for the modifier change suggestions.", + "markdown": "Reports fields, methods or classes that may have their access modifier narrowed down.\n\nExample:\n\n\n class Sample {\n void foo() {\n bar(\"foo\", \"foo\");\n }\n void bar(String x, String y) { } // can be private\n }\n\nAfter the quick-fix is applied:\n\n\n class Sample {\n void foo() {\n bar(\"foo\", \"foo\");\n }\n private void bar(String x, String y) { }\n }\n\nUse the inspection's options to define the rules for the modifier change suggestions." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -15550,17 +14551,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -15584,17 +14582,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -15618,10 +14613,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -15652,17 +14644,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -15686,17 +14675,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Modularization issues", - "index": 53, + "index": 60, "toolComponent": { "name": "QDJVM" } @@ -15720,17 +14706,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -15754,17 +14737,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -15781,24 +14761,21 @@ "text": "Redundant type arguments" }, "fullDescription": { - "text": "Reports all calls to parametrized methods in which explicit argument types can be omitted since they will be unambiguously inferred by the compiler. Using redundant type arguments makes code superfluous and thus less readable. Example: 'List<String> list = Arrays.<String>asList(\"Hello\", \"World\");' A quick-fix is provided to remove redundant type arguments: 'List<String> list = Arrays.asList(\"Hello\", \"World\");'", - "markdown": "Reports all calls to parametrized methods in which explicit argument types can be omitted since they will be unambiguously inferred by the compiler.\n\n\nUsing redundant type arguments makes code superfluous and thus less readable.\n\nExample:\n\n\n List<String> list = Arrays.<String>asList(\"Hello\", \"World\");\n\nA quick-fix is provided to remove redundant type arguments:\n\n\n List<String> list = Arrays.asList(\"Hello\", \"World\");\n" + "text": "Reports calls to parametrized methods with explicit argument types that can be omitted since they will be unambiguously inferred by the compiler. Using redundant type arguments is unnecessary and makes the code less readable. Example: 'List<String> list = Arrays.<String>asList(\"Hello\", \"World\");' A quick-fix is provided to remove redundant type arguments: 'List<String> list = Arrays.asList(\"Hello\", \"World\");'", + "markdown": "Reports calls to parametrized methods with explicit argument types that can be omitted since they will be unambiguously inferred by the compiler.\n\n\nUsing redundant type arguments is unnecessary and makes the code less readable.\n\nExample:\n\n\n List<String> list = Arrays.<String>asList(\"Hello\", \"World\");\n\nA quick-fix is provided to remove redundant type arguments:\n\n\n List<String> list = Arrays.asList(\"Hello\", \"World\");\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -15822,17 +14799,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JavaBeans issues", - "index": 105, + "index": 115, "toolComponent": { "name": "QDJVM" } @@ -15856,17 +14830,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -15890,17 +14861,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -15924,17 +14892,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Dependency issues", - "index": 108, + "index": 118, "toolComponent": { "name": "QDJVM" } @@ -15958,17 +14923,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Probable bugs/Nullability problems", - "index": 132, + "index": 142, "toolComponent": { "name": "QDJVM" } @@ -15992,17 +14954,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -16014,29 +14973,26 @@ ] }, { - "id": "ClassWithoutNoArgConstructor", + "id": "ClassWithTooManyDependencies", "shortDescription": { - "text": "Class without no-arg constructor" + "text": "Class with too many dependencies" }, "fullDescription": { - "text": "Reports classes without a constructor that takes no arguments. No-argument constructors are necessary in some contexts. For example, if a class needs to be created using reflection. Use the checkbox below to ignore classes without explicit constructors. The compiler provides a default no-argument constructor to such classes.", - "markdown": "Reports classes without a constructor that takes no arguments. No-argument constructors are necessary in some contexts. For example, if a class needs to be created using reflection.\n\n\nUse the checkbox below to ignore classes without explicit constructors.\nThe compiler provides a default no-argument constructor to such classes." + "text": "Reports classes that are directly dependent on too many other classes in the project. Modifications to any dependency of such classes may require changing the class, thus making it prone to instability. Only top-level classes are reported. Use the Maximum number of dependencies field to specify the maximum allowed number of dependencies for a class. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", + "markdown": "Reports classes that are directly dependent on too many other classes in the project.\n\nModifications to any dependency of such classes may require changing the class, thus making it prone to instability.\n\nOnly top-level classes are reported.\n\nUse the **Maximum number of dependencies** field to specify the maximum allowed number of dependencies for a class.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JavaBeans issues", - "index": 105, + "id": "Java/Dependency issues", + "index": 118, "toolComponent": { "name": "QDJVM" } @@ -16048,29 +15004,26 @@ ] }, { - "id": "ClassWithTooManyDependencies", + "id": "ClassWithoutNoArgConstructor", "shortDescription": { - "text": "Class with too many dependencies" + "text": "Class without no-arg constructor" }, "fullDescription": { - "text": "Reports classes that are directly dependent on too many other classes in the project. Modifications to any dependency of such classes may require changing the class, thus making it prone to instability. Only top-level classes are reported. Use the Maximum number of dependencies field to specify the maximum allowed number of dependencies for a class. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", - "markdown": "Reports classes that are directly dependent on too many other classes in the project.\n\nModifications to any dependency of such classes may require changing the class, thus making it prone to instability.\n\nOnly top-level classes are reported.\n\nUse the **Maximum number of dependencies** field to specify the maximum allowed number of dependencies for a class.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." + "text": "Reports classes without a constructor that takes no arguments (i.e. has no parameters). No-arg constructors are necessary in some contexts. For example, if a class needs to be created using reflection. Example: 'public class Bean {\n private String name;\n\n public Bean(String name) {\n this.name = name;\n }\n }' Use the checkbox below to ignore classes without explicit constructors. The compiler provides a default no-arg constructor to such classes.", + "markdown": "Reports classes without a constructor that takes no arguments (i.e. has no parameters). No-arg constructors are necessary in some contexts. For example, if a class needs to be created using reflection.\n\n**Example:**\n\n\n public class Bean {\n private String name;\n\n public Bean(String name) {\n this.name = name;\n }\n }\n\n\nUse the checkbox below to ignore classes without explicit constructors.\nThe compiler provides a default no-arg constructor to such classes." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Dependency issues", - "index": 108, + "id": "Java/JavaBeans issues", + "index": 115, "toolComponent": { "name": "QDJVM" } @@ -16094,10 +15047,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16128,10 +15078,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16162,17 +15109,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -16196,17 +15140,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 14", - "index": 102, + "index": 112, "toolComponent": { "name": "QDJVM" } @@ -16230,17 +15171,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Packaging issues", - "index": 36, + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -16264,17 +15202,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 7", - "index": 121, + "index": 130, "toolComponent": { "name": "QDJVM" } @@ -16298,17 +15233,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Imports", - "index": 21, + "index": 22, "toolComponent": { "name": "QDJVM" } @@ -16332,17 +15264,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -16366,17 +15295,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -16388,29 +15314,26 @@ ] }, { - "id": "Java9RedundantRequiresStatement", + "id": "UnnecessaryLocalVariable", "shortDescription": { - "text": "Redundant 'requires' directive in module-info" + "text": "Redundant local variable" }, "fullDescription": { - "text": "Reports redundant 'requires' directives in Java Platform Module System 'module-info.java' files. A 'requires' directive is redundant when a module 'A' requires a module 'B', but the code in module 'A' doesn't import any packages or classes from 'B'. Furthermore, all modules have an implicitly declared dependence on the 'java.base' module, therefore a 'requires java.base;' directive is always redundant. The quick-fix deletes the redundant 'requires' directive. If the deleted dependency re-exported modules that are actually used, the fix adds a 'requires' directives for these modules. This inspection only reports if the language level of the project or module is 9 or higher. New in 2017.1", - "markdown": "Reports redundant `requires` directives in Java Platform Module System `module-info.java` files. A `requires` directive is redundant when a module `A` requires a module `B`, but the code in module `A` doesn't import any packages or classes from `B`. Furthermore, all modules have an implicitly declared dependence on the `java.base` module, therefore a `requires java.base;` directive is always redundant.\n\n\nThe quick-fix deletes the redundant `requires` directive.\nIf the deleted dependency re-exported modules that are actually used, the fix adds a `requires` directives for these modules.\n\nThis inspection only reports if the language level of the project or module is 9 or higher.\n\nNew in 2017.1" + "text": "Reports unnecessary local variables that add nothing to the comprehensibility of a method, including: Local variables that are immediately returned. Local variables that are immediately assigned to another variable and then not used. Local variables that always have the same value as another local variable or parameter. Example: 'boolean yes() {\n boolean b = true;\n return b;\n }' After the quick-fix is applied: 'boolean yes() {\n return true;\n }' Configure the inspection: Use the Ignore immediately returned or thrown variables option to ignore immediately returned or thrown variables. Some coding styles suggest using such variables for clarity and ease of debugging. Use the Ignore variables which have an annotation option to ignore annotated variables.", + "markdown": "Reports unnecessary local variables that add nothing to the comprehensibility of a method, including:\n\n* Local variables that are immediately returned.\n* Local variables that are immediately assigned to another variable and then not used.\n* Local variables that always have the same value as another local variable or parameter.\n\n**Example:**\n\n\n boolean yes() {\n boolean b = true;\n return b;\n }\n\nAfter the quick-fix is applied:\n\n\n boolean yes() {\n return true;\n }\n \nConfigure the inspection:\n\n* Use the **Ignore immediately returned or thrown variables** option to ignore immediately returned or thrown variables. Some coding styles suggest using such variables for clarity and ease of debugging.\n* Use the **Ignore variables which have an annotation** option to ignore annotated variables." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Declaration redundancy", - "index": 12, + "id": "Java/Data flow", + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -16422,29 +15345,26 @@ ] }, { - "id": "UnnecessaryLocalVariable", + "id": "Java9RedundantRequiresStatement", "shortDescription": { - "text": "Redundant local variable" + "text": "Redundant 'requires' directive in module-info" }, "fullDescription": { - "text": "Reports unnecessary local variables that add nothing to the comprehensibility of a method, including: Local variables that are immediately returned. Local variables that are immediately assigned to another variable and then not used. Local variables that always have the same value as another local variable or parameter. Example: 'boolean yes() {\n boolean b = true;\n return b;\n }' After the quick-fix is applied: 'boolean yes() {\n return true;\n }' Configure the inspection: Use the Ignore immediately returned or thrown variables option to ignore immediately returned or thrown variables. Some coding styles suggest using such variables for clarity and ease of debugging. Use the Ignore variables which have an annotation option to ignore annotated variables.", - "markdown": "Reports unnecessary local variables that add nothing to the comprehensibility of a method, including:\n\n* Local variables that are immediately returned.\n* Local variables that are immediately assigned to another variable and then not used.\n* Local variables that always have the same value as another local variable or parameter.\n\n**Example:**\n\n\n boolean yes() {\n boolean b = true;\n return b;\n }\n\nAfter the quick-fix is applied:\n\n\n boolean yes() {\n return true;\n }\n \nConfigure the inspection:\n\n* Use the **Ignore immediately returned or thrown variables** option to ignore immediately returned or thrown variables. Some coding styles suggest using such variables for clarity and ease of debugging.\n* Use the **Ignore variables which have an annotation** option to ignore annotated variables." + "text": "Reports redundant 'requires' directives in Java Platform Module System 'module-info.java' files. A 'requires' directive is redundant when a module 'A' requires a module 'B', but the code in module 'A' doesn't import any packages or classes from 'B'. Furthermore, all modules have an implicitly declared dependence on the 'java.base' module, therefore a 'requires java.base;' directive is always redundant. The quick-fix deletes the redundant 'requires' directive. If the deleted dependency re-exported modules that are actually used, the fix adds a 'requires' directives for these modules. This inspection only reports if the language level of the project or module is 9 or higher. New in 2017.1", + "markdown": "Reports redundant `requires` directives in Java Platform Module System `module-info.java` files. A `requires` directive is redundant when a module `A` requires a module `B`, but the code in module `A` doesn't import any packages or classes from `B`. Furthermore, all modules have an implicitly declared dependence on the `java.base` module, therefore a `requires java.base;` directive is always redundant.\n\n\nThe quick-fix deletes the redundant `requires` directive.\nIf the deleted dependency re-exported modules that are actually used, the fix adds a `requires` directives for these modules.\n\nThis inspection only reports if the language level of the project or module is 9 or higher.\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Data flow", - "index": 44, + "id": "Java/Declaration redundancy", + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -16468,17 +15388,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -16502,10 +15419,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16536,10 +15450,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16570,17 +15481,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -16604,10 +15512,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16638,10 +15543,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16660,29 +15562,26 @@ ] }, { - "id": "UnqualifiedMethodAccess", + "id": "InstanceofIncompatibleInterface", "shortDescription": { - "text": "Instance method call not qualified with 'this'" + "text": "'instanceof' with incompatible interface" }, "fullDescription": { - "text": "Reports calls to non-'static' methods on the same instance that are not qualified with 'this'. Example: 'class Foo {\n void bar() {}\n\n void foo() {\n bar();\n }\n }' After the quick-fix is applied: 'class Foo {\n void bar() {}\n\n void foo() {\n this.bar();\n }\n }'", - "markdown": "Reports calls to non-`static` methods on the same instance that are not qualified with `this`.\n\n**Example:**\n\n\n class Foo {\n void bar() {}\n\n void foo() {\n bar();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n void bar() {}\n\n void foo() {\n this.bar();\n }\n }\n" + "text": "Reports 'instanceof' expressions where the compared type is an interface, and the compared expression has a class type that neither implements the compared interface, nor has any visible subclasses which implement the compared interface. Although that might be intended, normally such a construct is most likely an error, where the resulting 'instanceof' expression always evaluates to 'false'. Example: 'interface I1 {}\n\n interface I2 {}\n\n interface I3 extends I1 {}\n\n static class Sub1 implements I1 {}\n\n static class Sub2 extends Sub1 implements I2 {\n void test(Sub1 sub1) {\n if (sub1 instanceof I3) { // here 'I3' is incompatible interface\n }\n }\n }'", + "markdown": "Reports `instanceof` expressions where the compared type is an interface, and the compared expression has a class type that neither implements the compared interface, nor has any visible subclasses which implement the compared interface.\n\n\nAlthough that might be intended, normally such a construct is most likely an error, where\nthe resulting `instanceof` expression always evaluates to `false`.\n\n**Example:**\n\n\n interface I1 {}\n\n interface I2 {}\n\n interface I3 extends I1 {}\n\n static class Sub1 implements I1 {}\n\n static class Sub2 extends Sub1 implements I2 {\n void test(Sub1 sub1) {\n if (sub1 instanceof I3) { // here 'I3' is incompatible interface\n }\n }\n }\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -16694,29 +15593,26 @@ ] }, { - "id": "InstanceofIncompatibleInterface", + "id": "UnqualifiedMethodAccess", "shortDescription": { - "text": "'instanceof' with incompatible interface" + "text": "Instance method call not qualified with 'this'" }, "fullDescription": { - "text": "Reports 'instanceof' expressions where the compared type is an interface, and the compared expression has a class type that neither implements the compared interface, nor has any visible subclasses which implement the compared interface. Although that might be intended, normally such a construct is most likely an error, where the resulting 'instanceof' expression always evaluates to 'false'. Example: 'interface I1 {}\n\n interface I2 {}\n\n interface I3 extends I1 {}\n\n static class Sub1 implements I1 {}\n\n static class Sub2 extends Sub1 implements I2 {\n void test(Sub1 sub1) {\n if (sub1 instanceof I3) { // here 'I3' is incompatible interface\n }\n }\n }'", - "markdown": "Reports `instanceof` expressions where the compared type is an interface, and the compared expression has a class type that neither implements the compared interface, nor has any visible subclasses which implement the compared interface.\n\n\nAlthough that might be intended, normally such a construct is most likely an error, where\nthe resulting `instanceof` expression always evaluates to `false`.\n\n**Example:**\n\n\n interface I1 {}\n\n interface I2 {}\n\n interface I3 extends I1 {}\n\n static class Sub1 implements I1 {}\n\n static class Sub2 extends Sub1 implements I2 {\n void test(Sub1 sub1) {\n if (sub1 instanceof I3) { // here 'I3' is incompatible interface\n }\n }\n }\n" + "text": "Reports calls to non-'static' methods on the same instance that are not qualified with 'this'. Example: 'class Foo {\n void bar() {}\n\n void foo() {\n bar();\n }\n }' After the quick-fix is applied: 'class Foo {\n void bar() {}\n\n void foo() {\n this.bar();\n }\n }'", + "markdown": "Reports calls to non-`static` methods on the same instance that are not qualified with `this`.\n\n**Example:**\n\n\n class Foo {\n void bar() {}\n\n void foo() {\n bar();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n void bar() {}\n\n void foo() {\n this.bar();\n }\n }\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -16733,24 +15629,21 @@ "text": "Functional expression can be folded" }, "fullDescription": { - "text": "Reports method references or lambda expressions that point to a method of their own functional interface type and hence can be replaced with their qualifiers removing unnecessary object allocation. Example: 'SwingUtilities.invokeLater(r::run);\n SwingUtilities.invokeAndWait(() -> r.run());' After the quick-fix is applied: 'SwingUtilities.invokeLater(r);\n SwingUtilities.invokeAndWait(r);' This inspection only reports only if the language level of the project or module is 8 or higher.", - "markdown": "Reports method references or lambda expressions that point to a method of their own functional interface type and hence can be replaced with their qualifiers removing unnecessary object allocation.\n\nExample:\n\n\n SwingUtilities.invokeLater(r::run);\n SwingUtilities.invokeAndWait(() -> r.run());\n\nAfter the quick-fix is applied:\n\n\n SwingUtilities.invokeLater(r);\n SwingUtilities.invokeAndWait(r);\n\nThis inspection only reports only if the language level of the project or module is 8 or higher." + "text": "Reports method references or lambda expressions that point to a method of their own functional interface type and hence can be replaced with their qualifiers removing unnecessary object allocation. Example: 'SwingUtilities.invokeLater(r::run);\n SwingUtilities.invokeAndWait(() -> r.run());' After the quick-fix is applied: 'SwingUtilities.invokeLater(r);\n SwingUtilities.invokeAndWait(r);' This inspection reports only if the language level of the project or module is 8 or higher.", + "markdown": "Reports method references or lambda expressions that point to a method of their own functional interface type and hence can be replaced with their qualifiers removing unnecessary object allocation.\n\nExample:\n\n\n SwingUtilities.invokeLater(r::run);\n SwingUtilities.invokeAndWait(() -> r.run());\n\nAfter the quick-fix is applied:\n\n\n SwingUtilities.invokeLater(r);\n SwingUtilities.invokeAndWait(r);\n\nThis inspection reports only if the language level of the project or module is 8 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -16774,17 +15667,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -16796,29 +15686,26 @@ ] }, { - "id": "ThisEscapedInConstructor", + "id": "UnnecessarySuperConstructor", "shortDescription": { - "text": "'this' reference escaped in object construction" + "text": "Unnecessary call to 'super()'" }, "fullDescription": { - "text": "Reports possible escapes of 'this' during the object initialization. The escapes occur when 'this' is used as a method argument or an object of assignment in a constructor or initializer. Such escapes may result in subtle bugs, as the object is now available in the context where it is not guaranteed to be initialized. Example: 'class Foo {\n {\n System.out.println(this);\n }\n }'", - "markdown": "Reports possible escapes of `this` during the object initialization. The escapes occur when `this` is used as a method argument or an object of assignment in a constructor or initializer. Such escapes may result in subtle bugs, as the object is now available in the context where it is not guaranteed to be initialized.\n\n**Example:**\n\n\n class Foo {\n {\n System.out.println(this);\n }\n }\n" + "text": "Reports calls to no-arg superclass constructors during object construction. Such calls are unnecessary and may be removed. Example: 'class Foo {\n Foo() {\n super();\n }\n }' After the quick-fix is applied: 'class Foo {\n Foo() {\n }\n }'", + "markdown": "Reports calls to no-arg superclass constructors during object construction.\n\nSuch calls are unnecessary and may be removed.\n\n**Example:**\n\n\n class Foo {\n Foo() {\n super();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n Foo() {\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Initialization", - "index": 29, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -16830,29 +15717,26 @@ ] }, { - "id": "UnnecessarySuperConstructor", + "id": "ThisEscapedInConstructor", "shortDescription": { - "text": "Unnecessary call to 'super()'" + "text": "'this' reference escaped in object construction" }, "fullDescription": { - "text": "Reports calls to no-arg superclass constructors during object construction. Such calls are unnecessary and may be removed. Example: 'class Foo {\n Foo() {\n super();\n }\n }' After the quick-fix is applied: 'class Foo {\n Foo() {\n }\n }'", - "markdown": "Reports calls to no-arg superclass constructors during object construction.\n\nSuch calls are unnecessary and may be removed.\n\n**Example:**\n\n\n class Foo {\n Foo() {\n super();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n Foo() {\n }\n }\n" + "text": "Reports possible escapes of 'this' during the object initialization. The escapes occur when 'this' is used as a method argument or an object of assignment in a constructor or initializer. Such escapes may result in subtle bugs, as the object is now available in the context where it is not guaranteed to be initialized. Example: 'class Foo {\n {\n System.out.println(this);\n }\n }'", + "markdown": "Reports possible escapes of `this` during the object initialization. The escapes occur when `this` is used as a method argument or an object of assignment in a constructor or initializer. Such escapes may result in subtle bugs, as the object is now available in the context where it is not guaranteed to be initialized.\n\n**Example:**\n\n\n class Foo {\n {\n System.out.println(this);\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Initialization", + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -16864,29 +15748,26 @@ ] }, { - "id": "IfCanBeSwitch", + "id": "NonPublicClone", "shortDescription": { - "text": "'if' can be replaced with 'switch'" + "text": "'clone()' method not 'public'" }, "fullDescription": { - "text": "Reports 'if' statements that can be replaced with 'switch' statements. The replacement result is usually shorter and clearer. Example: 'void test(String str) {\n if (str.equals(\"1\")) {\n System.out.println(1);\n } else if (str.equals(\"2\")) {\n System.out.println(2);\n } else if (str.equals(\"3\")) {\n System.out.println(3);\n } else {\n System.out.println(4);\n }\n }' After the quick-fix is applied: 'void test(String str) {\n switch (str) {\n case \"1\" -> System.out.println(1);\n case \"2\" -> System.out.println(2);\n case \"3\" -> System.out.println(3);\n default -> System.out.println(4);\n }\n }' This inspection only reports if the language level of the project or module is 7 or higher. Use the Minimum number of 'if' condition branches field to specify the minimum number of 'if' condition branches for an 'if' statement to have to be reported. Note that the terminal 'else' branch (without 'if') is not counted. Use the Suggest switch on numbers option to enable the suggestion of 'switch' statements on primitive and boxed numbers and characters. Use the Suggest switch on enums option to enable the suggestion of 'switch' statements on 'enum' constants. Use the Only suggest on null-safe expressions option to suggest 'switch' statements that can't introduce a 'NullPointerException' only.", - "markdown": "Reports `if` statements that can be replaced with `switch` statements.\n\nThe replacement result is usually shorter and clearer.\n\n**Example:**\n\n\n void test(String str) {\n if (str.equals(\"1\")) {\n System.out.println(1);\n } else if (str.equals(\"2\")) {\n System.out.println(2);\n } else if (str.equals(\"3\")) {\n System.out.println(3);\n } else {\n System.out.println(4);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n void test(String str) {\n switch (str) {\n case \"1\" -> System.out.println(1);\n case \"2\" -> System.out.println(2);\n case \"3\" -> System.out.println(3);\n default -> System.out.println(4);\n }\n }\n \nThis inspection only reports if the language level of the project or module is 7 or higher.\n\nUse the **Minimum number of 'if' condition branches** field to specify the minimum number of `if` condition branches\nfor an `if` statement to have to be reported. Note that the terminal `else` branch (without `if`) is not counted.\n\n\nUse the **Suggest switch on numbers** option to enable the suggestion of `switch` statements on\nprimitive and boxed numbers and characters.\n\n\nUse the **Suggest switch on enums** option to enable the suggestion of `switch` statements on\n`enum` constants.\n\n\nUse the **Only suggest on null-safe expressions** option to suggest `switch` statements that can't introduce a `NullPointerException` only." + "text": "Reports 'clone()' methods that are 'protected' and not 'public'. When overriding the 'clone()' method from 'java.lang.Object', it is expected to make the method 'public', so that it is accessible from non-subclasses outside the package.", + "markdown": "Reports `clone()` methods that are `protected` and not `public`.\n\nWhen overriding the `clone()` method from `java.lang.Object`, it is expected to make the method `public`,\nso that it is accessible from non-subclasses outside the package." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids", - "index": 33, + "id": "Java/Cloning issues", + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -16898,29 +15779,26 @@ ] }, { - "id": "NonPublicClone", + "id": "IfCanBeSwitch", "shortDescription": { - "text": "'clone()' method not 'public'" + "text": "'if' can be replaced with 'switch'" }, "fullDescription": { - "text": "Reports 'clone()' methods that are 'protected' and not 'public'. When overriding the 'clone()' method from 'java.lang.Object', it is expected to make the method 'public', so that it is accessible from non-subclasses outside the package.", - "markdown": "Reports `clone()` methods that are `protected` and not `public`.\n\nWhen overriding the `clone()` method from `java.lang.Object`, it is expected to make the method `public`,\nso that it is accessible from non-subclasses outside the package." + "text": "Reports 'if' statements that can be replaced with 'switch' statements. The replacement result is usually shorter and clearer. Example: 'void test(String str) {\n if (str.equals(\"1\")) {\n System.out.println(1);\n } else if (str.equals(\"2\")) {\n System.out.println(2);\n } else if (str.equals(\"3\")) {\n System.out.println(3);\n } else {\n System.out.println(4);\n }\n }' After the quick-fix is applied: 'void test(String str) {\n switch (str) {\n case \"1\" -> System.out.println(1);\n case \"2\" -> System.out.println(2);\n case \"3\" -> System.out.println(3);\n default -> System.out.println(4);\n }\n }' This inspection only reports if the language level of the project or module is 7 or higher. Use the Minimum number of 'if' condition branches field to specify the minimum number of 'if' condition branches for an 'if' statement to have to be reported. Note that the terminal 'else' branch (without 'if') is not counted. Use the Suggest switch on numbers option to enable the suggestion of 'switch' statements on primitive and boxed numbers and characters. Use the Suggest switch on enums option to enable the suggestion of 'switch' statements on 'enum' constants. Use the Only suggest on null-safe expressions option to suggest 'switch' statements that can't introduce a 'NullPointerException' only.", + "markdown": "Reports `if` statements that can be replaced with `switch` statements.\n\nThe replacement result is usually shorter and clearer.\n\n**Example:**\n\n\n void test(String str) {\n if (str.equals(\"1\")) {\n System.out.println(1);\n } else if (str.equals(\"2\")) {\n System.out.println(2);\n } else if (str.equals(\"3\")) {\n System.out.println(3);\n } else {\n System.out.println(4);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n void test(String str) {\n switch (str) {\n case \"1\" -> System.out.println(1);\n case \"2\" -> System.out.println(2);\n case \"3\" -> System.out.println(3);\n default -> System.out.println(4);\n }\n }\n \nThis inspection only reports if the language level of the project or module is 7 or higher.\n\nUse the **Minimum number of 'if' condition branches** field to specify the minimum number of `if` condition branches\nfor an `if` statement to have to be reported. Note that the terminal `else` branch (without `if`) is not counted.\n\n\nUse the **Suggest switch on numbers** option to enable the suggestion of `switch` statements on\nprimitive and boxed numbers and characters.\n\n\nUse the **Suggest switch on enums** option to enable the suggestion of `switch` statements on\n`enum` constants.\n\n\nUse the **Only suggest on null-safe expressions** option to suggest `switch` statements that can't introduce a `NullPointerException` only." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Cloning issues", - "index": 86, + "id": "Java/Java language level migration aids", + "index": 34, "toolComponent": { "name": "QDJVM" } @@ -16944,10 +15822,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -16978,17 +15853,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -17005,24 +15877,21 @@ "text": "Comparator method can be simplified" }, "fullDescription": { - "text": "Reports redundant 'Comparator' combinator constructs which can be simplified. Example: 'c.thenComparing(Comparator.comparing(function));\n\n Comparator.comparing(Map.Entry::getKey);\n\n Collections.max(list, Comparator.reverseOrder());' After the quick-fixes are applied: 'c.thenComparing(function)\n\n Map.Entry.comparingByKey()\n\n Collections.min(list, Comparator.naturalOrder());' New in 2018.1", - "markdown": "Reports redundant `Comparator` combinator constructs which can be simplified.\n\nExample:\n\n\n c.thenComparing(Comparator.comparing(function));\n\n Comparator.comparing(Map.Entry::getKey);\n\n Collections.max(list, Comparator.reverseOrder());\n\nAfter the quick-fixes are applied:\n\n\n c.thenComparing(function)\n\n Map.Entry.comparingByKey()\n\n Collections.min(list, Comparator.naturalOrder());\n\nNew in 2018.1" + "text": "Reports 'Comparator' combinator constructs that can be simplified. Example: 'c.thenComparing(Comparator.comparing(function));\n\n Comparator.comparing(Map.Entry::getKey);\n\n Collections.max(list, Comparator.reverseOrder());' After the quick-fixes are applied: 'c.thenComparing(function)\n\n Map.Entry.comparingByKey()\n\n Collections.min(list, Comparator.naturalOrder());' New in 2018.1", + "markdown": "Reports `Comparator` combinator constructs that can be simplified.\n\nExample:\n\n\n c.thenComparing(Comparator.comparing(function));\n\n Comparator.comparing(Map.Entry::getKey);\n\n Collections.max(list, Comparator.reverseOrder());\n\nAfter the quick-fixes are applied:\n\n\n c.thenComparing(function)\n\n Map.Entry.comparingByKey()\n\n Collections.min(list, Comparator.naturalOrder());\n\nNew in 2018.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -17046,10 +15915,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -17073,24 +15939,21 @@ "text": "Redundant 'Collection.addAll()' call" }, "fullDescription": { - "text": "Reports 'Collection.addAll()' and 'Map.putAll()' calls immediately after instantiation of a collection using the no-arg constructor. Such constructs can be replaced with a single call to a parametrized constructor, which simplifies code. Also, for some collections the replacement might be more performant. Example: 'Set<String> set = new HashSet<>();\n set.addAll(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));' Can be replaced with: 'Set<String> set = new HashSet<>(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));' Standard JDK collection classes are supported by default. Additionally, you can specify other classes in the inspection options.", - "markdown": "Reports `Collection.addAll()` and `Map.putAll()` calls immediately after instantiation of a collection using the no-arg constructor.\n\nSuch constructs can be replaced with a single call to a parametrized constructor, which simplifies code. Also, for some collections the replacement\nmight be more performant.\n\n**Example:**\n\n Set<String> set = new HashSet<>();\n set.addAll(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));\n\nCan be replaced with:\n\n Set<String> set = new HashSet<>(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));\n\n\nStandard JDK collection classes are supported by default. Additionally, you can specify other classes in the inspection options." + "text": "Reports 'Collection.addAll()' and 'Map.putAll()' calls immediately after an instantiation of a collection using a no-arg constructor. Such constructs can be replaced with a single call to a parametrized constructor, which simplifies the code. Also, for some collections the replacement might be more performant. Example: 'Set<String> set = new HashSet<>();\n set.addAll(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));' After the quick-fix is applied: 'Set<String> set = new HashSet<>(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));' The JDK collection classes are supported by default. Additionally, you can specify other classes using the Classes to check panel.", + "markdown": "Reports `Collection.addAll()` and `Map.putAll()` calls immediately after an instantiation of a collection using a no-arg constructor.\n\nSuch constructs can be replaced with a single call to a parametrized constructor, which simplifies the code. Also, for some collections the replacement\nmight be more performant.\n\n**Example:**\n\n\n Set<String> set = new HashSet<>();\n set.addAll(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));\n\nAfter the quick-fix is applied:\n\n\n Set<String> set = new HashSet<>(Arrays.asList(\"alpha\", \"beta\", \"gamma\"));\n\n\nThe JDK collection classes are supported by default.\nAdditionally, you can specify other classes using the **Classes to check** panel." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -17114,17 +15977,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -17148,10 +16008,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -17182,17 +16039,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -17216,10 +16070,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -17250,17 +16101,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -17284,17 +16132,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 9", - "index": 64, + "index": 71, "toolComponent": { "name": "QDJVM" } @@ -17318,17 +16163,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -17352,10 +16194,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -17386,17 +16225,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 15", - "index": 34, + "id": "Java/Java language level migration aids/Java 16", + "index": 153, "toolComponent": { "name": "QDJVM" } @@ -17420,17 +16256,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Test frameworks", - "index": 97, + "index": 106, "toolComponent": { "name": "QDJVM" } @@ -17454,17 +16287,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -17488,17 +16318,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -17522,10 +16349,7 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -17556,17 +16380,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -17590,10 +16411,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -17624,17 +16442,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -17658,17 +16473,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Data flow", - "index": 44, + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -17692,17 +16504,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -17719,24 +16528,21 @@ "text": "Unused declaration" }, "fullDescription": { - "text": "Reports classes, methods, or fields in the specified inspection scope that are not used or unreachable from entry points. An entry point can be the main method, tests, classes mentioned outside the specified scope, classes accessible from 'module-info.java', and so on. You can also configure custom entry points by using name patterns or annotations. Example: 'public class Department {\n private Organization myOrganization;\n }' In this example, 'Department' explicitly references 'Organization' but if 'Department' class itself is unused, then inspection will report both classes. The inspection also reports parameters that are not used by their methods and all method implementations and overriders, as well as local variables that are declared but not used. Note: Some unused members may not be reported during in-editor code highlighting. For performance reasons, a non-private member is checked only when its name rarely occurs in the project. To see all results, run the inspection by selecting Code | Inspect Code or Code | Analyze Code | Run Inspection by Name from the main menu. Use the visibility settings below to configure members to be reported. For example, configuring report 'private' methods only means that 'public' methods of 'private' inner class will be reported but 'protected' methods of top level class will be ignored. Use the entry points tab to configure entry points to be considered during the inspection run. You can add entry points manually when inspection results are ready. If your code uses unsupported frameworks, there are several options: If the framework relies on annotations, use the Annotations... button to configure the framework's annotations. If the framework doesn't rely on annotations, try to configure class name patterns that are expected by the framework. This way the annotated code accessible by the framework internals will be treated as used.", - "markdown": "Reports classes, methods, or fields in the specified inspection scope that are not used or unreachable from entry points.\n\nAn entry point can be the main method, tests, classes mentioned outside the specified scope, classes accessible from\n`module-info.java`, and so on. You can also configure custom entry points by using name patterns or annotations.\n\n**Example:**\n\n\n public class Department {\n private Organization myOrganization;\n }\n\nIn this example, `Department` explicitly references `Organization` but if `Department` class itself is unused, then inspection will report both classes.\n\n\nThe inspection also reports parameters that are not used by their methods and all method implementations and overriders, as well as local\nvariables that are declared but not used.\n\n\n**Note:** Some unused members may not be reported during in-editor code highlighting. For performance reasons, a non-private member is\nchecked only when its name rarely occurs in the project.\nTo see all results, run the inspection by selecting **Code \\| Inspect Code** or **Code \\| Analyze Code \\| Run Inspection by Name** from the main menu.\n\nUse the visibility settings below to configure members to be reported. For example, configuring report `private` methods only means\nthat `public` methods of `private` inner class will be reported but `protected` methods of top level class\nwill be ignored.\n\n\nUse the **entry points** tab to configure entry points to be considered during the inspection run.\n\nYou can add entry points manually when inspection results are ready.\n\nIf your code uses unsupported frameworks, there are several options:\n\n* If the framework relies on annotations, use the **Annotations...** button to configure the framework's annotations.\n* If the framework doesn't rely on annotations, try to configure class name patterns that are expected by the framework.\n\nThis way the annotated code accessible by the framework internals will be treated as used." + "text": "Reports classes, methods, or fields that are not used or unreachable from the entry points. An entry point can be a main method, tests, classes from outside the specified scope, classes accessible from 'module-info.java', and so on. It is possible to configure custom entry points by using name patterns or annotations. Example: 'public class Department {\n private Organization myOrganization;\n }' In this example, 'Department' explicitly references 'Organization' but if 'Department' class itself is unused, then inspection will report both classes. The inspection also reports parameters that are not used by their methods and all method implementations and overriders, as well as local variables that are declared but not used. Note: Some unused members may not be reported during in-editor code highlighting. For performance reasons, a non-private member is checked only when its name rarely occurs in the project. To see all results, run the inspection by selecting Code | Inspect Code or Code | Analyze Code | Run Inspection by Name from the main menu. Use the visibility settings below to configure members to be reported. For example, configuring report 'private' methods only means that 'public' methods of 'private' inner class will be reported but 'protected' methods of top level class will be ignored. Use the entry points tab to configure entry points to be considered during the inspection run. You can add entry points manually when inspection results are ready. If your code uses unsupported frameworks, there are several options: If the framework relies on annotations, use the Annotations... button to configure the framework's annotations. If the framework doesn't rely on annotations, try to configure class name patterns that are expected by the framework. This way the annotated code accessible by the framework internals will be treated as used.", + "markdown": "Reports classes, methods, or fields that are not used or unreachable from the entry points.\n\nAn entry point can be a main method, tests, classes from outside the specified scope, classes accessible from\n`module-info.java`, and so on. It is possible to configure custom entry points by using name patterns or annotations.\n\n**Example:**\n\n\n public class Department {\n private Organization myOrganization;\n }\n\nIn this example, `Department` explicitly references `Organization` but if `Department` class itself is unused, then inspection will report both classes.\n\n\nThe inspection also reports parameters that are not used by their methods and all method implementations and overriders, as well as local\nvariables that are declared but not used.\n\n\n**Note:** Some unused members may not be reported during in-editor code highlighting. For performance reasons, a non-private member is\nchecked only when its name rarely occurs in the project.\nTo see all results, run the inspection by selecting **Code \\| Inspect Code** or **Code \\| Analyze Code \\| Run Inspection by Name** from the main menu.\n\nUse the visibility settings below to configure members to be reported. For example, configuring report `private` methods only means\nthat `public` methods of `private` inner class will be reported but `protected` methods of top level class\nwill be ignored.\n\n\nUse the **entry points** tab to configure entry points to be considered during the inspection run.\n\nYou can add entry points manually when inspection results are ready.\n\nIf your code uses unsupported frameworks, there are several options:\n\n* If the framework relies on annotations, use the **Annotations...** button to configure the framework's annotations.\n* If the framework doesn't rely on annotations, try to configure class name patterns that are expected by the framework.\n\nThis way the annotated code accessible by the framework internals will be treated as used." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -17760,10 +16566,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -17794,17 +16597,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JavaBeans issues", - "index": 105, + "index": 115, "toolComponent": { "name": "QDJVM" } @@ -17828,17 +16628,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -17850,29 +16647,26 @@ ] }, { - "id": "WaitCalledOnCondition", + "id": "NonSynchronizedMethodOverridesSynchronizedMethod", "shortDescription": { - "text": "'wait()' called on 'java.util.concurrent.locks.Condition' object" + "text": "Unsynchronized method overrides 'synchronized' method" }, "fullDescription": { - "text": "Reports calls to 'wait()' made on a 'java.util.concurrent.locks.Condition' object. This is probably a programming error, and some variant of the 'await()' method was intended instead. Example: 'void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.wait();\n }\n }' Good code would look like this: 'void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.await();\n }\n }'", - "markdown": "Reports calls to `wait()` made on a `java.util.concurrent.locks.Condition` object. This is probably a programming error, and some variant of the `await()` method was intended instead.\n\n**Example:**\n\n\n void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.wait();\n }\n }\n\nGood code would look like this:\n\n\n void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.await();\n }\n }\n" + "text": "Reports non-'synchronized' methods overriding 'synchronized' methods. The overridden method will not be automatically synchronized if the superclass method is declared as 'synchronized'. This may result in unexpected race conditions when using the subclass. Example: 'class Super {\n synchronized void process() {}\n }\n class Sub extends Super {\n // Unsynchronized method 'process()' overrides synchronized method\n void process() {}\n }'", + "markdown": "Reports non-`synchronized` methods overriding `synchronized` methods.\n\n\nThe overridden method will not be automatically synchronized if the superclass method\nis declared as `synchronized`. This may result in unexpected race conditions when using the subclass.\n\n**Example:**\n\n\n class Super {\n synchronized void process() {}\n }\n class Sub extends Super {\n // Unsynchronized method 'process()' overrides synchronized method\n void process() {}\n } \n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -17884,29 +16678,26 @@ ] }, { - "id": "NonSynchronizedMethodOverridesSynchronizedMethod", + "id": "WaitCalledOnCondition", "shortDescription": { - "text": "Unsynchronized method overrides 'synchronized' method" + "text": "'wait()' called on 'java.util.concurrent.locks.Condition' object" }, "fullDescription": { - "text": "Reports non-'synchronized' methods overriding 'synchronized' methods. The overridden method will not be automatically synchronized if the superclass method is declared as 'synchronized'. This may result in unexpected race conditions when using the subclass. Example: 'class Super {\n synchronized void process() {}\n }\n class Sub extends Super {\n // Unsynchronized method 'process()' overrides synchronized method\n void process() {}\n }'", - "markdown": "Reports non-`synchronized` methods overriding `synchronized` methods.\n\n\nThe overridden method will not be automatically synchronized if the superclass method\nis declared as `synchronized`. This may result in unexpected race conditions when using the subclass.\n\n**Example:**\n\n\n class Super {\n synchronized void process() {}\n }\n class Sub extends Super {\n // Unsynchronized method 'process()' overrides synchronized method\n void process() {}\n } \n" + "text": "Reports calls to 'wait()' made on a 'java.util.concurrent.locks.Condition' object. This is probably a programming error, and some variant of the 'await()' method was intended instead. Example: 'void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.wait();\n }\n }' Good code would look like this: 'void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.await();\n }\n }'", + "markdown": "Reports calls to `wait()` made on a `java.util.concurrent.locks.Condition` object. This is probably a programming error, and some variant of the `await()` method was intended instead.\n\n**Example:**\n\n\n void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.wait();\n }\n }\n\nGood code would look like this:\n\n\n void acquire(Condition released) throws InterruptedException {\n while (acquired) {\n released.await();\n }\n }\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -17930,17 +16721,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -17964,17 +16752,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -17998,17 +16783,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -18032,17 +16814,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Resource management", - "index": 101, + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -18066,17 +16845,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -18100,17 +16876,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -18134,10 +16907,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -18168,17 +16938,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -18202,17 +16969,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -18229,24 +16993,21 @@ "text": "Dynamic regular expression could be replaced by compiled 'Pattern'" }, "fullDescription": { - "text": "Reports calls to the regular expression methods (such as 'matches()' or 'replace()') of 'java.lang.String' using constants arguments. Such calls may be profitably replaced with a 'private static final Pattern' field so that the regular expression does not have to be compiled each time it is used. Example: 'text.replace(\"abc\", replacement);' After the quick-fix is applied: 'private static final Pattern ABC = Pattern.compile(\"abc\", Pattern.LITERAL);\n ABC.matcher(text).replaceAll(Matcher.quoteReplacement(replacement));'", - "markdown": "Reports calls to the regular expression methods (such as `matches()` or `replace()`) of `java.lang.String` using constants arguments.\n\n\nSuch calls may be profitably replaced with a `private static final Pattern` field\nso that the regular expression does not have to be compiled each time it is used.\n\n**Example:**\n\n\n text.replace(\"abc\", replacement);\n\nAfter the quick-fix is applied:\n\n\n private static final Pattern ABC = Pattern.compile(\"abc\", Pattern.LITERAL);\n ABC.matcher(text).replaceAll(Matcher.quoteReplacement(replacement));\n" + "text": "Reports calls to the regular expression methods (such as 'matches()' or 'split()') of 'java.lang.String' using constant arguments. Such calls may be profitably replaced with a 'private static final Pattern' field so that the regular expression does not have to be compiled each time it is used. Example: 'text.replaceAll(\"abc\", replacement);' After the quick-fix is applied: 'private static final Pattern ABC = Pattern.compile(\"abc\", Pattern.LITERAL);\n ABC.matcher(text).replaceAll(Matcher.quoteReplacement(replacement));'", + "markdown": "Reports calls to the regular expression methods (such as `matches()` or `split()`) of `java.lang.String` using constant arguments.\n\n\nSuch calls may be profitably replaced with a `private static final Pattern` field\nso that the regular expression does not have to be compiled each time it is used.\n\n**Example:**\n\n\n text.replaceAll(\"abc\", replacement);\n\nAfter the quick-fix is applied:\n\n\n private static final Pattern ABC = Pattern.compile(\"abc\", Pattern.LITERAL);\n ABC.matcher(text).replaceAll(Matcher.quoteReplacement(replacement));\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -18270,17 +17031,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -18304,17 +17062,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -18338,17 +17093,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -18365,24 +17117,21 @@ "text": "'public' constructor in non-public class" }, "fullDescription": { - "text": "Reports all 'public' constructors in non-'public' classes. Usually, there is no reason for creating a 'public' constructor in a class with a lower access level. Please note, however, that this inspection changes the behavior of some reflection calls. In particular, 'Class.getConstructor()' won't be able to find the updated constructor ('Class.getDeclaredConstructor()' should be used instead). Do not use the inspection if your code or code of some used frameworks relies on constructor accessibility via 'getConstructor()'.", - "markdown": "Reports all `public` constructors in non-`public` classes.\n\nUsually, there is no reason for creating a `public` constructor in a class with a lower access level.\nPlease note, however, that this inspection changes the behavior of some reflection calls. In particular,\n`Class.getConstructor()` won't be able to find the updated constructor\n(`Class.getDeclaredConstructor()` should be used instead). Do not use the inspection if your code\nor code of some used frameworks relies on constructor accessibility via `getConstructor()`." + "text": "Reports 'public' constructors in non-'public' classes. Usually, there is no reason for creating a 'public' constructor in a class with a lower access level. Please note, however, that this inspection changes the behavior of some reflection calls. In particular, 'Class.getConstructor()' won't be able to find the updated constructor ('Class.getDeclaredConstructor()' should be used instead). Do not use the inspection if your code or code of some used frameworks relies on constructor accessibility via 'getConstructor()'. Example: 'class House {\n public House() {}\n }' After the quick-fix is applied: 'class House {\n House() {}\n }'", + "markdown": "Reports `public` constructors in non-`public` classes.\n\nUsually, there is no reason for creating a `public` constructor in a class with a lower access level.\nPlease note, however, that this inspection changes the behavior of some reflection calls. In particular,\n`Class.getConstructor()` won't be able to find the updated constructor\n(`Class.getDeclaredConstructor()` should be used instead). Do not use the inspection if your code\nor code of some used frameworks relies on constructor accessibility via `getConstructor()`.\n\n**Example:**\n\n\n class House {\n public House() {}\n }\n\nAfter the quick-fix is applied:\n\n\n class House {\n House() {}\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -18406,17 +17155,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -18440,10 +17186,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -18462,29 +17205,26 @@ ] }, { - "id": "ExternalizableWithoutPublicNoArgConstructor", + "id": "StaticGuardedByInstance", "shortDescription": { - "text": "'Externalizable' class without 'public' no-arg constructor" + "text": "Static member guarded by instance field or this" }, "fullDescription": { - "text": "Reports 'Externalizable' classes without a public no-argument constructor. When an 'Externalizable' object is reconstructed, an instance is created using the public no-arg constructor before the 'readExternal' method called. If a public no-arg constructor is not available, a 'java.io.InvalidClassException' will be thrown at runtime.", - "markdown": "Reports `Externalizable` classes without a public no-argument constructor.\n\nWhen an `Externalizable` object is reconstructed, an instance is created using the public\nno-arg constructor before the `readExternal` method called. If a public\nno-arg constructor is not available, a `java.io.InvalidClassException` will be\nthrown at runtime." + "text": "Reports '@GuardedBy' annotations on 'static' fields or methods in which the guard is either a non-static field or 'this'. Guarding a static element with a non-static element may result in excessive concurrency, multiple threads may be able to access the guarded field simultaneously by locking in different object contexts. Example: 'private ReadWriteLock lock = new ReentrantReadWriteLock();\n\n @GuardedBy(\"lock\")\n public static void bar() {\n // ...\n }' Supported '@GuardedBy' annotations are: 'net.jcip.annotations.GuardedBy' 'javax.annotation.concurrent.GuardedBy' 'org.apache.http.annotation.GuardedBy' 'com.android.annotations.concurrency.GuardedBy' 'androidx.annotation.GuardedBy' 'com.google.errorprone.annotations.concurrent.GuardedBy'", + "markdown": "Reports `@GuardedBy` annotations on `static` fields or methods in which the guard is either a non-static field or `this`.\n\nGuarding a static element with a non-static element may result in\nexcessive concurrency, multiple threads may be able to access the guarded field simultaneously by locking in different object contexts.\n\nExample:\n\n\n private ReadWriteLock lock = new ReentrantReadWriteLock();\n\n @GuardedBy(\"lock\")\n public static void bar() {\n // ...\n }\n\nSupported `@GuardedBy` annotations are:\n\n* `net.jcip.annotations.GuardedBy`\n* `javax.annotation.concurrent.GuardedBy`\n* `org.apache.http.annotation.GuardedBy`\n* `com.android.annotations.concurrency.GuardedBy`\n* `androidx.annotation.GuardedBy`\n* `com.google.errorprone.annotations.concurrent.GuardedBy`" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Serialization issues", - "index": 18, + "id": "Java/Concurrency annotation issues", + "index": 84, "toolComponent": { "name": "QDJVM" } @@ -18496,29 +17236,26 @@ ] }, { - "id": "StaticGuardedByInstance", + "id": "ExternalizableWithoutPublicNoArgConstructor", "shortDescription": { - "text": "Static member guarded by instance field or this" + "text": "'Externalizable' class without 'public' no-arg constructor" }, "fullDescription": { - "text": "Reports '@GuardedBy' annotations on 'static' fields or methods in which the guard is either a non-static field or 'this'. Guarding a static element with a non-static element may result in excessive concurrency, multiple threads may be able to access the guarded field simultaneously by locking in different object contexts. Example: 'private ReadWriteLock lock = new ReentrantReadWriteLock();\n\n @GuardedBy(\"lock\")\n public static void bar() {\n // ...\n }' Supported '@GuardedBy' annotations are: 'net.jcip.annotations.GuardedBy' 'javax.annotation.concurrent.GuardedBy' 'org.apache.http.annotation.GuardedBy' 'com.android.annotations.concurrency.GuardedBy' 'androidx.annotation.GuardedBy' 'com.google.errorprone.annotations.concurrent.GuardedBy'", - "markdown": "Reports `@GuardedBy` annotations on `static` fields or methods in which the guard is either a non-static field or `this`.\n\nGuarding a static element with a non-static element may result in\nexcessive concurrency, multiple threads may be able to access the guarded field simultaneously by locking in different object contexts.\n\nExample:\n\n\n private ReadWriteLock lock = new ReentrantReadWriteLock();\n\n @GuardedBy(\"lock\")\n public static void bar() {\n // ...\n }\n\nSupported `@GuardedBy` annotations are:\n\n* `net.jcip.annotations.GuardedBy`\n* `javax.annotation.concurrent.GuardedBy`\n* `org.apache.http.annotation.GuardedBy`\n* `com.android.annotations.concurrency.GuardedBy`\n* `androidx.annotation.GuardedBy`\n* `com.google.errorprone.annotations.concurrent.GuardedBy`" + "text": "Reports 'Externalizable' classes without a public no-argument constructor. When an 'Externalizable' object is reconstructed, an instance is created using the public no-arg constructor before the 'readExternal' method called. If a public no-arg constructor is not available, a 'java.io.InvalidClassException' will be thrown at runtime.", + "markdown": "Reports `Externalizable` classes without a public no-argument constructor.\n\nWhen an `Externalizable` object is reconstructed, an instance is created using the public\nno-arg constructor before the `readExternal` method called. If a public\nno-arg constructor is not available, a `java.io.InvalidClassException` will be\nthrown at runtime." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Concurrency annotation issues", - "index": 76, + "id": "Java/Serialization issues", + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -18542,17 +17279,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -18576,17 +17310,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -18610,10 +17341,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -18632,29 +17360,26 @@ ] }, { - "id": "LengthOneStringInIndexOf", + "id": "MisspelledEquals", "shortDescription": { - "text": "Single character string argument in 'String.indexOf()' call" + "text": "'equal()' instead of 'equals()'" }, "fullDescription": { - "text": "Reports single character strings being used as an argument in 'String.indexOf()' and 'String.lastIndexOf()' calls. A quick-fix is suggested to replace such string literals with equivalent character literals, gaining some performance enhancement. Example: 'return s.indexOf(\"x\");' After the quick-fix is applied: 'return s.indexOf('x');'", - "markdown": "Reports single character strings being used as an argument in `String.indexOf()` and `String.lastIndexOf()` calls.\n\nA quick-fix is suggested to replace such string literals with equivalent character literals, gaining some performance enhancement.\n\n**Example:**\n\n\n return s.indexOf(\"x\");\n\nAfter the quick-fix is applied:\n\n\n return s.indexOf('x');\n" + "text": "Reports declarations of 'equal()' with a single parameter. Normally, this is a typo and 'equals()' is actually intended. A quick-fix is suggested to rename the method to 'equals'. Example: 'class Main {\n public boolean equal(Object obj) {\n return true;\n }\n }' After the quick-fix is applied: 'class Main {\n public boolean equals(Object obj) {\n return true;\n }\n }'", + "markdown": "Reports declarations of `equal()` with a single parameter. Normally, this is a typo and `equals()` is actually intended.\n\nA quick-fix is suggested to rename the method to `equals`.\n\n**Example:**\n\n\n class Main {\n public boolean equal(Object obj) {\n return true;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Main {\n public boolean equals(Object obj) {\n return true;\n }\n }\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Performance", - "index": 10, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -18678,17 +17403,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -18700,29 +17422,26 @@ ] }, { - "id": "MisspelledEquals", + "id": "LengthOneStringInIndexOf", "shortDescription": { - "text": "'equal()' instead of 'equals()'" + "text": "Single character string argument in 'String.indexOf()' call" }, "fullDescription": { - "text": "Reports declarations of 'equal()' with a single parameter. Normally, this is a typo and 'equals()' is actually intended. A quick-fix is suggested to rename the method to 'equals'. Example: 'class Main {\n public boolean equal(Object obj) {\n return true;\n }\n }' After the quick-fix is applied: 'class Main {\n public boolean equals(Object obj) {\n return true;\n }\n }'", - "markdown": "Reports declarations of `equal()` with a single parameter. Normally, this is a typo and `equals()` is actually intended.\n\nA quick-fix is suggested to rename the method to `equals`.\n\n**Example:**\n\n\n class Main {\n public boolean equal(Object obj) {\n return true;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Main {\n public boolean equals(Object obj) {\n return true;\n }\n }\n" + "text": "Reports single character strings being used as an argument in 'String.indexOf()' and 'String.lastIndexOf()' calls. A quick-fix is suggested to replace such string literals with equivalent character literals, gaining some performance enhancement. Example: 'return s.indexOf(\"x\");' After the quick-fix is applied: 'return s.indexOf('x');'", + "markdown": "Reports single character strings being used as an argument in `String.indexOf()` and `String.lastIndexOf()` calls.\n\nA quick-fix is suggested to replace such string literals with equivalent character literals, gaining some performance enhancement.\n\n**Example:**\n\n\n return s.indexOf(\"x\");\n\nAfter the quick-fix is applied:\n\n\n return s.indexOf('x');\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Performance", + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -18746,17 +17465,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -18780,17 +17496,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -18814,17 +17527,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -18848,17 +17558,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -18882,17 +17589,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -18916,17 +17620,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -18950,10 +17651,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -18984,17 +17682,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Memory", - "index": 126, + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -19018,17 +17713,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -19052,17 +17744,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -19086,17 +17775,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -19120,10 +17806,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -19154,17 +17837,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -19188,17 +17868,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -19222,17 +17899,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -19256,17 +17930,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -19290,10 +17961,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -19324,10 +17992,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -19358,17 +18023,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -19392,17 +18054,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -19426,10 +18085,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -19460,17 +18116,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -19482,29 +18135,26 @@ ] }, { - "id": "UnnecessaryModifier", + "id": "NonThreadSafeLazyInitialization", "shortDescription": { - "text": "Unnecessary modifier" + "text": "Unsafe lazy initialization of 'static' field" }, "fullDescription": { - "text": "Reports redundant modifiers and suggests to remove them. The resulting code will be shorter, but the behaviour and meaning will remain the same. Example 1: '// all code is implicitly strictfp under Java 17 and higher\n strictfp class X {\n\n // inner enums are implicitly static\n static enum Inner {\n A, B, C\n }\n\n // inner records are implicitly static\n static record R() {\n }\n }' Example 2: 'final record R() {\n // all records are implicitly final\n }' Example 3: '// all interfaces are implicitly abstract\n abstract interface Printer {\n\n // all interface members are implicitly public\n public int size();\n\n // all inner classes of interfaces are implicitly static\n static class Inner {}\n }'", - "markdown": "Reports redundant modifiers and suggests to remove them. The resulting code will be shorter, but the behaviour and meaning will remain the same.\n\n**Example 1:**\n\n\n // all code is implicitly strictfp under Java 17 and higher\n strictfp class X {\n\n // inner enums are implicitly static\n static enum Inner {\n A, B, C\n }\n\n // inner records are implicitly static\n static record R() {\n }\n }\n\n**Example 2:**\n\n\n final record R() {\n // all records are implicitly final\n }\n\n**Example 3:**\n\n\n // all interfaces are implicitly abstract\n abstract interface Printer {\n\n // all interface members are implicitly public\n public int size();\n\n // all inner classes of interfaces are implicitly static\n static class Inner {}\n }\n" + "text": "Reports 'static' variables that are lazily initialized in a non-thread-safe manner. Lazy initialization of 'static' variables should be done with an appropriate synchronization construct to prevent different threads from performing conflicting initialization. When applicable, a quick-fix, which introduces the lazy initialization holder class idiom, is suggested. This idiom makes use of the fact that the JVM guarantees that a class will not be initialized until it is used. Example: 'class X {\n private static List<String> list;\n\n public List<String> getList() {\n if (list == null) {\n list = List.of(\"one\", \"two\", \"tree\");\n }\n return list;\n }\n }' After the quick-fix is applied: 'class X {\n private static final class ListHolder {\n static final List<String> list = List.of(\"one\", \"two\", \"tree\");\n }\n\n public List<String> getList() {\n return ListHolder.list;\n }\n }'", + "markdown": "Reports `static` variables that are lazily initialized in a non-thread-safe manner.\n\nLazy initialization of `static` variables should be done with an appropriate synchronization construct\nto prevent different threads from performing conflicting initialization.\n\nWhen applicable, a quick-fix, which introduces the\n[lazy initialization holder class idiom](https://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom), is suggested.\nThis idiom makes use of the fact that the JVM guarantees that a class will not be initialized until it is used.\n\n**Example:**\n\n\n class X {\n private static List<String> list;\n\n public List<String> getList() {\n if (list == null) {\n list = List.of(\"one\", \"two\", \"tree\");\n }\n return list;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class X {\n private static final class ListHolder {\n static final List<String> list = List.of(\"one\", \"two\", \"tree\");\n }\n\n public List<String> getList() {\n return ListHolder.list;\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Initialization", + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -19516,29 +18166,26 @@ ] }, { - "id": "NonThreadSafeLazyInitialization", + "id": "UnnecessaryModifier", "shortDescription": { - "text": "Unsafe lazy initialization of 'static' field" + "text": "Unnecessary modifier" }, "fullDescription": { - "text": "Reports 'static' variables that are lazily initialized in a non-thread-safe manner. Lazy initialization of 'static' variables should be done with an appropriate synchronization construct to prevent different threads from performing conflicting initialization. When applicable, a quick-fix, which introduces the lazy initialization holder class idiom, is suggested. This idiom makes use of the fact that the JVM guarantees that a class will not be initialized until it is used. Example: 'class X {\n private static List<String> list;\n\n public List<String> getList() {\n if (list == null) {\n list = List.of(\"one\", \"two\", \"tree\");\n }\n return list;\n }\n }' After the quick-fix is applied: 'class X {\n private static final class ListHolder {\n static final List<String> list = List.of(\"one\", \"two\", \"tree\");\n }\n\n public List<String> getList() {\n return ListHolder.list;\n }\n }'", - "markdown": "Reports `static` variables that are lazily initialized in a non-thread-safe manner.\n\nLazy initialization of `static` variables should be done with an appropriate synchronization construct\nto prevent different threads from performing conflicting initialization.\n\nWhen applicable, a quick-fix, which introduces the\n[lazy initialization holder class idiom](https://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom), is suggested.\nThis idiom makes use of the fact that the JVM guarantees that a class will not be initialized until it is used.\n\n**Example:**\n\n\n class X {\n private static List<String> list;\n\n public List<String> getList() {\n if (list == null) {\n list = List.of(\"one\", \"two\", \"tree\");\n }\n return list;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class X {\n private static final class ListHolder {\n static final List<String> list = List.of(\"one\", \"two\", \"tree\");\n }\n\n public List<String> getList() {\n return ListHolder.list;\n }\n }\n" + "text": "Reports redundant modifiers and suggests to remove them. The resulting code will be shorter, but the behaviour and meaning will remain the same. Example 1: '// all code is implicitly strictfp under Java 17 and higher\n strictfp class X {\n\n // inner enums are implicitly static\n static enum Inner {\n A, B, C\n }\n\n // inner records are implicitly static\n static record R() {\n }\n }' Example 2: 'final record R() {\n // all records are implicitly final\n }' Example 3: '// all interfaces are implicitly abstract\n abstract interface Printer {\n\n // all interface members are implicitly public\n public int size();\n\n // all inner classes of interfaces are implicitly static\n static class Inner {}\n }'", + "markdown": "Reports redundant modifiers and suggests to remove them. The resulting code will be shorter, but the behaviour and meaning will remain the same.\n\n**Example 1:**\n\n\n // all code is implicitly strictfp under Java 17 and higher\n strictfp class X {\n\n // inner enums are implicitly static\n static enum Inner {\n A, B, C\n }\n\n // inner records are implicitly static\n static record R() {\n }\n }\n\n**Example 2:**\n\n\n final record R() {\n // all records are implicitly final\n }\n\n**Example 3:**\n\n\n // all interfaces are implicitly abstract\n abstract interface Printer {\n\n // all interface members are implicitly public\n public int size();\n\n // all inner classes of interfaces are implicitly static\n static class Inner {}\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Initialization", - "index": 29, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -19562,10 +18209,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -19596,17 +18240,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Cloning issues", - "index": 86, + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -19630,17 +18271,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -19664,17 +18302,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -19698,17 +18333,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -19732,10 +18364,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -19766,17 +18395,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Memory", - "index": 126, + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -19788,29 +18414,26 @@ ] }, { - "id": "ClassNameSameAsAncestorName", + "id": "RedundantMethodOverride", "shortDescription": { - "text": "Class name same as ancestor name" + "text": "Method is identical to its super method" }, "fullDescription": { - "text": "Reports classes that have the same name as one of their superclasses, while their fully qualified names remain different. Such class names may be very confusing. Example: 'package util;\n abstract class Iterable<T> implements java.lang.Iterable<T> {}' A quick-fix that renames such classes is available only in the editor.", - "markdown": "Reports classes that have the same name as one of their superclasses, while their fully qualified names remain different. Such class names may be very confusing.\n\n**Example:**\n\n\n package util;\n abstract class Iterable<T> implements java.lang.Iterable<T> {}\n\nA quick-fix that renames such classes is available only in the editor." + "text": "Reports methods that are identical to their super methods. Such methods have the same signature as their super method and either have an identical body or only their body consists only of a call to the super method. These methods are redundant and can be removed. Use the checkbox below to run the inspection for the methods that override library methods. Checking library methods may slow down the inspection.", + "markdown": "Reports methods that are identical to their super methods. Such methods have the same signature as their super method and either have an identical body or only their body consists only of a call to the super method. These methods are redundant and can be removed.\n\n\nUse the checkbox below to run the inspection for the methods that override library methods.\nChecking library methods may slow down the inspection." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Naming conventions/Class", - "index": 57, + "id": "Java/Inheritance issues", + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -19822,29 +18445,26 @@ ] }, { - "id": "RedundantMethodOverride", + "id": "ClassNameSameAsAncestorName", "shortDescription": { - "text": "Method is identical to its super method" + "text": "Class name same as ancestor name" }, "fullDescription": { - "text": "Reports methods that are identical to their super methods. Such methods have the same signature as their super method and either have an identical body or only their body consists only of a call to the super method. These methods are redundant and can be removed. Use the checkbox below to run the inspection for the methods that override library methods. Checking library methods may slow down the inspection.", - "markdown": "Reports methods that are identical to their super methods. Such methods have the same signature as their super method and either have an identical body or only their body consists only of a call to the super method. These methods are redundant and can be removed.\n\n\nUse the checkbox below to run the inspection for the methods that override library methods.\nChecking library methods may slow down the inspection." + "text": "Reports classes that have the same name as one of their superclasses, while their fully qualified names remain different. Such class names may be very confusing. Example: 'package util;\n abstract class Iterable<T> implements java.lang.Iterable<T> {}' A quick-fix that renames such classes is available only in the editor.", + "markdown": "Reports classes that have the same name as one of their superclasses, while their fully qualified names remain different. Such class names may be very confusing.\n\n**Example:**\n\n\n package util;\n abstract class Iterable<T> implements java.lang.Iterable<T> {}\n\nA quick-fix that renames such classes is available only in the editor." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Inheritance issues", - "index": 113, + "id": "Java/Naming conventions/Class", + "index": 64, "toolComponent": { "name": "QDJVM" } @@ -19868,10 +18488,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -19902,10 +18519,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -19926,7 +18540,7 @@ { "id": "UnconstructableTestCase", "shortDescription": { - "text": "Unconstructable JUnit test class" + "text": "JUnit unconstructable test case" }, "fullDescription": { "text": "Reports JUnit test classes that can't be constructed by a standard JUnit test runner. JUnit 4 test classes need to be 'public' and have a 'public' no-arg constructor or no constructor at all (implicit default constructor) and no other 'public' constructors. JUnit 3 test classes need to be 'public' and need either a 'public' no-arg constructor or a 'public' constructor with a single parameter of 'String' type, which calls the matching super constructor. Otherwise the test classes cannot be run by standard JUnit test runners. Example: 'public class MyTest {\n\n private MyTest() {} // no-arg constructor is private\n\n @Test\n public void testSomething() {\n assertEquals(1, 1);\n }\n}'", @@ -19936,17 +18550,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -19970,17 +18581,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -20004,17 +18612,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -20038,17 +18643,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -20066,23 +18668,20 @@ }, "fullDescription": { "text": "Reports cases when a module name contradicts Java Platform Module System recommendations. One of the recommendations is to avoid using digits at the end of module names. Example: 'module foo1.bar2 {}'", - "markdown": "Reports cases when a module name contradicts Java Platform Module System recommendations.\n\nOne of the [recommendations](http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2017-March/000659.html)\nis to avoid using digits at the end of module names.\n\n**Example:**\n\n\n module foo1.bar2 {}\n" + "markdown": "Reports cases when a module name contradicts Java Platform Module System recommendations.\n\nOne of the [recommendations](http://mail.openjdk.org/pipermail/jpms-spec-experts/2017-March/000659.html)\nis to avoid using digits at the end of module names.\n\n**Example:**\n\n\n module foo1.bar2 {}\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -20106,17 +18705,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -20140,17 +18736,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -20162,29 +18755,26 @@ ] }, { - "id": "DisjointPackage", + "id": "IncrementDecrementUsedAsExpression", "shortDescription": { - "text": "Package with disjoint dependency graph" + "text": "Result of '++' or '--' used" }, "fullDescription": { - "text": "Reports packages whose classes can be separated into mutually independent subsets. Such disjoint packages indicate ad-hoc packaging or a lack of conceptual cohesion. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", - "markdown": "Reports packages whose classes can be separated into mutually independent subsets.\n\nSuch disjoint packages indicate ad-hoc packaging or a lack of conceptual cohesion.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." + "text": "Reports increment or decrement expressions that are nested inside other expressions. Such expressions may be confusing and violate the general design principle, which states that any construct should do precisely one thing. The quick-fix extracts the increment or decrement operation to a separate expression statement. Example: 'int i = 10;\n while (i-- > 0) {\n System.out.println(i);\n }' After the quick-fix is applied: 'int i = 10;\n while (i > 0) {\n i--;\n System.out.println(i);\n }\n i--;'", + "markdown": "Reports increment or decrement expressions that are nested inside other expressions. Such expressions may be confusing and violate the general design principle, which states that any construct should do precisely one thing.\n\nThe quick-fix extracts the increment or decrement operation to a separate expression statement.\n\n**Example:**\n\n\n int i = 10;\n while (i-- > 0) {\n System.out.println(i);\n }\n\nAfter the quick-fix is applied:\n\n\n int i = 10;\n while (i > 0) {\n i--;\n System.out.println(i);\n }\n i--;\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Packaging issues", - "index": 36, + "id": "Java/Assignment issues", + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -20196,29 +18786,26 @@ ] }, { - "id": "IncrementDecrementUsedAsExpression", + "id": "MethodOverloadsParentMethod", "shortDescription": { - "text": "Result of '++' or '--' used" + "text": "Possibly unintended overload of method from superclass" }, "fullDescription": { - "text": "Reports increment or decrement expressions that are nested inside other expressions. Such expressions may be confusing and violate the general design principle, which states that any construct should do precisely one thing. The quick-fix extracts the increment or decrement operation to a separate expression statement. Example: 'int i = 10;\n while (i-- > 0) {\n System.out.println(i);\n }' After the quick-fix is applied: 'int i = 10;\n while (i > 0) {\n i--;\n System.out.println(i);\n }\n i--;'", - "markdown": "Reports increment or decrement expressions that are nested inside other expressions. Such expressions may be confusing and violate the general design principle, which states that any construct should do precisely one thing.\n\nThe quick-fix extracts the increment or decrement operation to a separate expression statement.\n\n**Example:**\n\n\n int i = 10;\n while (i-- > 0) {\n System.out.println(i);\n }\n\nAfter the quick-fix is applied:\n\n\n int i = 10;\n while (i > 0) {\n i--;\n System.out.println(i);\n }\n i--;\n" + "text": "Reports instance methods with the same name and the same number of parameters as a method in a superclass, but where at least one of the parameters is of a different incompatible type. In this case, the method in a subclass will be overloading the method from the superclass instead of overriding it. If it is unintended, it may result in latent bugs. Example: 'public class Foo {\n void foo(int x) {}\n }\n\n public class Bar extends Foo {\n void foo(Number x) {} // Method 'foo()' overloads a compatible method of a superclass,\n // when overriding might have been intended\n }' Use the option to choose whether the inspection should also report cases where parameter types are not compatible.", + "markdown": "Reports instance methods with the same name and the same number of parameters as a method in a superclass, but where at least one of the parameters is of a different incompatible type.\n\n\nIn this case, the method in a subclass will be overloading the method from the superclass\ninstead of overriding it. If it is unintended, it may result in latent bugs.\n\n**Example:**\n\n\n public class Foo {\n void foo(int x) {}\n }\n\n public class Bar extends Foo {\n void foo(Number x) {} // Method 'foo()' overloads a compatible method of a superclass,\n // when overriding might have been intended\n }\n\n\nUse the option to choose whether the inspection should also report cases where parameter types are not compatible." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Assignment issues", - "index": 63, + "id": "Java/Visibility", + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -20230,29 +18817,26 @@ ] }, { - "id": "MethodOverloadsParentMethod", + "id": "DisjointPackage", "shortDescription": { - "text": "Possibly unintended overload of method from superclass" + "text": "Package with disjoint dependency graph" }, "fullDescription": { - "text": "Reports instance methods with the same name and the same number of parameters as a method in a superclass, but where at least one of the parameters is of a different incompatible type. In this case, the method in a subclass will be overloading the method from the superclass instead of overriding it. If it is unintended, it may result in latent bugs. Example: 'public class Foo {\n void foo(int x) {}\n }\n\n public class Bar extends Foo {\n void foo(Number x) {} // Method 'foo()' overloads a compatible method of a superclass,\n // when overriding might have been intended\n }' Use the option to choose whether the inspection should also report cases where parameter types are not compatible.", - "markdown": "Reports instance methods with the same name and the same number of parameters as a method in a superclass, but where at least one of the parameters is of a different incompatible type.\n\n\nIn this case, the method in a subclass will be overloading the method from the superclass\ninstead of overriding it. If it is unintended, it may result in latent bugs.\n\n**Example:**\n\n\n public class Foo {\n void foo(int x) {}\n }\n\n public class Bar extends Foo {\n void foo(Number x) {} // Method 'foo()' overloads a compatible method of a superclass,\n // when overriding might have been intended\n }\n\n\nUse the option to choose whether the inspection should also report cases where parameter types are not compatible." + "text": "Reports packages whose classes can be separated into mutually independent subsets. Such disjoint packages indicate ad-hoc packaging or a lack of conceptual cohesion. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", + "markdown": "Reports packages whose classes can be separated into mutually independent subsets.\n\nSuch disjoint packages indicate ad-hoc packaging or a lack of conceptual cohesion.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Visibility", - "index": 75, + "id": "Java/Packaging issues", + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -20264,29 +18848,26 @@ ] }, { - "id": "MethodMayBeSynchronized", + "id": "UpperCaseFieldNameNotConstant", "shortDescription": { - "text": "Method with single 'synchronized' block can be replaced with 'synchronized' method" + "text": "Non-constant field with upper-case name" }, "fullDescription": { - "text": "Reports methods whose body contains a single 'synchronized' statement. A lock expression for this 'synchronized' statement must be equal to 'this' for instance methods or '[ClassName].class' for static methods. To improve readability of such methods, you can remove the 'synchronized' wrapper and mark the method as 'synchronized'. Example: 'public int generateInt(int x) {\n synchronized (this) {\n return 1;\n }\n }' After the quick-fix is applied: 'public synchronized int generateInt(int x) {\n return 1;\n }'", - "markdown": "Reports methods whose body contains a single `synchronized` statement. A lock expression for this `synchronized` statement must be equal to `this` for instance methods or `[ClassName].class` for static methods.\n\n\nTo improve readability of such methods,\nyou can remove the `synchronized` wrapper and mark the method as `synchronized`.\n\n**Example:**\n\n\n public int generateInt(int x) {\n synchronized (this) {\n return 1;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public synchronized int generateInt(int x) {\n return 1;\n }\n" + "text": "Reports non-'static' non-'final' fields whose names are all in upper case. Such fields may cause confusion by breaking a common naming convention and are often used by mistake. Example: 'public static int THE_ANSWER = 42; //a warning here: final modifier is missing' A quick-fix that renames such fields is available only in the editor.", + "markdown": "Reports non-`static` non-`final` fields whose names are all in upper case.\n\nSuch fields may cause confusion by breaking a common naming convention and\nare often used by mistake.\n\n**Example:**\n\n\n public static int THE_ANSWER = 42; //a warning here: final modifier is missing\n\nA quick-fix that renames such fields is available only in the editor." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Threading issues", - "index": 25, + "id": "Java/Naming conventions", + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -20298,29 +18879,26 @@ ] }, { - "id": "UpperCaseFieldNameNotConstant", + "id": "MethodMayBeSynchronized", "shortDescription": { - "text": "Non-constant field with upper-case name" + "text": "Method with single 'synchronized' block can be replaced with 'synchronized' method" }, "fullDescription": { - "text": "Reports non-'static' non-'final' fields whose names are all in upper case. Such fields may cause confusion by breaking a common naming convention and are often used by mistake. Example: 'public static int THE_ANSWER = 42; //a warning here: final modifier is missing' A quick-fix that renames such fields is available only in the editor.", - "markdown": "Reports non-`static` non-`final` fields whose names are all in upper case.\n\nSuch fields may cause confusion by breaking a common naming convention and\nare often used by mistake.\n\n**Example:**\n\n\n public static int THE_ANSWER = 42; //a warning here: final modifier is missing\n\nA quick-fix that renames such fields is available only in the editor." + "text": "Reports methods whose body contains a single 'synchronized' statement. A lock expression for this 'synchronized' statement must be equal to 'this' for instance methods or '[ClassName].class' for static methods. To improve readability of such methods, you can remove the 'synchronized' wrapper and mark the method as 'synchronized'. Example: 'public int generateInt(int x) {\n synchronized (this) {\n return 1;\n }\n }' After the quick-fix is applied: 'public synchronized int generateInt(int x) {\n return 1;\n }'", + "markdown": "Reports methods whose body contains a single `synchronized` statement. A lock expression for this `synchronized` statement must be equal to `this` for instance methods or `[ClassName].class` for static methods.\n\n\nTo improve readability of such methods,\nyou can remove the `synchronized` wrapper and mark the method as `synchronized`.\n\n**Example:**\n\n\n public int generateInt(int x) {\n synchronized (this) {\n return 1;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public synchronized int generateInt(int x) {\n return 1;\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Naming conventions", - "index": 56, + "id": "Java/Threading issues", + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -20344,17 +18922,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -20378,17 +18953,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -20412,10 +18984,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20446,10 +19015,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20468,29 +19034,26 @@ ] }, { - "id": "EqualsHashCodeCalledOnUrl", + "id": "NonStrictComparisonCanBeEquality", "shortDescription": { - "text": "'equals()' or 'hashCode()' called on 'URL' object" + "text": "Non-strict inequality '>=' or '<=' can be replaced with '=='" }, "fullDescription": { - "text": "Reports 'hashCode()' and 'equals()' calls on 'java.net.URL' objects. 'URL''s 'equals()' and 'hashCode()' methods can perform a DNS lookup to resolve the host name. This may cause significant delays, depending on the availability and speed of the network and the DNS server. Using 'java.net.URI' instead of 'java.net.URL' will avoid the DNS lookup. Example: 'int equalsHashCode(URL url1, URL url2) {\n return url1.hashCode() == url2.hashCode();\n }'", - "markdown": "Reports `hashCode()` and `equals()` calls on `java.net.URL` objects.\n\n\n`URL`'s `equals()` and `hashCode()` methods can perform a DNS lookup to resolve the host name.\nThis may cause significant delays, depending on the availability and speed of the network and the DNS server.\nUsing `java.net.URI` instead of `java.net.URL` will avoid the DNS lookup.\n\n**Example:**\n\n\n int equalsHashCode(URL url1, URL url2) {\n return url1.hashCode() == url2.hashCode();\n }\n" + "text": "Reports inequality conditions that, according to data flow analysis, can be satisfied only for a single operand value. Such conditions could be replaced with equality conditions to make the code clearer. Example: if (x >= 10) {\n ...\n if (x <= 10) { // can be replaced with 'x == 10'\n }\n }\n New in 2022.2", + "markdown": "Reports inequality conditions that, according to data flow analysis, can be satisfied only for a single operand value. Such conditions could be replaced with equality conditions to make the code clearer.\n\nExample:\n\n```\n if (x >= 10) {\n ...\n if (x <= 10) { // can be replaced with 'x == 10'\n }\n }\n```\n\nNew in 2022.2" }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Java/Performance", - "index": 10, + "id": "Java/Verbose or redundant code constructs", + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -20502,29 +19065,26 @@ ] }, { - "id": "NonStrictComparisonCanBeEquality", + "id": "EqualsHashCodeCalledOnUrl", "shortDescription": { - "text": "Non-strict inequality '>=' or '<=' can be replaced with '=='" + "text": "'equals()' or 'hashCode()' called on 'URL' object" }, "fullDescription": { - "text": "Reports inequality conditions that, according to data flow analysis, can be satisfied only for a single operand value. Such conditions could be replaced with equality conditions to make the code clearer. Example: if (x >= 10) {\n ...\n if (x <= 10) { // can be replaced with 'x == 10'\n }\n }\n New in 2022.2", - "markdown": "Reports inequality conditions that, according to data flow analysis, can be satisfied only for a single operand value. Such conditions could be replaced with equality conditions to make the code clearer.\n\nExample:\n\n```\n if (x >= 10) {\n ...\n if (x <= 10) { // can be replaced with 'x == 10'\n }\n }\n```\n\nNew in 2022.2" + "text": "Reports 'hashCode()' and 'equals()' calls on 'java.net.URL' objects. 'URL''s 'equals()' and 'hashCode()' methods can perform a DNS lookup to resolve the host name. This may cause significant delays, depending on the availability and speed of the network and the DNS server. Using 'java.net.URI' instead of 'java.net.URL' will avoid the DNS lookup. Example: 'int equalsHashCode(URL url1, URL url2) {\n return url1.hashCode() == url2.hashCode();\n }'", + "markdown": "Reports `hashCode()` and `equals()` calls on `java.net.URL` objects.\n\n\n`URL`'s `equals()` and `hashCode()` methods can perform a DNS lookup to resolve the host name.\nThis may cause significant delays, depending on the availability and speed of the network and the DNS server.\nUsing `java.net.URI` instead of `java.net.URL` will avoid the DNS lookup.\n\n**Example:**\n\n\n int equalsHashCode(URL url1, URL url2) {\n return url1.hashCode() == url2.hashCode();\n }\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Verbose or redundant code constructs", - "index": 37, + "id": "Java/Performance", + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -20548,10 +19108,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -20582,10 +19139,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20616,10 +19170,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20650,10 +19201,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20684,17 +19232,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Dependency issues", - "index": 108, + "index": 118, "toolComponent": { "name": "QDJVM" } @@ -20718,10 +19263,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20745,24 +19287,21 @@ "text": "Javac quirks" }, "fullDescription": { - "text": "Reports known Javac issues, performance problems, and incompatibilities. For example, type inference may be slow when it has to process many nested calls. The following code triggers a warning, as vararg method call has 50+ poly arguments: 'Arrays.asList(\n Arrays.asList(\"a\", \"b\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));' The quick-fix adds explicit type arguments, which makes compilation and IDE processing much faster: '//noinspection RedundantTypeArguments\n Arrays.<List<String>>asList(\n Arrays.asList(\"a\", \"b\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));'", - "markdown": "Reports known Javac issues, performance problems, and incompatibilities. For example, type inference may be slow when it has to process many nested calls.\n\nThe following code triggers a warning, as vararg method call has 50+ poly arguments:\n\n\n Arrays.asList(\n Arrays.asList(\"a\", \"b\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));\n\nThe quick-fix adds explicit type arguments, which makes compilation and IDE processing much faster:\n\n\n //noinspection RedundantTypeArguments\n Arrays.<List<String>>asList(\n Arrays.asList(\"a\", \"b\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));\n" + "text": "Reports known Javac issues, performance problems, and incompatibilities. For example, type inference may be slow when it has to process many nested calls. The following code triggers a warning, as the vararg method call has 50+ poly arguments: 'Arrays.asList(\n Arrays.asList(\"a1\", \"b1\"),\n Arrays.asList(\"a2\", \"b2\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));' The quick-fix adds explicit type arguments, which makes compilation and IDE processing much faster: '//noinspection RedundantTypeArguments\n Arrays.<List<String>>asList(\n Arrays.asList(\"a1\", \"b1\"),\n Arrays.asList(\"a2\", \"b2\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));'", + "markdown": "Reports known Javac issues, performance problems, and incompatibilities. For example, type inference may be slow when it has to process many nested calls.\n\nThe following code triggers a warning, as the vararg method call has 50+ poly arguments:\n\n\n Arrays.asList(\n Arrays.asList(\"a1\", \"b1\"),\n Arrays.asList(\"a2\", \"b2\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));\n\nThe quick-fix adds explicit type arguments, which makes compilation and IDE processing much faster:\n\n\n //noinspection RedundantTypeArguments\n Arrays.<List<String>>asList(\n Arrays.asList(\"a1\", \"b1\"),\n Arrays.asList(\"a2\", \"b2\"),\n ...\n Arrays.asList(\"a100\", \"b100\"));\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Compiler issues", - "index": 122, + "index": 131, "toolComponent": { "name": "QDJVM" } @@ -20786,10 +19325,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20820,17 +19356,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -20854,10 +19387,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20888,10 +19418,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -20922,10 +19449,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -20956,17 +19480,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -20983,24 +19504,21 @@ "text": "Lambda can be replaced with method call" }, "fullDescription": { - "text": "Reports lambda expressions which can be replaced with a JDK method call. For example, the expression 'x -> x' of the 'Function<T, T>' type can be replaced with the 'Function.identity()' call. New in 2017.1", - "markdown": "Reports lambda expressions which can be replaced with a JDK method call.\n\nFor example, the expression `x -> x` of the `Function<T, T>` type\ncan be replaced with the `Function.identity()` call.\n\nNew in 2017.1" + "text": "Reports lambda expressions which can be replaced with a call to a JDK method. For example, an expression 'x -> x' of type 'Function<T, T>' can be replaced with a 'Function.identity()' call. New in 2017.1", + "markdown": "Reports lambda expressions which can be replaced with a call to a JDK method.\n\nFor example, an expression `x -> x` of type `Function<T, T>`\ncan be replaced with a `Function.identity()` call.\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -21024,10 +19542,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21058,17 +19573,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -21092,17 +19604,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -21126,10 +19635,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21160,10 +19666,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21194,17 +19697,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -21221,17 +19721,14 @@ "text": "Local variable or parameter can be 'final'" }, "fullDescription": { - "text": "Reports parameters or local variables found in the specified inspection scope to which the 'final' modifier can be added. Example: 'ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;' After the quick-fix is applied: 'final ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;' Use the inspection's options to define whether parameters or local variables should be reported.", - "markdown": "Reports parameters or local variables found in the specified inspection scope to which the `final` modifier can be added.\n\nExample:\n\n\n ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;\n\nAfter the quick-fix is applied:\n\n\n final ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;\n\n\nUse the inspection's options to define whether parameters or local variables should be reported." + "text": "Reports parameters or local variables that may have the 'final' modifier added to their declaration. Example: 'ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;' After the quick-fix is applied: 'final ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;' Use the inspection's options to define whether parameters or local variables should be reported.", + "markdown": "Reports parameters or local variables that may have the `final` modifier added to their declaration.\n\nExample:\n\n\n ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;\n\nAfter the quick-fix is applied:\n\n\n final ArrayList<Integer> list = new ArrayList();\n fill(list);\n return list;\n\n\nUse the inspection's options to define whether parameters or local variables should be reported." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21262,17 +19759,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -21296,10 +19790,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21330,17 +19821,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -21364,17 +19852,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Manifest", - "index": 87, + "index": 95, "toolComponent": { "name": "QDJVM" } @@ -21398,17 +19883,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -21432,17 +19914,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -21459,17 +19938,14 @@ "text": "'Throwable' not thrown" }, "fullDescription": { - "text": "Reports instantiations of 'Throwable' or its subclasses, where the created 'Throwable' is never actually thrown. Additionally, this inspection reports method calls that return instances of 'Throwable' or its subclasses, when the result of the method call is not thrown. Calls to methods annotated with the Error Prone's or AssertJ's '@CanIgnoreReturnValue' annotation will not be reported. Example: 'void leftBehind() throws Throwable {\n RuntimeException e = new RuntimeException(\"throw me\");\n // ...\n }'", - "markdown": "Reports instantiations of `Throwable` or its subclasses, where the created `Throwable` is never actually thrown. Additionally, this inspection reports method calls that return instances of `Throwable` or its subclasses, when the result of the method call is not thrown.\n\nCalls to methods annotated with the Error Prone's or AssertJ's `@CanIgnoreReturnValue` annotation will not be reported.\n\n**Example:**\n\n\n void leftBehind() throws Throwable {\n RuntimeException e = new RuntimeException(\"throw me\");\n // ...\n }\n" + "text": "Reports instantiations of 'Throwable' or its subclasses, where the created 'Throwable' is never actually thrown. Additionally, this inspection reports method calls that return instances of 'Throwable' or its subclasses, when the result of the method call is not thrown. Calls to methods annotated with the Error Prone's or AssertJ's '@CanIgnoreReturnValue' annotation will not be reported. Example: 'void check(String s) {\n if (s == null) {\n new NullPointerException(\"s\");\n }\n // ...\n }'", + "markdown": "Reports instantiations of `Throwable` or its subclasses, where the created `Throwable` is never actually thrown. Additionally, this inspection reports method calls that return instances of `Throwable` or its subclasses, when the result of the method call is not thrown.\n\nCalls to methods annotated with the Error Prone's or AssertJ's `@CanIgnoreReturnValue` annotation will not be reported.\n\n**Example:**\n\n\n void check(String s) {\n if (s == null) {\n new NullPointerException(\"s\");\n }\n // ...\n }\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21500,10 +19976,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21534,17 +20007,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -21568,10 +20038,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21602,10 +20069,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21629,24 +20093,21 @@ "text": "Double-checked locking" }, "fullDescription": { - "text": "Reports double-checked locking. Double-checked locking tries to initialize a field on demand and in a thread-safe manner while avoiding the cost of synchronization. Unfortunately it is not thread-safe when used on a field that is not declared 'volatile'. When using Java 1.4 or earlier, double-checked locking doesn't work even with 'volatile' fields. Read the article linked above for the detailed explanation of the problem. Example of an incorrect double-checked locking: 'class Foo {\n private Helper helper = null;\n public Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) helper = new Helper();\n }\n return helper;\n }\n }\n // other functions and members...\n }'", - "markdown": "Reports [double-checked locking](https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html).\n\n\nDouble-checked locking tries to initialize a field on demand and in a thread-safe manner while avoiding the cost of synchronization.\nUnfortunately it is not thread-safe when used on a field that is not declared `volatile`.\nWhen using Java 1.4 or earlier, double-checked locking doesn't work even with `volatile` fields.\nRead the article linked above for the detailed explanation of the problem.\n\n\nExample of an incorrect double-checked locking:\n\n\n class Foo {\n private Helper helper = null;\n public Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) helper = new Helper();\n }\n return helper;\n }\n }\n // other functions and members...\n }\n" + "text": "Reports double-checked locking. Double-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization. Unfortunately it is not thread-safe when used on a field that is not declared 'volatile'. When using Java 1.4 or earlier, double-checked locking doesn't work even with a 'volatile' field. Read the article linked above for a detailed explanation of the problem. Example of incorrect double-checked locking: 'class Foo {\n private Helper helper = null;\n public Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) helper = new Helper();\n }\n return helper;\n }\n }\n // other functions and members...\n }'", + "markdown": "Reports [double-checked locking](https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html).\n\n\nDouble-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization.\nUnfortunately it is not thread-safe when used on a field that is not declared `volatile`.\nWhen using Java 1.4 or earlier, double-checked locking doesn't work even with a `volatile` field.\nRead the article linked above for a detailed explanation of the problem.\n\nExample of incorrect double-checked locking:\n\n\n class Foo {\n private Helper helper = null;\n public Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) helper = new Helper();\n }\n return helper;\n }\n }\n // other functions and members...\n }\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -21670,17 +20131,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -21704,17 +20162,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -21738,17 +20193,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -21772,17 +20224,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -21806,17 +20255,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -21840,17 +20286,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -21874,10 +20317,7 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -21908,17 +20348,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -21942,10 +20379,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -21976,17 +20410,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Resource management", - "index": 101, + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -22010,17 +20441,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -22037,17 +20465,14 @@ "text": "Duplicated delimiters in 'StringTokenizer'" }, "fullDescription": { - "text": "Reports either a 'StringTokenizer' constructor or a 'nextToken' method call that contains duplicate characters in the delimiter argument, e.g. 'tokenizer.nextToken(\"\\n\\n\")'.", - "markdown": "Reports either a `StringTokenizer` constructor or a `nextToken` method call that contains duplicate characters in the delimiter argument, e.g. `tokenizer.nextToken(\"\\n\\n\")`." + "text": "Reports 'StringTokenizer()' constructor calls or 'nextToken()' method calls that contain duplicate characters in the delimiter argument. Example: 'void printTokens(String text) {\n StringTokenizer tokenizer = new StringTokenizer(text, \"\\n\\n\");\n while (tokenizer.hasMoreTokens()) {\n System.out.println(tokenizer.nextToken());\n }\n }' After the quick-fix is applied: 'void printTokens(String text) {\n StringTokenizer tokenizer = new StringTokenizer(text, \"\\n\");\n while (tokenizer.hasMoreTokens()) {\n System.out.println(tokenizer.nextToken());\n }\n }'", + "markdown": "Reports `StringTokenizer()` constructor calls or `nextToken()` method calls that contain duplicate characters in the delimiter argument.\n\n**Example:**\n\n\n void printTokens(String text) {\n StringTokenizer tokenizer = new StringTokenizer(text, \"\\n\\n\");\n while (tokenizer.hasMoreTokens()) {\n System.out.println(tokenizer.nextToken());\n }\n }\n\nAfter the quick-fix is applied:\n\n\n void printTokens(String text) {\n StringTokenizer tokenizer = new StringTokenizer(text, \"\\n\");\n while (tokenizer.hasMoreTokens()) {\n System.out.println(tokenizer.nextToken());\n }\n }\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -22078,17 +20503,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Test frameworks", - "index": 97, + "index": 106, "toolComponent": { "name": "QDJVM" } @@ -22112,10 +20534,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -22146,17 +20565,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -22180,17 +20596,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Bitwise operation issues", - "index": 155, + "index": 161, "toolComponent": { "name": "QDJVM" } @@ -22214,17 +20627,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Logging", - "index": 52, + "index": 59, "toolComponent": { "name": "QDJVM" } @@ -22248,10 +20658,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -22282,17 +20689,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -22316,17 +20720,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -22350,17 +20751,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -22384,17 +20782,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -22406,29 +20801,26 @@ ] }, { - "id": "UnnecessaryModuleDependencyInspection", + "id": "CloneCallsConstructors", "shortDescription": { - "text": "Unnecessary module dependency" + "text": "'clone()' instantiates objects with constructor" }, "fullDescription": { - "text": "Reports dependencies on modules that are not used. The quick-fix safely removes such unused dependencies.", - "markdown": "Reports dependencies on modules that are not used. The quick-fix safely removes such unused dependencies." + "text": "Reports calls to object constructors inside 'clone()' methods. It is considered good practice to call 'clone()' to instantiate objects inside of a 'clone()' method instead of creating them directly to support later subclassing. This inspection will not report 'clone()' methods declared as 'final' or 'clone()' methods on 'final' classes.", + "markdown": "Reports calls to object constructors inside `clone()` methods.\n\nIt is considered good practice to call `clone()` to instantiate objects inside of a `clone()` method\ninstead of creating them directly to support later subclassing.\nThis inspection will not report\n`clone()` methods declared as `final`\nor `clone()` methods on `final` classes." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Declaration redundancy", - "index": 12, + "id": "Java/Cloning issues", + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -22440,29 +20832,26 @@ ] }, { - "id": "CloneCallsConstructors", + "id": "UnnecessaryModuleDependencyInspection", "shortDescription": { - "text": "'clone()' instantiates objects with constructor" + "text": "Unnecessary module dependency" }, "fullDescription": { - "text": "Reports calls to object constructors inside 'clone()' methods. It is considered good practice to call 'clone()' to instantiate objects inside of a 'clone()' method instead of creating them directly to support later subclassing. This inspection will not report 'clone()' methods declared as 'final' or 'clone()' methods on 'final' classes.", - "markdown": "Reports calls to object constructors inside `clone()` methods.\n\nIt is considered good practice to call `clone()` to instantiate objects inside of a `clone()` method\ninstead of creating them directly to support later subclassing.\nThis inspection will not report\n`clone()` methods declared as `final`\nor `clone()` methods on `final` classes." + "text": "Reports dependencies on modules that are not used. The quick-fix safely removes such unused dependencies.", + "markdown": "Reports dependencies on modules that are not used. The quick-fix safely removes such unused dependencies." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Cloning issues", - "index": 86, + "id": "Java/Declaration redundancy", + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -22486,17 +20875,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -22520,10 +20906,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -22554,17 +20937,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -22588,17 +20968,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -22622,10 +20999,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -22656,17 +21030,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -22690,17 +21061,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -22724,17 +21092,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -22758,17 +21123,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -22792,17 +21154,45 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RedundantFieldInitialization", + "shortDescription": { + "text": "Redundant field initialization" + }, + "fullDescription": { + "text": "Reports fields explicitly initialized to their default values. Example: 'class Foo {\n int foo = 0;\n List bar = null;\n }' After the quick-fix is applied: 'class Foo {\n int foo;\n List bar;\n }' Use the inspection settings to only report explicit 'null' initialization, for example: 'class Foo {\n int foo = 0; // no warning\n List bar = null; // redundant field initialization warning\n }'", + "markdown": "Reports fields explicitly initialized to their default values.\n\n**Example:**\n\n\n class Foo {\n int foo = 0;\n List bar = null;\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n int foo;\n List bar;\n }\n\n\nUse the inspection settings to only report explicit `null` initialization, for example:\n\n\n class Foo {\n int foo = 0; // no warning\n List bar = null; // redundant field initialization warning\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -22826,10 +21216,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -22848,29 +21235,26 @@ ] }, { - "id": "RedundantFieldInitialization", + "id": "ReadObjectInitialization", "shortDescription": { - "text": "Redundant field initialization" + "text": "Instance field may not be initialized by 'readObject()'" }, "fullDescription": { - "text": "Reports fields explicitly initialized to their default values. Example: 'class Foo {\n int foo = 0;\n List bar = null;\n }' After the quick-fix is applied: 'class Foo {\n int foo;\n List bar;\n }' Use the inspection settings to only report explicit 'null' initialization, for example: 'class Foo {\n int foo = 0; // no warning\n List bar = null; // redundant field initialization warning\n }'", - "markdown": "Reports fields explicitly initialized to their default values.\n\n**Example:**\n\n\n class Foo {\n int foo = 0;\n List bar = null;\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo {\n int foo;\n List bar;\n }\n\n\nUse the inspection settings to only report explicit `null` initialization, for example:\n\n\n class Foo {\n int foo = 0; // no warning\n List bar = null; // redundant field initialization warning\n }\n" + "text": "Reports fields that are not guaranteed to be initialized after the object is deserialized by the 'readObject()' method. The inspection doesn't report transient fields. Note: This inspection uses a very conservative control flow algorithm, and may incorrectly report fields as uninitialized. Example: 'class DataObject implements Serializable {\n String s; // s is not initialized in readObject\n int i;\n\n private void readObject(ObjectInputStream stream) throws IOException {\n i = stream.readInt();\n }\n}'", + "markdown": "Reports fields that are not guaranteed to be initialized after the object is deserialized by the `readObject()` method.\n\nThe inspection doesn't report transient fields.\n\n\nNote: This inspection uses a very conservative control flow algorithm, and may incorrectly report fields\nas uninitialized.\n\n**Example:**\n\n\n class DataObject implements Serializable {\n String s; // s is not initialized in readObject\n int i;\n\n private void readObject(ObjectInputStream stream) throws IOException {\n i = stream.readInt();\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Serialization issues", + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -22882,29 +21266,26 @@ ] }, { - "id": "DefaultFileTemplate", + "id": "NonAtomicOperationOnVolatileField", "shortDescription": { - "text": "Default File Template Usage" + "text": "Non-atomic operation on 'volatile' field" }, "fullDescription": { - "text": "Reports usages of the default File Header template and suggests changing it. The File Header template can be modified in Settings | Editor | File and Code Templates | Includes", - "markdown": "Reports usages of the default File Header template and suggests changing it. The File Header template can be modified in [Settings \\| Editor \\| File and Code Templates \\| Includes](settings://fileTemplates?Includes)" + "text": "Reports non-atomic operations on volatile fields. An example of a non-atomic operation is updating the field using the increment operator. As the operation involves read and write, and other modifications may happen in between, data may become corrupted. The operation can be made atomic by surrounding it with a 'synchronized' block or using one of the classes from the 'java.util.concurrent.atomic' package. Example: 'private volatile int v = 1;\n\n void foo() {\n v = 2 * v;\n }'", + "markdown": "Reports non-atomic operations on volatile fields.\n\n\nAn example of a non-atomic operation is updating the field using the increment operator.\nAs the operation involves read and write, and other modifications may happen in between, data may become corrupted.\nThe operation can be made atomic by surrounding it with a `synchronized` block or\nusing one of the classes from the `java.util.concurrent.atomic` package.\n\n**Example:**\n\n\n private volatile int v = 1;\n\n void foo() {\n v = 2 * v;\n }\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "General", - "index": 38, + "id": "Java/Threading issues", + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -22916,29 +21297,26 @@ ] }, { - "id": "ReadObjectInitialization", + "id": "QuestionableName", "shortDescription": { - "text": "Instance field may not be initialized by 'readObject()'" + "text": "Questionable name" }, "fullDescription": { - "text": "Reports fields that are not guaranteed to be initialized after the object is deserialized by the 'readObject()' method. The inspection doesn't report transient fields. Note: This inspection uses a very conservative control flow algorithm, and may incorrectly report fields as uninitialized. Example: 'class DataObject implements Serializable {\n String s; // s is not initialized in readObject\n int i;\n\n private void readObject(ObjectInputStream stream) throws IOException {\n i = stream.readInt();\n }\n}'", - "markdown": "Reports fields that are not guaranteed to be initialized after the object is deserialized by the `readObject()` method.\n\nThe inspection doesn't report transient fields.\n\n\nNote: This inspection uses a very conservative control flow algorithm, and may incorrectly report fields\nas uninitialized.\n\n**Example:**\n\n\n class DataObject implements Serializable {\n String s; // s is not initialized in readObject\n int i;\n\n private void readObject(ObjectInputStream stream) throws IOException {\n i = stream.readInt();\n }\n }\n" + "text": "Reports variables, methods, or classes with questionable, not really descriptive names. Such names do not help to understand the code, and most probably were created as a temporary thing but were forgotten afterwards. Example: 'int aa = 42;' Rename quick-fix is suggested only in the editor. Use the option to list names that should be reported.", + "markdown": "Reports variables, methods, or classes with questionable, not really descriptive names. Such names do not help to understand the code, and most probably were created as a temporary thing but were forgotten afterwards.\n\n**Example:**\n\n\n int aa = 42;\n\nRename quick-fix is suggested only in the editor.\n\n\nUse the option to list names that should be reported." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Serialization issues", - "index": 18, + "id": "Java/Naming conventions", + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -22950,29 +21328,26 @@ ] }, { - "id": "NonAtomicOperationOnVolatileField", + "id": "UNCHECKED_WARNING", "shortDescription": { - "text": "Non-atomic operation on 'volatile' field" + "text": "Unchecked warning" }, "fullDescription": { - "text": "Reports non-atomic operations on volatile fields. An example of a non-atomic operation is updating the field using the increment operator. As the operation involves read and write, and other modifications may happen in between, data may become corrupted. The operation can be made atomic by surrounding it with a 'synchronized' block or using one of the classes from the 'java.util.concurrent.atomic' package. Example: 'private volatile int v = 1;\n\n void foo() {\n v = 2 * v;\n }'", - "markdown": "Reports non-atomic operations on volatile fields.\n\n\nAn example of a non-atomic operation is updating the field using the increment operator.\nAs the operation involves read and write, and other modifications may happen in between, data may become corrupted.\nThe operation can be made atomic by surrounding it with a `synchronized` block or\nusing one of the classes from the `java.util.concurrent.atomic` package.\n\n**Example:**\n\n\n private volatile int v = 1;\n\n void foo() {\n v = 2 * v;\n }\n" + "text": "Reports code on which an unchecked warning will be issued by the javac compiler. Every unchecked warning may potentially trigger 'ClassCastException' at runtime. Example: 'List items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // unchecked assignment' The quick-fix tries to generify the containing file, which may expose any problems in the editor and during compilation that previously only appeared at runtime: 'List<String> items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // incompatible types'", + "markdown": "Reports code on which an unchecked warning will be issued by the javac compiler. Every unchecked warning may potentially trigger `ClassCastException` at runtime.\n\nExample:\n\n\n List items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // unchecked assignment\n\nThe quick-fix tries to generify the containing file,\nwhich may expose any problems in the editor and during compilation that previously only appeared at runtime:\n\n\n List<String> items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // incompatible types\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Threading issues", - "index": 25, + "id": "Java/Compiler issues", + "index": 131, "toolComponent": { "name": "QDJVM" } @@ -22984,29 +21359,26 @@ ] }, { - "id": "QuestionableName", + "id": "RedundantLengthCheck", "shortDescription": { - "text": "Questionable name" + "text": "Redundant array length check" }, "fullDescription": { - "text": "Reports variables, methods, or classes with questionable, not really descriptive names. Such names do not help to understand the code, and most probably were created as a temporary thing but were forgotten afterwards. Example: 'int aa = 42;' Rename quick-fix is suggested only in the editor. Use the option to list names that should be reported.", - "markdown": "Reports variables, methods, or classes with questionable, not really descriptive names. Such names do not help to understand the code, and most probably were created as a temporary thing but were forgotten afterwards.\n\n**Example:**\n\n\n int aa = 42;\n\nRename quick-fix is suggested only in the editor.\n\n\nUse the option to list names that should be reported." + "text": "Reports unnecessary array length checks followed by array iteration. When array length is zero, the iteration will be skipped anyway, so there's no need to check length explicitly. Example: 'void f(String[] array) {\n if (array.length != 0) { // unnecessary check\n for (String str : array) {\n System.out.println(str);\n }\n }\n }' A quick-fix is suggested to unwrap or remove the length check: 'void f(String[] array) {\n for (String str : array) {\n System.out.println(str);\n }\n }' New in 2022.3", + "markdown": "Reports unnecessary array length checks followed by array iteration. When array length is zero, the iteration will be skipped anyway, so there's no need to check length explicitly.\n\nExample:\n\n\n void f(String[] array) {\n if (array.length != 0) { // unnecessary check\n for (String str : array) {\n System.out.println(str);\n }\n }\n }\n\nA quick-fix is suggested to unwrap or remove the length check:\n\n\n void f(String[] array) {\n for (String str : array) {\n System.out.println(str);\n }\n }\n\nNew in 2022.3" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Naming conventions", - "index": 56, + "id": "Java/Verbose or redundant code constructs", + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -23018,29 +21390,26 @@ ] }, { - "id": "UNCHECKED_WARNING", + "id": "DataFlowIssue", "shortDescription": { - "text": "Unchecked warning" + "text": "Nullability and data flow problems" }, "fullDescription": { - "text": "Reports code on which an unchecked warning will be issued by the javac compiler. Every unchecked warning may potentially trigger 'ClassCastException' at runtime. Example: 'List items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // unchecked assignment' The quick-fix tries to generify the containing file, which may expose any problems in the editor and during compilation that previously only appeared at runtime: 'List<String> items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // incompatible types'", - "markdown": "Reports code on which an unchecked warning will be issued by the javac compiler. Every unchecked warning may potentially trigger `ClassCastException` at runtime.\n\nExample:\n\n\n List items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // unchecked assignment\n\nThe quick-fix tries to generify the containing file,\nwhich may expose any problems in the editor and during compilation that previously only appeared at runtime:\n\n\n List<String> items = Arrays.asList(\"string\", \"string\");\n List<Integer> numbers = Collections.unmodifiableList(items); // incompatible types\n" + "text": "Reports code constructs that always violate nullability contracts, may throw exceptions, or are just redundant, based on data flow analysis. Examples: 'if (array.length < index) {\n System.out.println(array[index]);\n} // Array index is always out of bounds\n\nif (str == null) System.out.println(\"str is null\");\nSystem.out.println(str.trim());\n// the last statement may throw an NPE\n\n@NotNull\nInteger square(@Nullable Integer input) {\n // the method contract is violated\n return input == null ? null : input * input;\n}' The inspection behavior may be controlled by a number of annotations, such as nullability annotations, '@Contract' annotation, '@Range' annotation and so on. Configure the inspection: Use the Suggest @Nullable annotation for methods/fields/parameters where nullable values are used option to warn when a nullable value is passed as an argument to a method with a non-annotated parameter, stored into non-annotated field, or returned from a non-annotated method. In this case, the inspection will suggest propagating the '@Nullable' annotation. You can also configure nullability annotations using the Configure Annotations button. Use the Treat non-annotated members and parameters as @Nullable option to assume that non-annotated members can be null, so they must not be used in non-null context. Use the Report not-null required parameter with null-literal argument usages option to report method parameters that cannot be null (e.g. immediately dereferenced in the method body), but there are call sites where a 'null' literal is passed. Use the Report nullable methods that always return a non-null value option to report methods that are annotated as '@Nullable', but always return non-null value. In this case, it's suggested that you change the annotation to '@NotNull'. Use the Ignore assert statements option to control how the inspection treats 'assert' statements. By default, the option is disabled, which means that the assertions are assumed to be executed (-ea mode). If the option is enabled, the assertions will be completely ignored (-da mode). Use the Report problems that happen only on some code paths option to control whether to report problems that may happen only on some code path. If this option is disabled, warnings like exception is possible will not be reported. The inspection will report only warnings like exception will definitely occur. This mode may greatly reduce the number of false-positives, especially if the code is not consistently annotated with nullability and contract annotations. That is why it can be useful for finding the most important problems in legacy code bases. Before IntelliJ IDEA 2022.3, this inspection was part of the \"Constant Conditions & Exceptions\" inspection. Now, it is split into two inspections: \"Constant Values\" and \"Nullability and data flow problems\".", + "markdown": "Reports code constructs that always violate nullability contracts, may throw exceptions, or are just redundant, based on data flow analysis.\n\nExamples:\n\n if (array.length < index) {\n System.out.println(array[index]);\n } // Array index is always out of bounds\n\n if (str == null) System.out.println(\"str is null\");\n System.out.println(str.trim());\n // the last statement may throw an NPE\n\n @NotNull\n Integer square(@Nullable Integer input) {\n // the method contract is violated\n return input == null ? null : input * input;\n }\n\n\nThe inspection behavior may be controlled by a number of annotations, such as\n[nullability](https://www.jetbrains.com/help/idea/nullable-and-notnull-annotations.html) annotations,\n[@Contract](https://www.jetbrains.com/help/idea/contract-annotations.html) annotation,\n`@Range` annotation and so on.\n\nConfigure the inspection:\n\n* Use the **Suggest @Nullable annotation for methods/fields/parameters where nullable values are used** option to warn when a nullable value is passed as an argument to a method with a non-annotated parameter, stored into non-annotated field, or returned from a non-annotated method. In this case, the inspection will suggest propagating the `@Nullable` annotation. You can also configure nullability annotations using the **Configure Annotations** button.\n* Use the **Treat non-annotated members and parameters as @Nullable** option to assume that non-annotated members can be null, so they must not be used in non-null context.\n* Use the **Report not-null required parameter with null-literal argument usages** option to report method parameters that cannot be null (e.g. immediately dereferenced in the method body), but there are call sites where a `null` literal is passed.\n* Use the **Report nullable methods that always return a non-null value** option to report methods that are annotated as `@Nullable`, but always return non-null value. In this case, it's suggested that you change the annotation to `@NotNull`.\n* Use the **Ignore assert statements** option to control how the inspection treats `assert` statements. By default, the option is disabled, which means that the assertions are assumed to be executed (-ea mode). If the option is enabled, the assertions will be completely ignored (-da mode).\n* Use the **Report problems that happen only on some code paths** option to control whether to report problems that may happen only on some code path. If this option is disabled, warnings like *exception is possible* will not be reported. The inspection will report only warnings like *exception will definitely occur*. This mode may greatly reduce the number of false-positives, especially if the code is not consistently annotated with nullability and contract annotations. That is why it can be useful for finding the most important problems in legacy code bases.\n\n\nBefore IntelliJ IDEA 2022.3, this inspection was part of the \"Constant Conditions \\& Exceptions\" inspection.\nNow, it is split into two inspections:\n\"Constant Values\" and \"Nullability and data flow problems\"." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Compiler issues", - "index": 122, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -23064,17 +21433,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -23098,10 +21464,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -23120,6 +21483,37 @@ ] }, { + "id": "MismatchedJavadocCode", + "shortDescription": { + "text": "Mismatch between Javadoc and code" + }, + "fullDescription": { + "text": "Reports parts of method specification written in English that contradict with the method declaration. This includes: Method specified to return 'true' or 'false' but its return type is not boolean. Method specified to return 'null' but it's annotated as '@NotNull' or its return type is primitive. Method specified to return list but its return type is set or array. And so on. Example: '/**\n * @return true if user is found, false otherwise\n */\n User findUser(String name);' Note that false-positives are possible, as this inspection tries to interpret a human language. However, if the inspection reports incorrectly, it's still possible that the description is confusing and should be rewritten. New in 2022.3", + "markdown": "Reports parts of method specification written in English that contradict with the method declaration. This includes:\n\n* Method specified to return `true` or `false` but its return type is not boolean.\n* Method specified to return `null` but it's annotated as `@NotNull` or its return type is primitive.\n* Method specified to return list but its return type is set or array.\n* And so on.\n\n**Example:**\n\n\n /**\n * @return true if user is found, false otherwise\n */\n User findUser(String name);\n\n\nNote that false-positives are possible, as this inspection tries to interpret a human language. However, if the inspection reports\nincorrectly, it's still possible that the description is confusing and should be rewritten.\n\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Javadoc", + "index": 61, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "SimplifiableAnnotation", "shortDescription": { "text": "Simplifiable annotation" @@ -23132,10 +21526,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -23166,17 +21557,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -23200,17 +21588,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -23234,17 +21619,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -23261,24 +21643,21 @@ "text": "Missing '@Deprecated' annotation" }, "fullDescription": { - "text": "Reports module declarations, classes, fields, or methods that have the '@deprecated' Javadoc tag but do not have the '@java.lang.Deprecated' annotation. Example: '/**\n * @deprecated use {@code example()} instead\n */\n void sample(){ }' After the quick-fix is applied: '/**\n * @deprecated use {@code example()} instead\n */\n @Deprecated\n void sample(){ }' This inspection works only if the language level of the project or module is 5 or higher. Use the checkbox below to be warned on the symbols annotated with '@Deprecated' without an explanation in the '@deprecated' Javadoc tag.", - "markdown": "Reports module declarations, classes, fields, or methods that have the `@deprecated` Javadoc tag but do not have the `@java.lang.Deprecated` annotation.\n\n**Example:**\n\n\n /**\n * @deprecated use {@code example()} instead\n */\n void sample(){ }\n\nAfter the quick-fix is applied:\n\n\n /**\n * @deprecated use {@code example()} instead\n */\n @Deprecated\n void sample(){ }\n\nThis inspection works only if the language level of the project or module is 5 or higher.\n\n\nUse the checkbox below to be warned on the symbols annotated with `@Deprecated` without\nan explanation in the `@deprecated` Javadoc tag." + "text": "Reports module declarations, classes, fields, or methods that have the '@deprecated' Javadoc tag but do not have the '@java.lang.Deprecated' annotation. Example: '/**\n * @deprecated use {@code example()} instead\n */\n void sample(){ }' After the quick-fix is applied: '/**\n * @deprecated use {@code example()} instead\n */\n @Deprecated\n void sample(){ }' This inspection reports only if the language level of the project or module is 5 or higher. Use the checkbox below to be warned on the symbols annotated with '@Deprecated' without an explanation in the '@deprecated' Javadoc tag.", + "markdown": "Reports module declarations, classes, fields, or methods that have the `@deprecated` Javadoc tag but do not have the `@java.lang.Deprecated` annotation.\n\n**Example:**\n\n\n /**\n * @deprecated use {@code example()} instead\n */\n void sample(){ }\n\nAfter the quick-fix is applied:\n\n\n /**\n * @deprecated use {@code example()} instead\n */\n @Deprecated\n void sample(){ }\n\nThis inspection reports only if the language level of the project or module is 5 or higher.\n\n\nUse the checkbox below to be warned on the symbols annotated with `@Deprecated` without\nan explanation in the `@deprecated` Javadoc tag." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -23302,10 +21681,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -23336,10 +21712,7 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -23370,17 +21743,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -23404,17 +21774,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -23438,10 +21805,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -23472,17 +21836,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -23506,17 +21867,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Finalization", - "index": 51, + "index": 58, "toolComponent": { "name": "QDJVM" } @@ -23540,17 +21898,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -23574,17 +21929,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -23608,17 +21960,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -23642,17 +21991,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -23676,17 +22022,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -23710,10 +22053,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -23744,17 +22084,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -23778,17 +22115,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -23812,17 +22146,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -23846,10 +22177,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -23880,17 +22208,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -23914,17 +22239,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -23948,17 +22270,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -23982,17 +22301,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -24016,17 +22332,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -24050,17 +22363,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -24084,17 +22394,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues/Cast", - "index": 103, + "index": 113, "toolComponent": { "name": "QDJVM" } @@ -24118,17 +22425,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -24152,17 +22456,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -24186,10 +22487,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -24220,10 +22518,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -24254,17 +22549,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -24288,17 +22580,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -24322,17 +22611,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -24344,29 +22630,26 @@ ] }, { - "id": "NestedSwitchStatement", + "id": "EmptyTryBlock", "shortDescription": { - "text": "Nested 'switch' statement" + "text": "Empty 'try' block" }, "fullDescription": { - "text": "Reports nested 'switch' statements or expressions. Nested 'switch' statements may result in extremely confusing code. These statements may be extracted to a separate method. Example: 'int res = switch (i) {\n case 0 -> 0;\n default -> switch (i) {\n case 100 -> 0;\n default -> i;\n };\n };'", - "markdown": "Reports nested `switch` statements or expressions.\n\nNested `switch` statements\nmay result in extremely confusing code. These statements may be extracted to a separate method.\n\nExample:\n\n\n int res = switch (i) {\n case 0 -> 0;\n default -> switch (i) {\n case 100 -> 0;\n default -> i;\n };\n };\n" + "text": "Reports empty 'try' blocks, including try-with-resources statements. 'try' blocks with comments are considered empty. This inspection doesn't report empty 'try' blocks found in JSP files.", + "markdown": "Reports empty `try` blocks, including try-with-resources statements.\n\n`try` blocks with comments are considered empty.\n\n\nThis inspection doesn't report empty `try` blocks found in JSP files." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Control flow issues", - "index": 27, + "id": "Java/Error handling", + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -24378,29 +22661,26 @@ ] }, { - "id": "EmptyTryBlock", + "id": "NestedSwitchStatement", "shortDescription": { - "text": "Empty 'try' block" + "text": "Nested 'switch' statement" }, "fullDescription": { - "text": "Reports empty 'try' blocks, including try-with-resources statements. 'try' blocks with comments are considered empty. This inspection doesn't report empty 'try' blocks found in JSP files.", - "markdown": "Reports empty `try` blocks, including try-with-resources statements.\n\n`try` blocks with comments are considered empty.\n\n\nThis inspection doesn't report empty `try` blocks found in JSP files." + "text": "Reports nested 'switch' statements or expressions. Nested 'switch' statements may result in extremely confusing code. These statements may be extracted to a separate method. Example: 'int res = switch (i) {\n case 0 -> 0;\n default -> switch (i) {\n case 100 -> 0;\n default -> i;\n };\n };'", + "markdown": "Reports nested `switch` statements or expressions.\n\nNested `switch` statements\nmay result in extremely confusing code. These statements may be extracted to a separate method.\n\nExample:\n\n\n int res = switch (i) {\n case 0 -> 0;\n default -> switch (i) {\n case 100 -> 0;\n default -> i;\n };\n };\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Error handling", - "index": 14, + "id": "Java/Control flow issues", + "index": 27, "toolComponent": { "name": "QDJVM" } @@ -24424,17 +22704,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -24446,29 +22723,26 @@ ] }, { - "id": "WaitOrAwaitWithoutTimeout", + "id": "AssertWithSideEffects", "shortDescription": { - "text": "'wait()' or 'await()' without timeout" + "text": "'assert' statement with side effects" }, "fullDescription": { - "text": "Reports calls to 'Object.wait()' or 'Condition.await()' without specifying a timeout. Such calls may be dangerous in high-availability programs, as failures in one component may result in blockages of the waiting component if 'notify()'/'notifyAll()' or 'signal()'/'signalAll()' never get called. Example: 'void foo(Object bar) throws InterruptedException {\n bar.wait();\n }'", - "markdown": "Reports calls to `Object.wait()` or `Condition.await()` without specifying a timeout.\n\n\nSuch calls may be dangerous in high-availability programs, as failures in one\ncomponent may result in blockages of the waiting component\nif `notify()`/`notifyAll()`\nor `signal()`/`signalAll()` never get called.\n\n**Example:**\n\n\n void foo(Object bar) throws InterruptedException {\n bar.wait();\n }\n" + "text": "Reports 'assert' statements that cause side effects. Since assertions can be switched off, these side effects are not guaranteed, which can cause subtle bugs. Common unwanted side effects detected by this inspection are modifications of variables and fields. When methods calls are involved, they are analyzed one level deep. Example: 'assert i++ < 10;'", + "markdown": "Reports `assert` statements that cause side effects.\n\n\nSince assertions can be switched off,\nthese side effects are not guaranteed, which can cause subtle bugs. Common unwanted side effects detected by this inspection are\nmodifications of variables and fields. When methods calls are involved, they are analyzed one level deep.\n\n**Example:**\n\n\n assert i++ < 10;\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Threading issues", - "index": 25, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -24480,29 +22754,26 @@ ] }, { - "id": "AssertWithSideEffects", + "id": "WaitOrAwaitWithoutTimeout", "shortDescription": { - "text": "'assert' statement with side effects" + "text": "'wait()' or 'await()' without timeout" }, "fullDescription": { - "text": "Reports 'assert' statements that cause side effects. Since assertions can be switched off, these side effects are not guaranteed, which can cause subtle bugs. Common unwanted side effects detected by this inspection are modifications of variables and fields. When methods calls are involved, they are analyzed one level deep. Example: 'assert i++ < 10;'", - "markdown": "Reports `assert` statements that cause side effects.\n\n\nSince assertions can be switched off,\nthese side effects are not guaranteed, which can cause subtle bugs. Common unwanted side effects detected by this inspection are\nmodifications of variables and fields. When methods calls are involved, they are analyzed one level deep.\n\n**Example:**\n\n\n assert i++ < 10;\n" + "text": "Reports calls to 'Object.wait()' or 'Condition.await()' without specifying a timeout. Such calls may be dangerous in high-availability programs, as failures in one component may result in blockages of the waiting component if 'notify()'/'notifyAll()' or 'signal()'/'signalAll()' never get called. Example: 'void foo(Object bar) throws InterruptedException {\n bar.wait();\n }'", + "markdown": "Reports calls to `Object.wait()` or `Condition.await()` without specifying a timeout.\n\n\nSuch calls may be dangerous in high-availability programs, as failures in one\ncomponent may result in blockages of the waiting component\nif `notify()`/`notifyAll()`\nor `signal()`/`signalAll()` never get called.\n\n**Example:**\n\n\n void foo(Object bar) throws InterruptedException {\n bar.wait();\n }\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Threading issues", + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -24519,24 +22790,21 @@ "text": "Class is closed to inheritance" }, "fullDescription": { - "text": "Reports classes that are declared 'final'. Such classes can't be inherited and may indicate a lack of object-oriented design. Some coding standards discourage 'final' classes.", - "markdown": "Reports classes that are declared `final`. Such classes can't be inherited and may indicate a lack of object-oriented design. Some coding standards discourage `final` classes." + "text": "Reports classes that are declared 'final'. Final classes that extend a 'sealed' class or interface are not reported. Such classes can't be inherited and may indicate a lack of object-oriented design. Some coding standards discourage 'final' classes. Example: 'public final class Main {\n }' After the quick-fix is applied: 'public class Main {\n }'", + "markdown": "Reports classes that are declared `final`. Final classes that extend a `sealed` class or interface are not reported. Such classes can't be inherited and may indicate a lack of object-oriented design. Some coding standards discourage `final` classes.\n\n**Example:**\n\n\n public final class Main {\n }\n\nAfter the quick-fix is applied:\n\n\n public class Main {\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -24560,10 +22828,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -24594,17 +22859,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Memory", - "index": 126, + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -24628,17 +22890,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -24662,17 +22921,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -24696,17 +22952,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Data flow", - "index": 44, + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -24730,17 +22983,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -24764,17 +23014,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -24798,17 +23045,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -24825,24 +23069,21 @@ "text": "JUnit malformed declaration" }, "fullDescription": { - "text": "Reports JUnit test member declarations that are malformed and are likely not recognized by the JUnit test framework. The following problems are reported by this inspection: Fields annotated by '@RegisterExtension' that have the wrong type or are not declared as static when it is required Static inner classes annotated with '@Nested' Parameterized tests that are defined without a source Parameterized tests with a '@MethodSource' that has an unknown, non-static or no-arg target Parameterized tests with a '@ValueSource' or '@EnumSource' which types cannot be converted to method parameters Tests that are annotated by more than one of '@Test', '@ParameterizedTest' or '@RepeatedTest' 'setup()' or 'tearDown()' methods that are not public, whose return type is not void or take arguments 'suite()' methods that are private, take arguments or are not static Methods annotated by '@BeforeClass', '@AfterClass', '@BeforeAll' or '@AfterAll' that are not public, not static, whose return type is not void or do not have a valid parameter list Methods annotated by '@Before', '@After', '@BeforeEach' or '@AfterEach' that are not public, whose return type is not void or take arguments Injected 'RepetitionInfo' in '@BeforeAll' or '@AfterAll' methods Injected 'RepetitionInfo' in '@BeforeEach' or '@AfterEach' methods that are used by '@Test' annotated tests Fields and methods annotated by '@DataPoint' or '@DataPoints' that are not public or not static Fields and methods annotated by '@Rule' that are not public or not a subtype of 'TestRule' or 'MethodRule' Fields and methods annotated by '@ClassRule' that are not public, not static or not a subtype of 'TestRule' Methods inside a subclass of 'TestCase' with a 'test' prefix that are not public, whose return type is not void, take arguments or are static Methods annotated by '@Test' that are not public, whose return type is not void, take arguments or are static Note that in Kotlin, suspending functions do have arguments and a non-void return type. Therefore, they also will not be executed by the JUnit test runner. This inspection will also report about this problem. Malformed '@Before' method example (Java): '@Before private int foo(int arg) { ... }' After the quick-fix is applied: '@Before public void foo() { ... }' Missing method source example (Kotlin): 'class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n }' After the quick-fix is applied: 'class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n\n companion object {\n @JvmStatic\n fun parameters(): Stream<Arguments> {\n TODO(\"Not yet implemented\")\n }\n }\n }' Use the inspection options to specify annotations. Any parameter annotated with one of these annotations will not be reported.", - "markdown": "Reports JUnit test member declarations that are malformed and are likely not recognized by the JUnit test framework. The following problems are reported by this inspection:\n\n* Fields annotated by `@RegisterExtension` that have the wrong type or are not declared as static when it is required\n* Static inner classes annotated with `@Nested`\n* Parameterized tests that are defined without a source\n* Parameterized tests with a `@MethodSource` that has an unknown, non-static or no-arg target\n* Parameterized tests with a `@ValueSource` or `@EnumSource` which types cannot be converted to method parameters\n* Tests that are annotated by more than one of `@Test`, `@ParameterizedTest` or `@RepeatedTest`\n* `setup()` or `tearDown()` methods that are not public, whose return type is not void or take arguments\n* `suite()` methods that are private, take arguments or are not static\n* Methods annotated by `@BeforeClass`, `@AfterClass`, `@BeforeAll` or `@AfterAll` that are not public, not static, whose return type is not void or do not have a valid parameter list\n* Methods annotated by `@Before`, `@After`, `@BeforeEach` or `@AfterEach` that are not public, whose return type is not void or take arguments\n* Injected `RepetitionInfo` in `@BeforeAll` or `@AfterAll` methods\n* Injected `RepetitionInfo` in `@BeforeEach` or `@AfterEach` methods that are used by `@Test` annotated tests\n* Fields and methods annotated by `@DataPoint` or `@DataPoints` that are not public or not static\n* Fields and methods annotated by `@Rule` that are not public or not a subtype of `TestRule` or `MethodRule`\n* Fields and methods annotated by `@ClassRule` that are not public, not static or not a subtype of `TestRule`\n* Methods inside a subclass of `TestCase` with a `test` prefix that are not public, whose return type is not void, take arguments or are static\n* Methods annotated by `@Test` that are not public, whose return type is not void, take arguments or are static\n\nNote that in Kotlin, suspending functions do have arguments and a non-void return type. Therefore, they also will not be executed by the JUnit test runner. This inspection will also report about this problem.\n\n**Malformed `@Before` method example (Java):**\n\n @Before private int foo(int arg) { ... } \n\nAfter the quick-fix is applied:\n\n @Before public void foo() { ... } \n\n**Missing method source example (Kotlin):**\n\n\n class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n }\n\nAfter the quick-fix is applied:\n\n\n class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n\n companion object {\n @JvmStatic\n fun parameters(): Stream<Arguments> {\n TODO(\"Not yet implemented\")\n }\n }\n }\n\nUse the inspection options to specify annotations. Any parameter annotated with one of these annotations will not be reported." + "text": "Reports JUnit test member declarations that are malformed and are likely not recognized by the JUnit test framework. The following problems are reported by this inspection: Fields annotated by '@RegisterExtension' that have the wrong type or are not declared as static when it is required Static or private inner classes annotated with '@Nested' Parameterized tests that are defined without a source Parameterized tests with a '@MethodSource' that has an unknown, non-static or no-arg target Mismatched types between parameterized test method parameter and the specified '@ValueSource' or '@EnumSource' values Tests that are annotated by more than one of '@Test', '@ParameterizedTest' or '@RepeatedTest' 'setup()' or 'tearDown()' methods that are not public, whose return type is not void or take arguments 'suite()' methods that are private, take arguments or are not static Methods annotated by '@BeforeClass', '@AfterClass', '@BeforeAll' or '@AfterAll' that are not public, not static, whose return type is not void or do not have a valid parameter list Methods annotated by '@Before', '@After', '@BeforeEach' or '@AfterEach' that are not public, whose return type is not void or take arguments Injected 'RepetitionInfo' in '@BeforeAll' or '@AfterAll' methods Injected 'RepetitionInfo' in '@BeforeEach' or '@AfterEach' methods that are used by '@Test' annotated tests Fields and methods annotated by '@DataPoint' or '@DataPoints' that are not public or not static Fields and methods annotated by '@Rule' that are not public or not a subtype of 'TestRule' or 'MethodRule' Fields and methods annotated by '@ClassRule' that are not public, not static or not a subtype of 'TestRule' Methods inside a subclass of 'TestCase' with a 'test' prefix that are not public, whose return type is not void, take arguments or are static Methods annotated by '@Test' that are not public, whose return type is not void, take arguments or are static Note that in Kotlin, suspending functions do have arguments and a non-void return type. Therefore, they also will not be executed by the JUnit test runner. This inspection will also report about this problem. Malformed '@Before' method example (Java): '@Before private int foo(int arg) { ... }' After the quick-fix is applied: '@Before public void foo() { ... }' Missing method source example (Kotlin): 'class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n }' After the quick-fix is applied: 'class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n\n companion object {\n @JvmStatic\n fun parameters(): Stream<Arguments> {\n TODO(\"Not yet implemented\")\n }\n }\n }' Use the inspection options to specify annotations. Any parameter annotated with one of these annotations will not be reported.", + "markdown": "Reports JUnit test member declarations that are malformed and are likely not recognized by the JUnit test framework. The following problems are reported by this inspection:\n\n* Fields annotated by `@RegisterExtension` that have the wrong type or are not declared as static when it is required\n* Static or private inner classes annotated with `@Nested`\n* Parameterized tests that are defined without a source\n* Parameterized tests with a `@MethodSource` that has an unknown, non-static or no-arg target\n* Mismatched types between parameterized test method parameter and the specified `@ValueSource` or `@EnumSource` values\n* Tests that are annotated by more than one of `@Test`, `@ParameterizedTest` or `@RepeatedTest`\n* `setup()` or `tearDown()` methods that are not public, whose return type is not void or take arguments\n* `suite()` methods that are private, take arguments or are not static\n* Methods annotated by `@BeforeClass`, `@AfterClass`, `@BeforeAll` or `@AfterAll` that are not public, not static, whose return type is not void or do not have a valid parameter list\n* Methods annotated by `@Before`, `@After`, `@BeforeEach` or `@AfterEach` that are not public, whose return type is not void or take arguments\n* Injected `RepetitionInfo` in `@BeforeAll` or `@AfterAll` methods\n* Injected `RepetitionInfo` in `@BeforeEach` or `@AfterEach` methods that are used by `@Test` annotated tests\n* Fields and methods annotated by `@DataPoint` or `@DataPoints` that are not public or not static\n* Fields and methods annotated by `@Rule` that are not public or not a subtype of `TestRule` or `MethodRule`\n* Fields and methods annotated by `@ClassRule` that are not public, not static or not a subtype of `TestRule`\n* Methods inside a subclass of `TestCase` with a `test` prefix that are not public, whose return type is not void, take arguments or are static\n* Methods annotated by `@Test` that are not public, whose return type is not void, take arguments or are static\n\nNote that in Kotlin, suspending functions do have arguments and a non-void return type. Therefore, they also will not be executed by the JUnit test runner. This inspection will also report about this problem.\n\n**Malformed `@Before` method example (Java):**\n\n @Before private int foo(int arg) { ... } \n\nAfter the quick-fix is applied:\n\n @Before public void foo() { ... } \n\n**Missing method source example (Kotlin):**\n\n\n class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n }\n\nAfter the quick-fix is applied:\n\n\n class Example {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n fun foo(param: String) { ... }\n\n companion object {\n @JvmStatic\n fun parameters(): Stream<Arguments> {\n TODO(\"Not yet implemented\")\n }\n }\n }\n\nUse the inspection options to specify annotations. Any parameter annotated with one of these annotations will not be reported." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -24866,17 +23107,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -24900,17 +23138,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -24934,10 +23169,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -24968,17 +23200,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -25002,10 +23231,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25024,6 +23250,37 @@ ] }, { + "id": "RedundantCompareToJavaTime", + "shortDescription": { + "text": "Expression with 'java.time' 'compareTo()' call can be simplified" + }, + "fullDescription": { + "text": "Reports 'java.time' comparisons with 'compareTo()' calls that can be replaced with 'isAfter()', 'isBefore()' or 'isEqual()' calls. Example: 'LocalDate date1 = LocalDate.now();\n LocalDate date2 = LocalDate.now();\n boolean t = date1.compareTo(date2) > 0;' After the quick-fix is applied: 'LocalDate date1 = LocalDate.now();\n LocalDate date2 = LocalDate.now();\n boolean t = date1.isAfter(date2);' New in 2022.3", + "markdown": "Reports `java.time` comparisons with `compareTo()` calls that can be replaced with `isAfter()`, `isBefore()` or `isEqual()` calls.\n\nExample:\n\n\n LocalDate date1 = LocalDate.now();\n LocalDate date2 = LocalDate.now();\n boolean t = date1.compareTo(date2) > 0;\n\nAfter the quick-fix is applied:\n\n\n LocalDate date1 = LocalDate.now();\n LocalDate date2 = LocalDate.now();\n boolean t = date1.isAfter(date2);\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Verbose or redundant code constructs", + "index": 40, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "ChainedMethodCall", "shortDescription": { "text": "Chained method calls" @@ -25036,10 +23293,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25070,17 +23324,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -25104,17 +23355,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -25138,10 +23386,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25172,17 +23417,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 15", - "index": 34, + "id": "Java/Java language level migration aids/Java 16", + "index": 153, "toolComponent": { "name": "QDJVM" } @@ -25206,17 +23448,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -25240,10 +23479,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -25274,17 +23510,45 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IncorrectDateTimeFormat", + "shortDescription": { + "text": "Incorrect 'DateTimeFormat' pattern" + }, + "fullDescription": { + "text": "Reports incorrect date time format patterns. The following errors are reported: Unsupported pattern letters, like \"TT\" Using reserved characters, like \"#\" Incorrect use of padding Unbalanced brackets Incorrect amount of consecutive pattern letters Examples: 'DateTimeFormatter.ofPattern(\"[][]]\"); // Closing ']' without previous opening '['\n DateTimeFormatter.ofPattern(\"TT\"); // Illegal pattern letter 'T'\n DateTimeFormatter.ofPattern(\"{\"); // Use of reserved character '{'\n DateTimeFormatter.ofPattern(\"MMMMMM\"); // Too many consecutive pattern letters 'M'' New in 2022.3", + "markdown": "Reports incorrect date time format patterns.\n\nThe following errors are reported:\n\n* Unsupported pattern letters, like \"TT\"\n* Using reserved characters, like \"#\"\n* Incorrect use of padding\n* Unbalanced brackets\n* Incorrect amount of consecutive pattern letters\n\nExamples:\n\n\n DateTimeFormatter.ofPattern(\"[][]]\"); // Closing ']' without previous opening '['\n DateTimeFormatter.ofPattern(\"TT\"); // Illegal pattern letter 'T'\n DateTimeFormatter.ofPattern(\"{\"); // Use of reserved character '{'\n DateTimeFormatter.ofPattern(\"MMMMMM\"); // Too many consecutive pattern letters 'M'\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -25308,10 +23572,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25342,10 +23603,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25376,17 +23634,45 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TestInProductSource", + "shortDescription": { + "text": "Test in product source" + }, + "fullDescription": { + "text": "Reports test classes and test methods that are located in production source trees. This most likely a mistake and can result in test code being shipped into production.", + "markdown": "Reports test classes and test methods that are located in production source trees. This most likely a mistake and can result in test code being shipped into production." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -25410,10 +23696,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25444,17 +23727,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -25478,17 +23758,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -25512,17 +23789,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -25546,17 +23820,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -25580,17 +23851,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Probable bugs/Nullability problems", - "index": 132, + "index": 142, "toolComponent": { "name": "QDJVM" } @@ -25614,10 +23882,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25648,17 +23913,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -25682,10 +23944,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25716,17 +23975,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -25750,17 +24006,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -25784,17 +24037,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -25818,17 +24068,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Bitwise operation issues", - "index": 155, + "index": 161, "toolComponent": { "name": "QDJVM" } @@ -25852,17 +24099,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -25886,10 +24130,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -25914,23 +24155,20 @@ }, "fullDescription": { "text": "Reports references from a nested class to non-constant 'private' members of an outer class. For such references, javac will generate package-private synthetic accessor methods, which may compromise the security because members appearing to be private will in fact be accessible from the entire package. A nested class and its outer class are compiled to separate class files. The Java virtual machine normally prohibits access from a class to private fields and methods of another class. To enable access from a nested class to private members of an outer class, javac creates a package-private synthetic accessor method. By making the 'private' member package-private instead, the actual accessibility is made explicit. This also saves a little bit of memory, which may improve performance in resource constrained environments. This inspection only reports if the language level of the project or module is 10 or lower. Under Java 11 and higher accessor methods are not generated anymore, because of nest-based access control (JEP 181). Example: 'class Outer {\n private void x() {}\n\n class Inner {\n void y() {\n x();\n }\n }\n }' After the quick fix is applied: 'class Outer {\n void x() {}\n\n class Inner {\n void y() {\n x();\n }\n }\n }'", - "markdown": "Reports references from a nested class to non-constant `private` members of an outer class. For such references, javac will generate package-private synthetic accessor methods, which may compromise the security because members appearing to be private will in fact be accessible from the entire package.\n\n\nA nested class and its outer class are compiled to separate\nclass files. The Java virtual machine normally prohibits access from a class to private fields and methods of\nanother class. To enable access from a nested class to private members of an outer class, javac creates a package-private\nsynthetic accessor method.\n\n\nBy making the `private` member package-private instead, the actual accessibility is made explicit.\nThis also saves a little bit of memory, which may improve performance in resource constrained environments.\n\n\nThis inspection only reports if the language level of the project or module is 10 or lower.\nUnder Java 11 and higher accessor methods are not generated anymore,\nbecause of nest-based access control ([JEP 181](https://openjdk.java.net/jeps/181)).\n\n**Example:**\n\n\n class Outer {\n private void x() {}\n\n class Inner {\n void y() {\n x();\n }\n }\n }\n\nAfter the quick fix is applied:\n\n\n class Outer {\n void x() {}\n\n class Inner {\n void y() {\n x();\n }\n }\n }\n" + "markdown": "Reports references from a nested class to non-constant `private` members of an outer class. For such references, javac will generate package-private synthetic accessor methods, which may compromise the security because members appearing to be private will in fact be accessible from the entire package.\n\n\nA nested class and its outer class are compiled to separate\nclass files. The Java virtual machine normally prohibits access from a class to private fields and methods of\nanother class. To enable access from a nested class to private members of an outer class, javac creates a package-private\nsynthetic accessor method.\n\n\nBy making the `private` member package-private instead, the actual accessibility is made explicit.\nThis also saves a little bit of memory, which may improve performance in resource constrained environments.\n\n\nThis inspection only reports if the language level of the project or module is 10 or lower.\nUnder Java 11 and higher accessor methods are not generated anymore,\nbecause of nest-based access control ([JEP 181](https://openjdk.org/jeps/181)).\n\n**Example:**\n\n\n class Outer {\n private void x() {}\n\n class Inner {\n void y() {\n x();\n }\n }\n }\n\nAfter the quick fix is applied:\n\n\n class Outer {\n void x() {}\n\n class Inner {\n void y() {\n x();\n }\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -25942,29 +24180,26 @@ ] }, { - "id": "SystemRunFinalizersOnExit", + "id": "ClassIndependentOfModule", "shortDescription": { - "text": "Call to 'System.runFinalizersOnExit()'" + "text": "Class independent of its module" }, "fullDescription": { - "text": "Reports calls to 'System.runFinalizersOnExit()'. This call is one of the most dangerous in the Java language. It is inherently non-thread-safe, may result in data corruption, a deadlock, and may affect parts of the program far removed from its call point. It is deprecated and was removed in JDK 11, and its use is strongly discouraged. This inspection only reports if the language level of the project or module is 10 or lower.", - "markdown": "Reports calls to `System.runFinalizersOnExit()`.\n\n\nThis call is one of the most dangerous in the Java language. It is inherently non-thread-safe,\nmay result in data corruption, a deadlock, and may affect parts of the program far removed from its call point.\nIt is deprecated and was removed in JDK 11, and its use is strongly discouraged.\n\nThis inspection only reports if the language level of the project or module is 10 or lower." + "text": "Reports classes that: do not depend on any other class in their module are not a dependency for any other class in their module Such classes are an indication of ad-hoc or incoherent modularisation strategies, and may often profitably be moved. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", + "markdown": "Reports classes that:\n\n* do not depend on any other class in their module\n* are not a dependency for any other class in their module\n\nSuch classes are an indication of ad-hoc or incoherent modularisation strategies,\nand may often profitably be moved.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Threading issues", - "index": 25, + "id": "Java/Modularization issues", + "index": 60, "toolComponent": { "name": "QDJVM" } @@ -25976,29 +24211,26 @@ ] }, { - "id": "ClassIndependentOfModule", + "id": "SystemRunFinalizersOnExit", "shortDescription": { - "text": "Class independent of its module" + "text": "Call to 'System.runFinalizersOnExit()'" }, "fullDescription": { - "text": "Reports classes that: do not depend on any other class in their module are not a dependency for any other class in their module Such classes are an indication of ad-hoc or incoherent modularisation strategies, and may often profitably be moved. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.", - "markdown": "Reports classes that:\n\n* do not depend on any other class in their module\n* are not a dependency for any other class in their module\n\nSuch classes are an indication of ad-hoc or incoherent modularisation strategies,\nand may often profitably be moved.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor." + "text": "Reports calls to 'System.runFinalizersOnExit()'. This call is one of the most dangerous in the Java language. It is inherently non-thread-safe, may result in data corruption, a deadlock, and may affect parts of the program far removed from its call point. It is deprecated and was removed in JDK 11, and its use is strongly discouraged. This inspection only reports if the language level of the project or module is 10 or lower.", + "markdown": "Reports calls to `System.runFinalizersOnExit()`.\n\n\nThis call is one of the most dangerous in the Java language. It is inherently non-thread-safe,\nmay result in data corruption, a deadlock, and may affect parts of the program far removed from its call point.\nIt is deprecated and was removed in JDK 11, and its use is strongly discouraged.\n\nThis inspection only reports if the language level of the project or module is 10 or lower." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Modularization issues", - "index": 53, + "id": "Java/Threading issues", + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -26010,29 +24242,26 @@ ] }, { - "id": "ParameterTypePreventsOverriding", + "id": "ReplaceInefficientStreamCount", "shortDescription": { - "text": "Parameter type prevents overriding" + "text": "Inefficient Stream API call chains ending with count()" }, "fullDescription": { - "text": "Reports parameter types of a subclass method that have the same name as the parameter type of the corresponding super method but belong to a different package. In these cases, the subclass method cannot override the super method. Example: 'public class A {\n public void method(Object o) {}\n}\n\npublic class B extends A {\n public void method(Object o) {} // warning on parameter type\n class Object {}\n}' After the quick-fix is applied: 'public class A {\n public void method(Object o) {}\n}\n\npublic class B extends A {\n public void method(java.lang.Object o) {} // new parameter type\n class Object {}\n}'", - "markdown": "Reports parameter types of a subclass method that have the same name as the parameter type of the corresponding super method but belong to a different package. In these cases, the subclass method cannot override the super method.\n\n**Example:**\n\n\n public class A {\n public void method(Object o) {}\n }\n\n public class B extends A {\n public void method(Object o) {} // warning on parameter type\n class Object {}\n }\n\nAfter the quick-fix is applied:\n\n\n public class A {\n public void method(Object o) {}\n }\n\n public class B extends A {\n public void method(java.lang.Object o) {} // new parameter type\n class Object {}\n }\n" + "text": "Reports Stream API call chains ending with the 'count()' operation that could be optimized. The following call chains are replaced by this inspection: 'Collection.stream().count()' → 'Collection.size()'. In Java 8 'Collection.stream().count()' actually iterates over the collection elements to count them, while 'Collection.size()' is much faster for most of the collections. 'Stream.flatMap(Collection::stream).count()' → 'Stream.mapToLong(Collection::size).sum()'. Similarly, there's no need to iterate over all the nested collections. Instead, their sizes could be summed up. 'Stream.filter(o -> ...).count() > 0' → 'Stream.anyMatch(o -> ...)'. Unlike the original call, 'anyMatch()' may stop the computation as soon as a matching element is found. 'Stream.filter(o -> ...).count() == 0' → 'Stream.noneMatch(o -> ...)'. Similar to the above. Note that if the replacement involves a short-circuiting operation like 'anyMatch()', there could be a visible behavior change, if the intermediate stream operations produce side effects. In general, side effects should be avoided in Stream API calls.", + "markdown": "Reports Stream API call chains ending with the `count()` operation that could be optimized.\n\n\nThe following call chains are replaced by this inspection:\n\n* `Collection.stream().count()` → `Collection.size()`. In Java 8 `Collection.stream().count()` actually iterates over the collection elements to count them, while `Collection.size()` is much faster for most of the collections.\n* `Stream.flatMap(Collection::stream).count()` → `Stream.mapToLong(Collection::size).sum()`. Similarly, there's no need to iterate over all the nested collections. Instead, their sizes could be summed up.\n* `Stream.filter(o -> ...).count() > 0` → `Stream.anyMatch(o -> ...)`. Unlike the original call, `anyMatch()` may stop the computation as soon as a matching element is found.\n* `Stream.filter(o -> ...).count() == 0` → `Stream.noneMatch(o -> ...)`. Similar to the above.\n\n\nNote that if the replacement involves a short-circuiting operation like `anyMatch()`, there could be a visible behavior change,\nif the intermediate stream operations produce side effects. In general, side effects should be avoided in Stream API calls." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Inheritance issues", - "index": 113, + "id": "Java/Performance", + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -26044,29 +24273,26 @@ ] }, { - "id": "ReplaceInefficientStreamCount", + "id": "ParameterTypePreventsOverriding", "shortDescription": { - "text": "Inefficient Stream API call chains ending with count()" + "text": "Parameter type prevents overriding" }, "fullDescription": { - "text": "Reports Stream API call chains ending with the 'count()' operation that could be optimized. The following call chains are replaced by this inspection: 'Collection.stream().count()' → 'Collection.size()'. In Java 8 'Collection.stream().count()' actually iterates over the collection elements to count them, while 'Collection.size()' is much faster for most of the collections. 'Stream.flatMap(Collection::stream).count()' → 'Stream.mapToLong(Collection::size).sum()'. Similarly, there's no need to iterate over all the nested collections. Instead, their sizes could be summed up. 'Stream.filter(o -> ...).count() > 0' → 'Stream.anyMatch(o -> ...)'. Unlike the original call, 'anyMatch()' may stop the computation as soon as a matching element is found. 'Stream.filter(o -> ...).count() == 0' → 'Stream.noneMatch(o -> ...)'. Similar to the above. Note that if the replacement involves a short-circuiting operation like 'anyMatch()', there could be a visible behavior change, if the intermediate stream operations produce side effects. In general, side effects should be avoided in Stream API calls.", - "markdown": "Reports Stream API call chains ending with the `count()` operation that could be optimized.\n\n\nThe following call chains are replaced by this inspection:\n\n* `Collection.stream().count()` → `Collection.size()`. In Java 8 `Collection.stream().count()` actually iterates over the collection elements to count them, while `Collection.size()` is much faster for most of the collections.\n* `Stream.flatMap(Collection::stream).count()` → `Stream.mapToLong(Collection::size).sum()`. Similarly, there's no need to iterate over all the nested collections. Instead, their sizes could be summed up.\n* `Stream.filter(o -> ...).count() > 0` → `Stream.anyMatch(o -> ...)`. Unlike the original call, `anyMatch()` may stop the computation as soon as a matching element is found.\n* `Stream.filter(o -> ...).count() == 0` → `Stream.noneMatch(o -> ...)`. Similar to the above.\n\n\nNote that if the replacement involves a short-circuiting operation like `anyMatch()`, there could be a visible behavior change,\nif the intermediate stream operations produce side effects. In general, side effects should be avoided in Stream API calls." + "text": "Reports parameter types of a subclass method that have the same name as the parameter type of the corresponding super method but belong to a different package. In these cases, the subclass method cannot override the super method. Example: 'public class A {\n public void method(Object o) {}\n}\n\npublic class B extends A {\n public void method(Object o) {} // warning on parameter type\n class Object {}\n}' After the quick-fix is applied: 'public class A {\n public void method(Object o) {}\n}\n\npublic class B extends A {\n public void method(java.lang.Object o) {} // new parameter type\n class Object {}\n}'", + "markdown": "Reports parameter types of a subclass method that have the same name as the parameter type of the corresponding super method but belong to a different package. In these cases, the subclass method cannot override the super method.\n\n**Example:**\n\n\n public class A {\n public void method(Object o) {}\n }\n\n public class B extends A {\n public void method(Object o) {} // warning on parameter type\n class Object {}\n }\n\nAfter the quick-fix is applied:\n\n\n public class A {\n public void method(Object o) {}\n }\n\n public class B extends A {\n public void method(java.lang.Object o) {} // new parameter type\n class Object {}\n }\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Performance", - "index": 10, + "id": "Java/Inheritance issues", + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -26083,24 +24309,21 @@ "text": "Redundant 'String' operation" }, "fullDescription": { - "text": "Reports redundant 'String' constructors and calls to methods like 'toString()' or 'substring()' when they can be replaced with a simplified expression. For example, calls to these methods can be safely removed in cases like '\"string\".substring(0)', '\"string\".toString()', or 'new StringBuilder().toString().substring(1,3)'. Example: 'System.out.println(new String(\"message\"));' After the quick-fix is applied: 'System.out.println(\"message\");' Note that the quick-fix removes the redundant constructor, and this may affect 'String' referential equality. If you need to preserve it even though it is considered bad practice, suppress the warning or configure the settings to ignore redundant 'String' constructors. New in 2018.1", - "markdown": "Reports redundant `String` constructors and calls to methods like `toString()` or `substring()` when they can be replaced with a simplified expression.\n\nFor example, calls to these methods can be safely removed in cases\nlike `\"string\".substring(0)`, `\"string\".toString()`, or\n`new StringBuilder().toString().substring(1,3)`.\n\nExample:\n\n\n System.out.println(new String(\"message\"));\n\nAfter the quick-fix is applied:\n\n\n System.out.println(\"message\");\n\n\nNote that the quick-fix removes the redundant constructor, and this may affect `String` referential equality.\nIf you need to preserve it even though it is considered bad practice, suppress the warning or configure the settings to ignore\nredundant `String` constructors.\n\nNew in 2018.1" + "text": "Reports redundant calls to 'String' constructors and methods like 'toString()' or 'substring()' that can be replaced with a simpler expression. For example, calls to these methods can be safely removed in code like '\"string\".substring(0)', '\"string\".toString()', or 'new StringBuilder().toString().substring(1,3)'. Example: 'System.out.println(new String(\"message\"));' After the quick-fix is applied: 'System.out.println(\"message\");' Note that the quick-fix removes the redundant constructor call, and this may affect 'String' referential equality. If you need to preserve it, even though it is considered bad practice, suppress the warning or use the inspection setting to ignore redundant 'String' constructor calls. Use the Do not report String constructor calls option below to not report code like the example above. This will avoid changing the outcome of String comparisons with '==' or '!=' after applying the quick-fix in code that uses 'new String()' calls to guarantee a different object identity. New in 2018.1", + "markdown": "Reports redundant calls to `String` constructors and methods like `toString()` or `substring()` that can be replaced with a simpler expression.\n\nFor example, calls to these methods can be safely removed in code\nlike `\"string\".substring(0)`, `\"string\".toString()`, or\n`new StringBuilder().toString().substring(1,3)`.\n\nExample:\n\n\n System.out.println(new String(\"message\"));\n\nAfter the quick-fix is applied:\n\n\n System.out.println(\"message\");\n\n\nNote that the quick-fix removes the redundant constructor call, and this may affect `String` referential equality.\nIf you need to preserve it, even though it is considered bad practice, suppress the warning or use the inspection setting to ignore\nredundant `String` constructor calls.\n\n\nUse the **Do not report String constructor calls** option below to not report code like the example above.\nThis will avoid changing the outcome of String comparisons with `==` or `!=` after applying\nthe quick-fix in code that uses `new String()` calls to guarantee a different object identity.\n\nNew in 2018.1" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -26124,17 +24347,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -26158,10 +24378,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26192,10 +24409,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26226,17 +24440,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -26260,17 +24471,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -26294,17 +24502,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Data flow", - "index": 44, + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -26328,17 +24533,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -26362,17 +24564,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -26396,10 +24595,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26430,17 +24626,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -26464,17 +24657,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Probable bugs/Nullability problems", - "index": 132, + "index": 142, "toolComponent": { "name": "QDJVM" } @@ -26498,17 +24688,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -26522,7 +24709,7 @@ { "id": "IntegerDivisionInFloatingPointContext", "shortDescription": { - "text": "Integer division in floating point context" + "text": "Integer division in floating-point context" }, "fullDescription": { "text": "Reports integer divisions where the result is used as a floating-point number. Such division is often an error and may have unexpected results due to the truncation that happens in integer division. Example: 'float x = 3.0F + 3/5;'", @@ -26532,17 +24719,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -26566,17 +24750,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Test frameworks", - "index": 97, + "index": 106, "toolComponent": { "name": "QDJVM" } @@ -26590,20 +24771,17 @@ { "id": "ConditionalBreakInInfiniteLoop", "shortDescription": { - "text": "Conditional break inside infinite loop" + "text": "Conditional break inside loop" }, "fullDescription": { - "text": "Reports conditional breaks at the beginning or at the end of a loop and suggests using a loop condition instead to shorten the code. Example: 'while (true) {\n if (i == 23) break;\n i++;\n }' After the quick fix is applied: 'while (i != 23) {\n i++;\n }'", - "markdown": "Reports conditional breaks at the beginning or at the end of a loop and suggests using a loop condition instead to shorten the code.\n\nExample:\n\n\n while (true) {\n if (i == 23) break;\n i++;\n }\n\nAfter the quick fix is applied:\n\n\n while (i != 23) {\n i++;\n }\n" + "text": "Reports conditional breaks at the beginning or at the end of a loop and suggests adding a loop condition instead to shorten the code. Example: 'while (true) {\n if (i == 23) break;\n i++;\n }' After the quick fix is applied: 'while (i != 23) {\n i++;\n }'", + "markdown": "Reports conditional breaks at the beginning or at the end of a loop and suggests adding a loop condition instead to shorten the code.\n\nExample:\n\n\n while (true) {\n if (i == 23) break;\n i++;\n }\n\nAfter the quick fix is applied:\n\n\n while (i != 23) {\n i++;\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26634,10 +24812,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26668,17 +24843,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -26702,17 +24874,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -26736,17 +24905,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -26770,17 +24936,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -26804,10 +24967,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26838,17 +24998,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -26872,17 +25029,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -26906,10 +25060,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -26940,17 +25091,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -26974,10 +25122,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27008,17 +25153,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -27042,17 +25184,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -27076,17 +25215,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions", - "index": 56, + "index": 63, "toolComponent": { "name": "QDJVM" } @@ -27098,29 +25234,26 @@ ] }, { - "id": "ConstantConditionalExpression", + "id": "ClassNamePrefixedWithPackageName", "shortDescription": { - "text": "Constant conditional expression" + "text": "Class name prefixed with package name" }, "fullDescription": { - "text": "Reports conditional expressions in which the condition is either a 'true' or 'false' constant. These expressions sometimes occur as a result of automatic refactorings and may be simplified. Example: 'return true ? \"Yes\" : \"No\";' After quick-fix is applied: 'return \"Yes\";'", - "markdown": "Reports conditional expressions in which the condition is either a `true` or `false` constant. These expressions sometimes occur as a result of automatic refactorings and may be simplified.\n\nExample:\n\n\n return true ? \"Yes\" : \"No\";\n\nAfter quick-fix is applied:\n\n\n return \"Yes\";\n" + "text": "Reports classes whose names are prefixed with their package names, ignoring differences in capitalization. While occasionally having such names is reasonable, they are often used due to a poor naming scheme, may be redundant and annoying. Example: 'package byteCode;\n class ByteCodeAnalyzer {}' A quick-fix that renames such classes is available only in the editor.", + "markdown": "Reports classes whose names are prefixed with their package names, ignoring differences in capitalization.\n\nWhile occasionally having such names is reasonable, they are often used due to a poor naming scheme, may be redundant and\nannoying.\n\n**Example:**\n\n\n package byteCode;\n class ByteCodeAnalyzer {}\n\nA quick-fix that renames such classes is available only in the editor." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Control flow issues", - "index": 27, + "id": "Java/Naming conventions/Class", + "index": 64, "toolComponent": { "name": "QDJVM" } @@ -27132,29 +25265,26 @@ ] }, { - "id": "ClassNamePrefixedWithPackageName", + "id": "ConstantConditionalExpression", "shortDescription": { - "text": "Class name prefixed with package name" + "text": "Constant conditional expression" }, "fullDescription": { - "text": "Reports classes whose names are prefixed with their package names, ignoring differences in capitalization. While occasionally having such names is reasonable, they are often used due to a poor naming scheme, may be redundant and annoying. Example: 'package byteCode;\n class ByteCodeAnalyzer {}' A quick-fix that renames such classes is available only in the editor.", - "markdown": "Reports classes whose names are prefixed with their package names, ignoring differences in capitalization.\n\nWhile occasionally having such names is reasonable, they are often used due to a poor naming scheme, may be redundant and\nannoying.\n\n**Example:**\n\n\n package byteCode;\n class ByteCodeAnalyzer {}\n\nA quick-fix that renames such classes is available only in the editor." + "text": "Reports conditional expressions in which the condition is either a 'true' or 'false' constant. These expressions sometimes occur as a result of automatic refactorings and may be simplified. Example: 'return true ? \"Yes\" : \"No\";' After quick-fix is applied: 'return \"Yes\";'", + "markdown": "Reports conditional expressions in which the condition is either a `true` or `false` constant. These expressions sometimes occur as a result of automatic refactorings and may be simplified.\n\nExample:\n\n\n return true ? \"Yes\" : \"No\";\n\nAfter quick-fix is applied:\n\n\n return \"Yes\";\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Naming conventions/Class", - "index": 57, + "id": "Java/Control flow issues", + "index": 27, "toolComponent": { "name": "QDJVM" } @@ -27178,17 +25308,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -27212,17 +25339,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -27246,17 +25370,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Dependency issues", - "index": 108, + "index": 118, "toolComponent": { "name": "QDJVM" } @@ -27280,10 +25401,7 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -27314,17 +25432,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/toString() issues", - "index": 158, + "index": 164, "toolComponent": { "name": "QDJVM" } @@ -27348,10 +25463,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27382,17 +25494,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -27416,17 +25525,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -27450,10 +25556,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27484,17 +25587,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -27518,17 +25618,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -27552,17 +25649,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Compiler issues", - "index": 122, + "index": 131, "toolComponent": { "name": "QDJVM" } @@ -27586,10 +25680,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27620,17 +25711,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Bitwise operation issues", - "index": 155, + "index": 161, "toolComponent": { "name": "QDJVM" } @@ -27654,17 +25742,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -27688,10 +25773,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27722,17 +25804,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -27756,10 +25835,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27790,10 +25866,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27824,10 +25897,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27858,10 +25928,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -27892,17 +25959,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -27926,17 +25990,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -27960,17 +26021,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Concurrency annotation issues", - "index": 76, + "index": 84, "toolComponent": { "name": "QDJVM" } @@ -27994,17 +26052,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -28028,17 +26083,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -28055,24 +26107,21 @@ "text": "Possible heap pollution from parameterized vararg type" }, "fullDescription": { - "text": "Reports all methods with variable arity, which can be annotated as '@SafeVarargs'. The '@SafeVarargs' annotation suppresses unchecked warnings about parameterized array creation at call sites. Example: 'public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }' After the quick-fix is applied: 'public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n @SafeVarargs\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }' This annotation is not supported under Java 1.6 or earlier JVMs.", - "markdown": "Reports all methods with variable arity, which can be annotated as `@SafeVarargs`. The `@SafeVarargs` annotation suppresses unchecked warnings about parameterized array creation at call sites.\n\n**Example:**\n\n\n public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n @SafeVarargs\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }\n\n\nThis annotation is not supported under Java 1.6 or earlier JVMs." + "text": "Reports methods with variable arity, which can be annotated as '@SafeVarargs'. The '@SafeVarargs' annotation suppresses unchecked warnings about parameterized array creation at call sites. Example: 'public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }' After the quick-fix is applied: 'public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n @SafeVarargs\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }' This annotation is not supported under Java 1.6 or earlier JVMs.", + "markdown": "Reports methods with variable arity, which can be annotated as `@SafeVarargs`. The `@SafeVarargs` annotation suppresses unchecked warnings about parameterized array creation at call sites.\n\n**Example:**\n\n\n public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class Foo<T> {\n private List<T> list = new ArrayList<>();\n\n @SafeVarargs\n public final void safeVarargs(T... elements) {\n Collections.addAll(list, elements);\n }\n }\n\n\nThis annotation is not supported under Java 1.6 or earlier JVMs." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 7", - "index": 121, + "index": 130, "toolComponent": { "name": "QDJVM" } @@ -28089,17 +26138,14 @@ "text": "Suspicious 'Comparator.compare()' implementation" }, "fullDescription": { - "text": "Reports problems in 'Comparator.compare()' implementations. The following cases are reported: A parameter is not used. Most likely this is a typo and the other parameter is compared with itself, or the method is not implemented correctly. It's evident that the comparator does not return '0' for the same elements. Such a comparator violates the contract and can produce unpredictable results when equal elements are encountered. In particular, sorting may fail with an exception on some data. Example: 'Comparator<String> lambda =\n (a, b) -> a.length() > b.length()\n ? 0\n : Math.random() > 0.5 ? -1 : 1;'", - "markdown": "Reports problems in `Comparator.compare()` implementations.\n\nThe following cases are reported:\n\n* A parameter is not used. Most likely this is a typo and the other parameter is compared with itself, or the method is not implemented correctly.\n* It's evident that the comparator does not return `0` for the same elements. Such a comparator violates the contract and can produce unpredictable results when equal elements are encountered. In particular, sorting may fail with an exception on some data.\n\n**Example:**\n\n\n Comparator<String> lambda =\n (a, b) -> a.length() > b.length()\n ? 0\n : Math.random() > 0.5 ? -1 : 1;\n" + "text": "Reports problems in 'Comparator.compare()' and 'Comparable.compareTo()' implementations. The following cases are reported: A parameter is not used. Most likely this is a typo and the other parameter is compared with itself, or the method is not implemented correctly. It's evident that the method does not return '0' for the same elements. Such a comparison method violates the contract and can produce unpredictable results when equal elements are encountered. In particular, sorting may fail with an exception on some data. Comparison method never returns positive or negative value. To fulfill the contract, if comparison method returns positive values, it should also return negative ones if arguments are supplied in reversed order. Comparison method returns 'Integer.MIN_VALUE'. While allowed by contract, it may be error-prone, as some call sites may incorrectly invert the return value of comparison method using unary minus. In this case, 'Integer.MIN_VALUE' will stay negative. Example: 'Comparator<String> lambda =\n (a, b) -> a.length() > b.length()\n ? 0\n : Math.random() > 0.5 ? -1 : 1;'", + "markdown": "Reports problems in `Comparator.compare()` and `Comparable.compareTo()` implementations.\n\nThe following cases are reported:\n\n* A parameter is not used. Most likely this is a typo and the other parameter is compared with itself, or the method is not implemented correctly.\n* It's evident that the method does not return `0` for the same elements. Such a comparison method violates the contract and can produce unpredictable results when equal elements are encountered. In particular, sorting may fail with an exception on some data.\n* Comparison method never returns positive or negative value. To fulfill the contract, if comparison method returns positive values, it should also return negative ones if arguments are supplied in reversed order.\n* Comparison method returns `Integer.MIN_VALUE`. While allowed by contract, it may be error-prone, as some call sites may incorrectly invert the return value of comparison method using unary minus. In this case, `Integer.MIN_VALUE` will stay negative.\n\n**Example:**\n\n\n Comparator<String> lambda =\n (a, b) -> a.length() > b.length()\n ? 0\n : Math.random() > 0.5 ? -1 : 1;\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -28130,17 +26176,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -28152,29 +26195,26 @@ ] }, { - "id": "UnnecessaryUnicodeEscape", + "id": "PrimitiveArrayArgumentToVariableArgMethod", "shortDescription": { - "text": "Unnecessary unicode escape sequence" + "text": "Confusing primitive array argument to varargs method" }, "fullDescription": { - "text": "Reports unnecessary unicode escape sequences. For example, when the file encoding can handle the character without escaping it. Unicode control characters are not reported by this inspection (except for a line feed and a tab). Example: 'String s = \"\\u0062\";'", - "markdown": "Reports unnecessary unicode escape sequences. For example, when the file encoding can handle the character without escaping it. Unicode control characters are not reported by this inspection (except for a line feed and a tab).\n\n**Example:**\n\n String s = \"\\u0062\";\n" + "text": "Reports any calls to a variable arity method where the call has a primitive array in the variable arity parameter position (for example, 'System.out.printf(\"%s\", new int[]{1, 2, 3})'). Such a primitive-array argument may be confusing, as it will be wrapped as a single-element array, rather than each individual element being boxed, as might be expected. Example: 'String.format(\"%s\", new int[]{1, 2, 3});' After the quick-fix is applied: 'String.format(\"%s\", (Object) new int[]{1, 2, 3});'", + "markdown": "Reports any calls to a variable arity method where the call has a primitive array in the variable arity parameter position (for example, `System.out.printf(\"%s\", new int[]{1, 2, 3})`). Such a primitive-array argument may be confusing, as it will be wrapped as a single-element array, rather than each individual element being boxed, as might be expected.\n\n**Example:**\n\n\n String.format(\"%s\", new int[]{1, 2, 3});\n\nAfter the quick-fix is applied:\n\n\n String.format(\"%s\", (Object) new int[]{1, 2, 3});\n" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Internationalization", - "index": 6, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -28198,10 +26238,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -28220,29 +26257,26 @@ ] }, { - "id": "PrimitiveArrayArgumentToVariableArgMethod", + "id": "UnnecessaryUnicodeEscape", "shortDescription": { - "text": "Confusing primitive array argument to varargs method" + "text": "Unnecessary unicode escape sequence" }, "fullDescription": { - "text": "Reports any calls to a variable arity method where the call has a primitive array in the variable arity parameter position (for example, 'System.out.printf(\"%s\", new int[]{1, 2, 3})'). Such a primitive-array argument may be confusing, as it will be wrapped as a single-element array, rather than each individual element being boxed, as might be expected. Example: 'String.format(\"%s\", new int[]{1, 2, 3});' After the quick-fix is applied: 'String.format(\"%s\", (Object) new int[]{1, 2, 3});'", - "markdown": "Reports any calls to a variable arity method where the call has a primitive array in the variable arity parameter position (for example, `System.out.printf(\"%s\", new int[]{1, 2, 3})`). Such a primitive-array argument may be confusing, as it will be wrapped as a single-element array, rather than each individual element being boxed, as might be expected.\n\n**Example:**\n\n\n String.format(\"%s\", new int[]{1, 2, 3});\n\nAfter the quick-fix is applied:\n\n\n String.format(\"%s\", (Object) new int[]{1, 2, 3});\n" + "text": "Reports unnecessary unicode escape sequences. For example, when the file encoding can handle the character without escaping it. Unicode control characters are not reported by this inspection (except for a line feed and a tab). Example: 'String s = \"\\u0062\";'", + "markdown": "Reports unnecessary unicode escape sequences. For example, when the file encoding can handle the character without escaping it. Unicode control characters are not reported by this inspection (except for a line feed and a tab).\n\n**Example:**\n\n String s = \"\\u0062\";\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Internationalization", + "index": 6, "toolComponent": { "name": "QDJVM" } @@ -28266,17 +26300,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -28288,28 +26319,25 @@ ] }, { - "id": "BigDecimalEquals", + "id": "AccessToNonThreadSafeStaticFieldFromInstance", "shortDescription": { - "text": "'equals()' called on 'BigDecimal'" + "text": "Non-thread-safe 'static' field access" }, "fullDescription": { - "text": "Reports '.equals()' being called to compare two 'java.math.BigDecimal' numbers. This is normally a mistake, as two 'java.math.BigDecimal' numbers are only equal if they are equal in both value and scale. Example: 'if (new BigDecimal(\"2.0\").equals(new BigDecimal(\"2.00\"))) {}' After the quick-fix is applied: 'if (new BigDecimal(\"2.0\").compareTo(new BigDecimal(\"2.00\")) == 0) {}'", - "markdown": "Reports `.equals()` being called to compare two `java.math.BigDecimal` numbers.\n\nThis is normally a mistake, as two `java.math.BigDecimal` numbers are only equal if\nthey are equal in both value and scale.\n\n**Example:**\n\n if (new BigDecimal(\"2.0\").equals(new BigDecimal(\"2.00\"))) {}\n\nAfter the quick-fix is applied:\n\n if (new BigDecimal(\"2.0\").compareTo(new BigDecimal(\"2.00\")) == 0) {}\n" + "text": "Reports access to 'static' fields that are of a non-thread-safe type. When a 'static' field is accessed from an instance method or a non-synchronized block, multiple threads can access that field. This can lead to unspecified side effects, like exceptions and incorrect results. Example: 'class Sample {\n private static final SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");\n String method() {\n return df.format(\"\");\n }\n }' You can specify which types should be considered not thread-safe. Only fields with these exact types or initialized with these exact types are reported, because there may exist thread-safe subclasses of these types.", + "markdown": "Reports access to `static` fields that are of a non-thread-safe type.\n\n\nWhen a `static` field is accessed from an instance method or a non-synchronized block,\nmultiple threads can access that field.\nThis can lead to unspecified side effects, like exceptions and incorrect results.\n\n**Example:**\n\n\n class Sample {\n private static final SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");\n String method() {\n return df.format(\"\");\n }\n }\n\n\nYou can specify which types should be considered not thread-safe.\nOnly fields with these exact types or initialized with these exact types are reported,\nbecause there may exist thread-safe subclasses of these types." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Numeric issues", + "id": "Java/Threading issues", "index": 26, "toolComponent": { "name": "QDJVM" @@ -28322,29 +26350,26 @@ ] }, { - "id": "AccessToNonThreadSafeStaticFieldFromInstance", + "id": "BigDecimalEquals", "shortDescription": { - "text": "Non-thread-safe 'static' field access" + "text": "'equals()' called on 'BigDecimal'" }, "fullDescription": { - "text": "Reports access to 'static' fields that are of a non-thread-safe type. When a 'static' field is accessed from an instance method or a non-synchronized block, multiple threads can access that field. This can lead to unspecified side effects, like exceptions and incorrect results. Example: 'class Sample {\n private static final SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");\n String method() {\n return df.format(\"\");\n }\n }' You can specify which types should be considered not thread-safe. Only fields with these exact types or initialized with these exact types are reported, because there may exist thread-safe subclasses of these types.", - "markdown": "Reports access to `static` fields that are of a non-thread-safe type.\n\n\nWhen a `static` field is accessed from an instance method or a non-synchronized block,\nmultiple threads can access that field.\nThis can lead to unspecified side effects, like exceptions and incorrect results.\n\n**Example:**\n\n\n class Sample {\n private static final SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");\n String method() {\n return df.format(\"\");\n }\n }\n\n\nYou can specify which types should be considered not thread-safe.\nOnly fields with these exact types or initialized with these exact types are reported,\nbecause there may exist thread-safe subclasses of these types." + "text": "Reports 'equals()' calls that compare two 'java.math.BigDecimal' numbers. This is normally a mistake, as two 'java.math.BigDecimal' numbers are only equal if they are equal in both value and scale. Example: 'if (new BigDecimal(\"2.0\").equals(\n new BigDecimal(\"2.00\"))) {} // false' After the quick-fix is applied: 'if (new BigDecimal(\"2.0\").compareTo(\n new BigDecimal(\"2.00\")) == 0) {} // true'", + "markdown": "Reports `equals()` calls that compare two `java.math.BigDecimal` numbers. This is normally a mistake, as two `java.math.BigDecimal` numbers are only equal if they are equal in both value and scale.\n\n**Example:**\n\n\n if (new BigDecimal(\"2.0\").equals(\n new BigDecimal(\"2.00\"))) {} // false\n\nAfter the quick-fix is applied:\n\n\n if (new BigDecimal(\"2.0\").compareTo(\n new BigDecimal(\"2.00\")) == 0) {} // true\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Threading issues", - "index": 25, + "id": "Java/Numeric issues", + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -28368,17 +26393,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -28402,17 +26424,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -28436,10 +26455,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -28470,10 +26486,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -28504,10 +26517,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -28538,17 +26548,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -28572,17 +26579,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -28606,10 +26610,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -28640,17 +26641,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -28674,17 +26672,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -28708,17 +26703,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Packaging issues", - "index": 36, + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -28742,10 +26734,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -28776,17 +26765,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -28810,17 +26796,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -28844,17 +26827,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -28878,17 +26858,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -28912,17 +26889,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -28946,17 +26920,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -28980,17 +26951,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues/Cast", - "index": 103, + "index": 113, "toolComponent": { "name": "QDJVM" } @@ -29014,17 +26982,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -29036,29 +27001,26 @@ ] }, { - "id": "ThrowablePrintStackTrace", + "id": "StringBufferMustHaveInitialCapacity", "shortDescription": { - "text": "Call to 'printStackTrace()'" + "text": "'StringBuilder' without initial capacity" }, "fullDescription": { - "text": "Reports calls to 'Throwable.printStackTrace()' without arguments. Such statements are often used for temporary debugging and should be either removed from the production code or replaced with a more robust logging facility.", - "markdown": "Reports calls to `Throwable.printStackTrace()` without arguments.\n\nSuch statements are often used for temporary debugging and should be either removed from the production code\nor replaced with a more robust logging facility." + "text": "Reports attempts to instantiate a new 'StringBuffer' or 'StringBuilder' object without specifying its initial capacity. If no initial capacity is specified, a default capacity is used, which will rarely be optimal. Failing to specify the initial capacity for 'StringBuffer' may result in performance issues if space needs to be reallocated and memory copied when the initial capacity is exceeded. Example: '// Capacity is not specified\n var sb = new StringBuilder();'", + "markdown": "Reports attempts to instantiate a new `StringBuffer` or `StringBuilder` object without specifying its initial capacity.\n\n\nIf no initial capacity is specified, a default capacity is used, which will rarely be optimal.\nFailing to specify the initial capacity for `StringBuffer` may result\nin performance issues if space needs to be reallocated and memory copied\nwhen the initial capacity is exceeded.\n\nExample:\n\n\n // Capacity is not specified\n var sb = new StringBuilder();\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code maturity", - "index": 41, + "id": "Java/Performance", + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -29070,29 +27032,26 @@ ] }, { - "id": "StringBufferMustHaveInitialCapacity", + "id": "ThrowablePrintStackTrace", "shortDescription": { - "text": "'StringBuilder' without initial capacity" + "text": "Call to 'printStackTrace()'" }, "fullDescription": { - "text": "Reports attempts to instantiate a new 'StringBuffer' or 'StringBuilder' object without specifying its initial capacity. If no initial capacity is specified, a default capacity is used, which will rarely be optimal. Failing to specify the initial capacity for 'StringBuffer' may result in performance issues if space needs to be reallocated and memory copied when the initial capacity is exceeded. Example: '// Capacity is not specified\n var sb = new StringBuilder();'", - "markdown": "Reports attempts to instantiate a new `StringBuffer` or `StringBuilder` object without specifying its initial capacity.\n\n\nIf no initial capacity is specified, a default capacity is used, which will rarely be optimal.\nFailing to specify the initial capacity for `StringBuffer` may result\nin performance issues if space needs to be reallocated and memory copied\nwhen the initial capacity is exceeded.\n\nExample:\n\n\n // Capacity is not specified\n var sb = new StringBuilder();\n" + "text": "Reports calls to 'Throwable.printStackTrace()' without arguments. Such statements are often used for temporary debugging and should be either removed from the production code or replaced with a more robust logging facility.", + "markdown": "Reports calls to `Throwable.printStackTrace()` without arguments.\n\nSuch statements are often used for temporary debugging and should be either removed from the production code\nor replaced with a more robust logging facility." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Performance", - "index": 10, + "id": "Java/Code maturity", + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -29116,17 +27075,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -29150,17 +27106,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -29177,24 +27130,21 @@ "text": "Simplifiable 'Map' operations" }, "fullDescription": { - "text": "Reports common usage patterns of 'java.util.Map' and suggests replacing them with: 'getOrDefault()', 'computeIfAbsent()', 'putIfAbsent()', 'merge()', or 'replaceAll()'. Example: 'map.containsKey(key) ? map.get(key) : \"default\";' After the quick-fix is applied: 'map.getOrDefault(key, \"default\");' Example: 'List<String> list = map.get(key);\n if (list == null) {\n list = new ArrayList<>();\n map.put(key, list);\n }' After the quick-fix is applied: 'map.computeIfAbsent(key, localKey -> new ArrayList<>());' Example: 'Integer val = map.get(key);\n if (val == null) map.put(key, 1);\n else map.put(key, val + 1);' After the quick-fix is applied: 'map.merge(key, 1, (localKey, localValue) -> localValue + 1);' Example: 'for (Map.Entry<String, String> entry : map.entrySet()) {\n map.put(entry.getKey(), transform(entry.getValue()));\n }' After the quick-fix is applied: 'map.replaceAll((localKey, localValue) -> transform(localValue));' Note that the replacement with 'computeIfAbsent()' or 'merge()' might work incorrectly for some 'Map' implementations if the code extracted to the lambda expression modifies the same 'Map'. By default, the warning doesn't appear if this code might have side effects. If necessary, enable the Suggest replacement even if lambda may have side effects option to always show the warning. Also, due to different handling of the 'null' value in old methods like 'put()' and newer methods like 'computeIfAbsent()' or 'merge()', semantics might change if storing the 'null' value into given 'Map' is important. The inspection won't suggest the replacement when the value is statically known to be nullable, but for values with unknown nullability the replacement is still suggested. In these cases, we recommended suppressing the warning and adding an explanatory comment. This inspection works only if the language level of the project or module is 8 or higher.", - "markdown": "Reports common usage patterns of `java.util.Map` and suggests replacing them with: `getOrDefault()`, `computeIfAbsent()`, `putIfAbsent()`, `merge()`, or `replaceAll()`.\n\nExample:\n\n\n map.containsKey(key) ? map.get(key) : \"default\";\n\nAfter the quick-fix is applied:\n\n\n map.getOrDefault(key, \"default\");\n\nExample:\n\n\n List<String> list = map.get(key);\n if (list == null) {\n list = new ArrayList<>();\n map.put(key, list);\n }\n\nAfter the quick-fix is applied:\n\n\n map.computeIfAbsent(key, localKey -> new ArrayList<>());\n\nExample:\n\n\n Integer val = map.get(key);\n if (val == null) map.put(key, 1);\n else map.put(key, val + 1);\n\nAfter the quick-fix is applied:\n\n\n map.merge(key, 1, (localKey, localValue) -> localValue + 1);\n\nExample:\n\n\n for (Map.Entry<String, String> entry : map.entrySet()) {\n map.put(entry.getKey(), transform(entry.getValue()));\n }\n\nAfter the quick-fix is applied:\n\n\n map.replaceAll((localKey, localValue) -> transform(localValue));\n\nNote that the replacement with `computeIfAbsent()` or `merge()` might work incorrectly for some `Map`\nimplementations if the code extracted to the lambda expression modifies the same `Map`. By default,\nthe warning doesn't appear if this code might have side effects. If necessary, enable the\n**Suggest replacement even if lambda may have side effects** option to always show the warning.\n\nAlso, due to different handling of the `null` value in old methods like `put()` and newer methods like\n`computeIfAbsent()` or `merge()`, semantics might change if storing the `null` value into given\n`Map` is important. The inspection won't suggest the replacement when the value is statically known to be nullable,\nbut for values with unknown nullability the replacement is still suggested. In these cases, we recommended suppressing the warning\nand adding an explanatory comment.\n\nThis inspection works only if the language level of the project or module is 8 or higher." + "text": "Reports common usage patterns of 'java.util.Map' and suggests replacing them with: 'getOrDefault()', 'computeIfAbsent()', 'putIfAbsent()', 'merge()', or 'replaceAll()'. Example: 'map.containsKey(key) ? map.get(key) : \"default\";' After the quick-fix is applied: 'map.getOrDefault(key, \"default\");' Example: 'List<String> list = map.get(key);\n if (list == null) {\n list = new ArrayList<>();\n map.put(key, list);\n }' After the quick-fix is applied: 'map.computeIfAbsent(key, localKey -> new ArrayList<>());' Example: 'Integer val = map.get(key);\n if (val == null) map.put(key, 1);\n else map.put(key, val + 1);' After the quick-fix is applied: 'map.merge(key, 1, (localKey, localValue) -> localValue + 1);' Example: 'for (Map.Entry<String, String> entry : map.entrySet()) {\n map.put(entry.getKey(), transform(entry.getValue()));\n }' After the quick-fix is applied: 'map.replaceAll((localKey, localValue) -> transform(localValue));' Note that the replacement with 'computeIfAbsent()' or 'merge()' might work incorrectly for some 'Map' implementations if the code extracted to the lambda expression modifies the same 'Map'. By default, the warning doesn't appear if this code might have side effects. If necessary, enable the Suggest replacement even if lambda may have side effects option to always show the warning. Also, due to different handling of the 'null' value in old methods like 'put()' and newer methods like 'computeIfAbsent()' or 'merge()', semantics might change if storing the 'null' value into given 'Map' is important. The inspection won't suggest the replacement when the value is statically known to be nullable, but for values with unknown nullability the replacement is still suggested. In these cases, we recommended suppressing the warning and adding an explanatory comment. This inspection reports only if the language level of the project or module is 8 or higher.", + "markdown": "Reports common usage patterns of `java.util.Map` and suggests replacing them with: `getOrDefault()`, `computeIfAbsent()`, `putIfAbsent()`, `merge()`, or `replaceAll()`.\n\nExample:\n\n\n map.containsKey(key) ? map.get(key) : \"default\";\n\nAfter the quick-fix is applied:\n\n\n map.getOrDefault(key, \"default\");\n\nExample:\n\n\n List<String> list = map.get(key);\n if (list == null) {\n list = new ArrayList<>();\n map.put(key, list);\n }\n\nAfter the quick-fix is applied:\n\n\n map.computeIfAbsent(key, localKey -> new ArrayList<>());\n\nExample:\n\n\n Integer val = map.get(key);\n if (val == null) map.put(key, 1);\n else map.put(key, val + 1);\n\nAfter the quick-fix is applied:\n\n\n map.merge(key, 1, (localKey, localValue) -> localValue + 1);\n\nExample:\n\n\n for (Map.Entry<String, String> entry : map.entrySet()) {\n map.put(entry.getKey(), transform(entry.getValue()));\n }\n\nAfter the quick-fix is applied:\n\n\n map.replaceAll((localKey, localValue) -> transform(localValue));\n\nNote that the replacement with `computeIfAbsent()` or `merge()` might work incorrectly for some `Map`\nimplementations if the code extracted to the lambda expression modifies the same `Map`. By default,\nthe warning doesn't appear if this code might have side effects. If necessary, enable the\n**Suggest replacement even if lambda may have side effects** option to always show the warning.\n\nAlso, due to different handling of the `null` value in old methods like `put()` and newer methods like\n`computeIfAbsent()` or `merge()`, semantics might change if storing the `null` value into given\n`Map` is important. The inspection won't suggest the replacement when the value is statically known to be nullable,\nbut for values with unknown nullability the replacement is still suggested. In these cases, we recommended suppressing the warning\nand adding an explanatory comment.\n\nThis inspection reports only if the language level of the project or module is 8 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 8", - "index": 92, + "index": 100, "toolComponent": { "name": "QDJVM" } @@ -29218,17 +27168,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JVM languages/Test frameworks", - "index": 141, + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -29252,10 +27199,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29286,10 +27230,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -29320,17 +27261,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/JUnit", - "index": 47, + "index": 74, "toolComponent": { "name": "QDJVM" } @@ -29354,10 +27292,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29388,10 +27323,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29422,10 +27354,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29456,17 +27385,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -29490,17 +27416,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -29524,17 +27447,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -29558,17 +27478,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Method metrics", - "index": 100, + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -29592,17 +27509,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -29626,10 +27540,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29660,10 +27571,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29694,10 +27602,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29728,10 +27633,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29762,17 +27664,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -29796,10 +27695,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29830,10 +27726,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -29864,17 +27757,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -29898,17 +27788,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -29932,17 +27819,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -29966,17 +27850,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Packaging issues", - "index": 36, + "index": 39, "toolComponent": { "name": "QDJVM" } @@ -29990,7 +27871,7 @@ { "id": "FloatingPointEquality", "shortDescription": { - "text": "Floating point equality comparison" + "text": "Floating-point equality comparison" }, "fullDescription": { "text": "Reports floating-point values that are being compared using the '==' or '!=' operator. Floating-point values are inherently inaccurate, and comparing them for exact equality is seldom the desired semantics. This inspection ignores comparisons with zero and infinity literals. Example: 'void m(double d1, double d2) {\n if (d1 == d2) {}\n }'", @@ -30000,17 +27881,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -30034,17 +27912,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -30068,17 +27943,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance", - "index": 10, + "index": 7, "toolComponent": { "name": "QDJVM" } @@ -30102,17 +27974,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -30136,17 +28005,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Error handling", - "index": 14, + "index": 12, "toolComponent": { "name": "QDJVM" } @@ -30158,29 +28024,26 @@ ] }, { - "id": "NewObjectEquality", + "id": "JNDIResource", "shortDescription": { - "text": "New object is compared using '=='" + "text": "JNDI resource opened but not safely closed" }, "fullDescription": { - "text": "Reports code that applies '==' or '!=' to a newly allocated object instead of calling 'equals()'. The references to newly allocated objects cannot point at existing objects, thus the comparison will always evaluate to 'false'. The inspection may also report newly created objects returned from simple methods. Example: 'void test(Object obj) {\n if (new Object() == obj) {...}\n }' After the quick-fix is applied: 'void test(Object obj) {\n if (new Object().equals(obj)) {...}\n }' New in 2018.3", - "markdown": "Reports code that applies `==` or `!=` to a newly allocated object instead of calling `equals()`.\n\n\nThe references to newly allocated objects cannot point at existing objects,\nthus the comparison will always evaluate to `false`. The inspection may also report newly\ncreated objects returned from simple methods.\n\n**Example:**\n\n\n void test(Object obj) {\n if (new Object() == obj) {...}\n }\n\nAfter the quick-fix is applied:\n\n\n void test(Object obj) {\n if (new Object().equals(obj)) {...}\n }\n\n\nNew in 2018.3" + "text": "Reports JNDI resources that are not safely closed. JNDI resources reported by this inspection include 'javax.naming.InitialContext', and 'javax.naming.NamingEnumeration'. By default, the inspection assumes that the resources can be closed by any method with 'close' or 'cleanup' in its name. Example: 'Object findObject(Properties properties, String name) throws NamingException {\n Context context = new InitialContext(properties); //context is not closed\n return context.lookup(name);\n }' Use the following options to configure the inspection: Whether a JNDI Resource is allowed to be opened inside a 'try' block. This style is less desirable because it is more verbose than opening a resource in front of a 'try' block. Whether the resource can be closed by any method call with the resource passed as argument.", + "markdown": "Reports JNDI resources that are not safely closed. JNDI resources reported by this inspection include `javax.naming.InitialContext`, and `javax.naming.NamingEnumeration`.\n\n\nBy default, the inspection assumes that the resources can be closed by any method with\n'close' or 'cleanup' in its name.\n\n**Example:**\n\n\n Object findObject(Properties properties, String name) throws NamingException {\n Context context = new InitialContext(properties); //context is not closed\n return context.lookup(name);\n }\n\n\nUse the following options to configure the inspection:\n\n* Whether a JNDI Resource is allowed to be opened inside a `try` block. This style is less desirable because it is more verbose than opening a resource in front of a `try` block.\n* Whether the resource can be closed by any method call with the resource passed as argument." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Resource management", + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -30192,29 +28055,26 @@ ] }, { - "id": "JNDIResource", + "id": "NewObjectEquality", "shortDescription": { - "text": "JNDI resource opened but not safely closed" + "text": "New object is compared using '=='" }, "fullDescription": { - "text": "Reports JNDI resources that are not safely closed. JNDI resources reported by this inspection include 'javax.naming.InitialContext', and 'javax.naming.NamingEnumeration'. By default, the inspection assumes that the resources can be closed by any method with 'close' or 'cleanup' in its name. Example: 'Object findObject(Properties properties, String name) throws NamingException {\n Context context = new InitialContext(properties); //context is not closed\n return context.lookup(name);\n }' Use the following options to configure the inspection: Whether a JNDI Resource is allowed to be opened inside a 'try' block. This style is less desirable because it is more verbose than opening a resource in front of a 'try' block. Whether the resource can be closed by any method call with the resource passed as argument.", - "markdown": "Reports JNDI resources that are not safely closed. JNDI resources reported by this inspection include `javax.naming.InitialContext`, and `javax.naming.NamingEnumeration`.\n\n\nBy default, the inspection assumes that the resources can be closed by any method with\n'close' or 'cleanup' in its name.\n\n**Example:**\n\n\n Object findObject(Properties properties, String name) throws NamingException {\n Context context = new InitialContext(properties); //context is not closed\n return context.lookup(name);\n }\n\n\nUse the following options to configure the inspection:\n\n* Whether a JNDI Resource is allowed to be opened inside a `try` block. This style is less desirable because it is more verbose than opening a resource in front of a `try` block.\n* Whether the resource can be closed by any method call with the resource passed as argument." + "text": "Reports code that applies '==' or '!=' to a newly allocated object instead of calling 'equals()'. The references to newly allocated objects cannot point at existing objects, thus the comparison will always evaluate to 'false'. The inspection may also report newly created objects returned from simple methods. Example: 'void test(Object obj) {\n if (new Object() == obj) {...}\n }' After the quick-fix is applied: 'void test(Object obj) {\n if (new Object().equals(obj)) {...}\n }' New in 2018.3", + "markdown": "Reports code that applies `==` or `!=` to a newly allocated object instead of calling `equals()`.\n\n\nThe references to newly allocated objects cannot point at existing objects,\nthus the comparison will always evaluate to `false`. The inspection may also report newly\ncreated objects returned from simple methods.\n\n**Example:**\n\n\n void test(Object obj) {\n if (new Object() == obj) {...}\n }\n\nAfter the quick-fix is applied:\n\n\n void test(Object obj) {\n if (new Object().equals(obj)) {...}\n }\n\n\nNew in 2018.3" }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Resource management", - "index": 101, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -30238,17 +28098,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 7", - "index": 121, + "index": 130, "toolComponent": { "name": "QDJVM" } @@ -30260,29 +28117,26 @@ ] }, { - "id": "RedundantCompareCall", + "id": "LambdaCanBeReplacedWithAnonymous", "shortDescription": { - "text": "Redundant 'compare()' method call" + "text": "Lambda can be replaced with anonymous class" }, "fullDescription": { - "text": "Reports comparisons in which the 'compare' method is superfluous. Example: 'boolean result = Integer.compare(a, b) == 0;' After the quick-fix is applied: 'boolean result = a == b;' New in 2018.2", - "markdown": "Reports comparisons in which the `compare` method is superfluous.\n\nExample:\n\n\n boolean result = Integer.compare(a, b) == 0;\n\nAfter the quick-fix is applied:\n\n\n boolean result = a == b;\n\nNew in 2018.2" + "text": "Reports lambda expressions that can be replaced with anonymous classes. Expanding lambda expressions to anonymous classes may be useful if you need to implement other methods inside an anonymous class. Example: 's -> System.out.println(s)' After the quick-fix is applied: 'new Consumer<String>() {\n @Override\n public void accept(String s) {\n System.out.println(s);\n }\n}' Lambda expression appeared in Java 8. This inspection can help to downgrade for backward compatibility with earlier Java versions.", + "markdown": "Reports lambda expressions that can be replaced with anonymous classes.\n\n\nExpanding lambda expressions to anonymous classes may be useful if you need to implement other\nmethods inside an anonymous class.\n\nExample:\n\n\n s -> System.out.println(s)\n\nAfter the quick-fix is applied:\n\n new Consumer<String>() {\n @Override\n public void accept(String s) {\n System.out.println(s);\n }\n }\n\n\n*Lambda expression* appeared in Java 8.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions." }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { - "id": "Java/Verbose or redundant code constructs", - "index": 37, + "id": "Java/Code style issues", + "index": 11, "toolComponent": { "name": "QDJVM" } @@ -30294,29 +28148,26 @@ ] }, { - "id": "LambdaCanBeReplacedWithAnonymous", + "id": "RedundantCompareCall", "shortDescription": { - "text": "Lambda can be replaced with anonymous class" + "text": "Redundant 'compare()' method call" }, "fullDescription": { - "text": "Reports lambda expressions that can be replaced with anonymous classes. Expanding lambda expressions to anonymous classes may be useful if you need to implement other methods inside an anonymous class. Example: 's -> System.out.println(s)' After the quick-fix is applied: 'new Consumer<String>() {\n @Override\n public void accept(String s) {\n System.out.println(s);\n }\n}' Lambda expression appeared in Java 8. This inspection can help to downgrade for backward compatibility with earlier Java versions.", - "markdown": "Reports lambda expressions that can be replaced with anonymous classes.\n\n\nExpanding lambda expressions to anonymous classes may be useful if you need to implement other\nmethods inside an anonymous class.\n\nExample:\n\n\n s -> System.out.println(s)\n\nAfter the quick-fix is applied:\n\n new Consumer<String>() {\n @Override\n public void accept(String s) {\n System.out.println(s);\n }\n }\n\n\n*Lambda expression* appeared in Java 8.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions." + "text": "Reports comparisons in which the 'compare' method is superfluous. Example: 'boolean result = Integer.compare(a, b) == 0;' After the quick-fix is applied: 'boolean result = a == b;' New in 2018.2", + "markdown": "Reports comparisons in which the `compare` method is superfluous.\n\nExample:\n\n\n boolean result = Integer.compare(a, b) == 0;\n\nAfter the quick-fix is applied:\n\n\n boolean result = a == b;\n\nNew in 2018.2" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code style issues", - "index": 11, + "id": "Java/Verbose or redundant code constructs", + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -30328,29 +28179,26 @@ ] }, { - "id": "TextBlockBackwardMigration", + "id": "EmptyClass", "shortDescription": { - "text": "Text block can be replaced with regular string literal" + "text": "Redundant empty class" }, "fullDescription": { - "text": "Reports text blocks that can be replaced with regular string literals. Example: 'Object obj = engine.eval(\"\"\"\n function hello() {\n print('\"Hello, world\"');\n }\n\n hello();\n \"\"\");' After the quick fix is applied: 'Object obj = engine.eval(\"function hello() {\\n\" +\n \" print('\\\"Hello, world\\\"');\\n\" +\n \"}\\n\" +\n \"\\n\" +\n \"hello();\\n\");' Text block appeared in Java 15. This inspection can help to downgrade for backward compatibility with earlier Java versions. New in 2019.3", - "markdown": "Reports text blocks that can be replaced with regular string literals.\n\n**Example:**\n\n\n Object obj = engine.eval(\"\"\"\n function hello() {\n print('\"Hello, world\"');\n }\n\n hello();\n \"\"\");\n\nAfter the quick fix is applied:\n\n\n Object obj = engine.eval(\"function hello() {\\n\" +\n \" print('\\\"Hello, world\\\"');\\n\" +\n \"}\\n\" +\n \"\\n\" +\n \"hello();\\n\");\n\n\n*Text block* appeared in Java 15.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nNew in 2019.3" + "text": "Reports empty classes and Java files without any defined classes. A class is empty if it doesn't contain any fields, methods, constructors, or initializers. Empty classes often remain after significant changes or refactorings. Configure the inspection: Use the Ignore if annotated by option to specify special annotations. The inspection will ignore the classes marked with these annotations. Use the Ignore class if it is a parametrization of a super type option to ignore classes that parameterize a superclass. For example: 'class MyList extends ArrayList<String> {}' Use the Ignore subclasses of java.lang.Throwable to ignore classes that extend 'java.lang.Throwable'. Use the Comments count as content option to ignore classes that contain comments.", + "markdown": "Reports empty classes and Java files without any defined classes.\n\nA class is empty if it\ndoesn't contain any fields, methods, constructors, or initializers. Empty classes often remain\nafter significant changes or refactorings.\n\nConfigure the inspection:\n\n* Use the **Ignore if annotated by** option to specify special annotations. The inspection will ignore the classes marked with these annotations.\n*\n Use the **Ignore class if it is a parametrization of a super type** option to ignore classes that parameterize a superclass. For example:\n\n class MyList extends ArrayList<String> {}\n\n* Use the **Ignore subclasses of java.lang.Throwable** to ignore classes that extend `java.lang.Throwable`.\n* Use the **Comments count as content** option to ignore classes that contain comments." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 15", - "index": 34, + "id": "Java/Class structure", + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -30362,29 +28210,26 @@ ] }, { - "id": "EmptyClass", + "id": "TextBlockBackwardMigration", "shortDescription": { - "text": "Redundant empty class" + "text": "Text block can be replaced with regular string literal" }, "fullDescription": { - "text": "Reports empty classes and Java files without any defined classes. A class is empty if it doesn't contain any fields, methods, constructors, or initializers. Empty classes often remain after significant changes or refactorings. Configure the inspection: Use the Ignore if annotated by option to specify special annotations. The inspection will ignore the classes marked with these annotations. Use the Ignore class if it is a parametrization of a super type option to ignore classes that parameterize a superclass. For example: 'class MyList extends ArrayList<String> {}' Use the Ignore subclasses of java.lang.Throwable to ignore classes that extend 'java.lang.Throwable'. Use the Comments count as content option to ignore classes that contain comments.", - "markdown": "Reports empty classes and Java files without any defined classes.\n\nA class is empty if it\ndoesn't contain any fields, methods, constructors, or initializers. Empty classes often remain\nafter significant changes or refactorings.\n\nConfigure the inspection:\n\n* Use the **Ignore if annotated by** option to specify special annotations. The inspection will ignore the classes marked with these annotations.\n*\n Use the **Ignore class if it is a parametrization of a super type** option to ignore classes that parameterize a superclass. For example:\n\n class MyList extends ArrayList<String> {}\n\n* Use the **Ignore subclasses of java.lang.Throwable** to ignore classes that extend `java.lang.Throwable`.\n* Use the **Comments count as content** option to ignore classes that contain comments." + "text": "Reports text blocks that can be replaced with regular string literals. Example: 'Object obj = engine.eval(\"\"\"\n function hello() {\n print('\"Hello, world\"');\n }\n\n hello();\n \"\"\");' After the quick fix is applied: 'Object obj = engine.eval(\"function hello() {\\n\" +\n \" print('\\\"Hello, world\\\"');\\n\" +\n \"}\\n\" +\n \"\\n\" +\n \"hello();\\n\");' Text block appeared in Java 15. This inspection can help to downgrade for backward compatibility with earlier Java versions. New in 2019.3", + "markdown": "Reports text blocks that can be replaced with regular string literals.\n\n**Example:**\n\n\n Object obj = engine.eval(\"\"\"\n function hello() {\n print('\"Hello, world\"');\n }\n\n hello();\n \"\"\");\n\nAfter the quick fix is applied:\n\n\n Object obj = engine.eval(\"function hello() {\\n\" +\n \" print('\\\"Hello, world\\\"');\\n\" +\n \"}\\n\" +\n \"\\n\" +\n \"hello();\\n\");\n\n\n*Text block* appeared in Java 15.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nNew in 2019.3" }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { - "id": "Java/Class structure", - "index": 17, + "id": "Java/Java language level migration aids/Java 15", + "index": 108, "toolComponent": { "name": "QDJVM" } @@ -30402,16 +28247,13 @@ }, "fullDescription": { "text": "Reports null-check conditions and suggests replacing them with 'Optional' chains. Example: 'return str == null ? \"\" : str.trim();' After applying the quick-fix: 'return Optional.ofNullable(str).map(String::trim).orElse(\"\");' While the replacement is not always shorter, it could be helpful for further refactoring (for example, for changing the method return value to 'Optional'). Note that when a not-null branch of the condition returns null, the corresponding mapping step will produce an empty 'Optional' possibly changing the semantics. If it cannot be statically proven that semantics will be preserved, the quick-fix action name will contain the \"(may change semantics)\" notice, and the inspection highlighting will be turned off. This inspection only reports if the language level of the project or module is 8 or higher. New in 2018.1", - "markdown": "Reports null-check conditions and suggests replacing them with `Optional` chains.\n\nExample:\n\n\n return str == null ? \"\" : str.trim();\n\nAfter applying the quick-fix:\n\n return Optional.ofNullable(str).map(String::trim).orElse(\"\");\n\nWhile the replacement is not always shorter, it could be helpful for further refactoring\n(for example, for changing the method return value to `Optional`).\n\nNote that when a not-null branch of the condition returns null, the corresponding mapping step will\nproduce an empty `Optional` possibly changing the semantics. If it cannot be statically\nproven that semantics will be preserved, the quick-fix action name will contain the \"(may change semantics)\"\nnotice, and the inspection highlighting will be turned off.\n\nThis inspection only reports if the language level of the project or module is 8 or higher.\n\nNew in 2018.1" + "markdown": "Reports null-check conditions and suggests replacing them with `Optional` chains.\n\nExample:\n\n\n return str == null ? \"\" : str.trim();\n\nAfter applying the quick-fix:\n\n\n return Optional.ofNullable(str).map(String::trim).orElse(\"\");\n\nWhile the replacement is not always shorter, it could be helpful for further refactoring\n(for example, for changing the method return value to `Optional`).\n\nNote that when a not-null branch of the condition returns null, the corresponding mapping step will\nproduce an empty `Optional` possibly changing the semantics. If it cannot be statically\nproven that semantics will be preserved, the quick-fix action name will contain the \"(may change semantics)\"\nnotice, and the inspection highlighting will be turned off.\n\nThis inspection only reports if the language level of the project or module is 8 or higher.\n\nNew in 2018.1" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -30442,17 +28284,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Assignment issues", - "index": 63, + "index": 70, "toolComponent": { "name": "QDJVM" } @@ -30476,17 +28315,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Portability", - "index": 71, + "index": 79, "toolComponent": { "name": "QDJVM" } @@ -30510,10 +28346,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -30544,17 +28377,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -30578,17 +28408,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -30612,17 +28439,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -30646,10 +28470,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -30680,17 +28501,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -30714,17 +28532,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -30748,17 +28563,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Visibility", - "index": 75, + "index": 83, "toolComponent": { "name": "QDJVM" } @@ -30782,17 +28594,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Inheritance issues", - "index": 113, + "index": 123, "toolComponent": { "name": "QDJVM" } @@ -30809,24 +28618,83 @@ "text": "Redundant usage of unmodifiable collection wrappers" }, "fullDescription": { - "text": "Reports redundant calls to unmodifiable collection wrappers within the 'Collections' class. If the argument that is passed to an unmodifiable collection wrapper is already immutable, such a wrapping becomes redundant. Example: 'Collections.unmodifiableList(Collections.singletonList(\"abc\"));' In order to detect the methods that return unmodifiable collections, the inspection uses the 'org.jetbrains.annotations.Unmodifiable' and 'org.jetbrains.annotations.UnmodifiableView' annotations. Use them to extend the inspection to your own unmodifiable collection wrappers. New in 2020.3", - "markdown": "Reports redundant calls to unmodifiable collection wrappers within the `Collections` class.\n\nIf the argument that is passed to an unmodifiable\ncollection wrapper is already immutable, such a wrapping becomes redundant.\n\nExample:\n\n\n Collections.unmodifiableList(Collections.singletonList(\"abc\"));\n\nIn order to detect the methods that return unmodifiable collections, the\ninspection uses the `org.jetbrains.annotations.Unmodifiable`\nand `org.jetbrains.annotations.UnmodifiableView` annotations.\nUse them to extend the inspection to your own unmodifiable collection\nwrappers.\n\nNew in 2020.3" + "text": "Reports redundant calls to unmodifiable collection wrappers from the 'Collections' class. If the argument that is passed to an unmodifiable collection wrapper is already immutable, such a wrapping becomes redundant. Example: 'List<String> x = Collections.unmodifiableList(Collections.singletonList(\"abc\"));' After the quick-fix is applied: 'List<String> x = Collections.singletonList(\"abc\");' In order to detect the methods that return unmodifiable collections, the inspection uses the 'org.jetbrains.annotations.Unmodifiable' and 'org.jetbrains.annotations.UnmodifiableView' annotations. Use them to extend the inspection to your own unmodifiable collection wrappers. New in 2020.3", + "markdown": "Reports redundant calls to unmodifiable collection wrappers from the `Collections` class.\n\nIf the argument that is passed to an unmodifiable\ncollection wrapper is already immutable, such a wrapping becomes redundant.\n\nExample:\n\n\n List<String> x = Collections.unmodifiableList(Collections.singletonList(\"abc\"));\n\nAfter the quick-fix is applied:\n\n\n List<String> x = Collections.singletonList(\"abc\");\n\nIn order to detect the methods that return unmodifiable collections, the\ninspection uses the `org.jetbrains.annotations.Unmodifiable`\nand `org.jetbrains.annotations.UnmodifiableView` annotations.\nUse them to extend the inspection to your own unmodifiable collection\nwrappers.\n\nNew in 2020.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Verbose or redundant code constructs", + "index": 40, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ConstantValue", + "shortDescription": { + "text": "Constant values" + }, + "fullDescription": { + "text": "Reports expressions and conditions that always produce the same result, like true, false, null, or zero. Such expressions could be replaced with the corresponding constant value. Very often though they signal about a bug in the code. Examples: '// always true\n // root cause: || is used instead of &&\n if (x > 0 || x < 10) {}\n\n System.out.println(str.trim());\n // always false\n // root cause: variable was dereferenced before null-check\n if (str == null) {}' The inspection behavior may be controlled by a number of annotations, such as nullability annotations, '@Contract' annotation, '@Range' annotation and so on. Configure the inspection: Use the Don't report assertions with condition statically proven to be always true option to avoid reporting assertions that were statically proven to be always true. This also includes conditions like 'if (alwaysFalseCondition) throw new IllegalArgumentException();'. Use the Ignore assert statements option to control how the inspection treats 'assert' statements. By default, the option is disabled, which means that the assertions are assumed to be executed (-ea mode). If the option is enabled, the assertions will be completely ignored (-da mode). Use the Warn when constant is stored in variable option to display warnings when variable is used, whose value is known to be a constant. Before IntelliJ IDEA 2022.3, this inspection was part of \"Constant Conditions & Exceptions\" inspection. Now, it split into two inspections: \"Constant Values\" and \"Nullability and data flow problems\".", + "markdown": "Reports expressions and conditions that always produce the same result, like true, false, null, or zero. Such expressions could be replaced with the corresponding constant value. Very often though they signal about a bug in the code.\n\nExamples:\n\n // always true\n // root cause: || is used instead of &&\n if (x > 0 || x < 10) {}\n\n System.out.println(str.trim());\n // always false\n // root cause: variable was dereferenced before null-check\n if (str == null) {}\n\n\nThe inspection behavior may be controlled by a number of annotations, such as\n[nullability](https://www.jetbrains.com/help/idea/nullable-and-notnull-annotations.html) annotations,\n[@Contract](https://www.jetbrains.com/help/idea/contract-annotations.html) annotation,\n`@Range` annotation and so on.\n\nConfigure the inspection:\n\n* Use the **Don't report assertions with condition statically proven to be always true** option to avoid reporting assertions that were statically proven to be always true. This also includes conditions like `if (alwaysFalseCondition) throw new IllegalArgumentException();`.\n* Use the **Ignore assert statements** option to control how the inspection treats `assert` statements. By default, the option is disabled, which means that the assertions are assumed to be executed (-ea mode). If the option is enabled, the assertions will be completely ignored (-da mode).\n* Use the **Warn when constant is stored in variable** option to display warnings when variable is used, whose value is known to be a constant.\n\n\nBefore IntelliJ IDEA 2022.3, this inspection was part of \"Constant Conditions \\& Exceptions\" inspection. Now, it split into two inspections:\n\"Constant Values\" and \"Nullability and data flow problems\"." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Java/Probable bugs", + "index": 16, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" ] } + ] + }, + { + "id": "CastCanBeReplacedWithVariable", + "shortDescription": { + "text": "Cast can be replaced with variable" + }, + "fullDescription": { + "text": "Reports type cast operations that can be replaced with existing local or pattern variables with the same value. Example: 'void foo(Object obj) {\n String s = (String) obj;\n System.out.println(((String) obj).trim());\n }' After the quick-fix is applied: 'void foo(Object obj) {\n String s = (String) obj;\n System.out.println(s.trim());\n }' New in 2022.3", + "markdown": "Reports type cast operations that can be replaced with existing local or pattern variables with the same value.\n\nExample:\n\n\n void foo(Object obj) {\n String s = (String) obj;\n System.out.println(((String) obj).trim());\n }\n\nAfter the quick-fix is applied:\n\n\n void foo(Object obj) {\n String s = (String) obj;\n System.out.println(s.trim());\n }\n\nNew in 2022.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION" + } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -30843,24 +28711,21 @@ "text": "Explicit type can be replaced with '<>'" }, "fullDescription": { - "text": "Reports all 'new' expressions with type arguments that can be replaced a with diamond type '<>'. Example: 'List<String> list = new ArrayList<String>(); // reports array list type argument' After the quick-fix is applied: 'List<String> list = new ArrayList<>();' This inspection only reports if the language level of the project or module is 7 or higher.", - "markdown": "Reports all `new` expressions with type arguments that can be replaced a with diamond type `<>`.\n\nExample:\n\n\n List<String> list = new ArrayList<String>(); // reports array list type argument\n\nAfter the quick-fix is applied:\n\n\n List<String> list = new ArrayList<>();\n\nThis inspection only reports if the language level of the project or module is 7 or higher." + "text": "Reports 'new' expressions with type arguments that can be replaced a with diamond type '<>'. Example: 'List<String> list = new ArrayList<String>(); // reports array list type argument' After the quick-fix is applied: 'List<String> list = new ArrayList<>();' This inspection only reports if the language level of the project or module is 7 or higher.", + "markdown": "Reports `new` expressions with type arguments that can be replaced a with diamond type `<>`.\n\nExample:\n\n\n List<String> list = new ArrayList<String>(); // reports array list type argument\n\nAfter the quick-fix is applied:\n\n\n List<String> list = new ArrayList<>();\n\nThis inspection only reports if the language level of the project or module is 7 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 7", - "index": 121, + "index": 130, "toolComponent": { "name": "QDJVM" } @@ -30884,17 +28749,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level issues", - "index": 109, + "index": 119, "toolComponent": { "name": "QDJVM" } @@ -30918,17 +28780,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -30952,17 +28811,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Performance/Embedded", - "index": 129, + "index": 140, "toolComponent": { "name": "QDJVM" } @@ -30986,17 +28842,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/JavaBeans issues", - "index": 105, + "index": 115, "toolComponent": { "name": "QDJVM" } @@ -31020,17 +28873,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Javadoc", - "index": 54, + "index": 61, "toolComponent": { "name": "QDJVM" } @@ -31042,29 +28892,26 @@ ] }, { - "id": "CloneReturnsClassType", + "id": "NonSerializableWithSerializationMethods", "shortDescription": { - "text": "'clone()' should have return type equal to the class it contains" + "text": "Non-serializable class with 'readObject()' or 'writeObject()'" }, "fullDescription": { - "text": "Reports 'clone()' methods with return types different from the class they're located in. Often a 'clone()' method will have a return type of 'java.lang.Object', which makes it harder to use by its clients. Effective Java (the second and third editions) recommends making the return type of the 'clone()' method the same as the class type of the object it returns. Example: 'class Foo implements Cloneable {\n public Object clone() {\n try {\n return super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }' After the quick-fix is applied: 'class Foo implements Cloneable {\n public Foo clone() {\n try {\n return (Foo)super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }'", - "markdown": "Reports `clone()` methods with return types different from the class they're located in.\n\nOften a `clone()` method will have a return type of `java.lang.Object`, which makes it harder to use by its clients.\n*Effective Java* (the second and third editions) recommends making the return type of the `clone()` method the same as the\nclass type of the object it returns.\n\n**Example:**\n\n\n class Foo implements Cloneable {\n public Object clone() {\n try {\n return super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo implements Cloneable {\n public Foo clone() {\n try {\n return (Foo)super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }\n" + "text": "Reports non-'Serializable' classes that define 'readObject()' or 'writeObject()' methods. Such methods in that context normally indicate an error. Example: 'public class SampleClass {\n private void readObject(ObjectInputStream str) {}\n private void writeObject(ObjectOutputStream str) {}\n }'", + "markdown": "Reports non-`Serializable` classes that define `readObject()` or `writeObject()` methods. Such methods in that context normally indicate an error.\n\n**Example:**\n\n\n public class SampleClass {\n private void readObject(ObjectInputStream str) {}\n private void writeObject(ObjectOutputStream str) {}\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Cloning issues", - "index": 86, + "id": "Java/Serialization issues", + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -31076,29 +28923,26 @@ ] }, { - "id": "NonSerializableWithSerializationMethods", + "id": "CloneReturnsClassType", "shortDescription": { - "text": "Non-serializable class with 'readObject()' or 'writeObject()'" + "text": "'clone()' should have return type equal to the class it contains" }, "fullDescription": { - "text": "Reports non-'Serializable' classes that define 'readObject()' or 'writeObject()' methods. Such methods in that context normally indicate an error. Example: 'public class SampleClass {\n private void readObject(ObjectInputStream str) {}\n private void writeObject(ObjectOutputStream str) {}\n }'", - "markdown": "Reports non-`Serializable` classes that define `readObject()` or `writeObject()` methods. Such methods in that context normally indicate an error.\n\n**Example:**\n\n\n public class SampleClass {\n private void readObject(ObjectInputStream str) {}\n private void writeObject(ObjectOutputStream str) {}\n }\n" + "text": "Reports 'clone()' methods with return types different from the class they're located in. Often a 'clone()' method will have a return type of 'java.lang.Object', which makes it harder to use by its clients. Effective Java (the second and third editions) recommends making the return type of the 'clone()' method the same as the class type of the object it returns. Example: 'class Foo implements Cloneable {\n public Object clone() {\n try {\n return super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }' After the quick-fix is applied: 'class Foo implements Cloneable {\n public Foo clone() {\n try {\n return (Foo)super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }'", + "markdown": "Reports `clone()` methods with return types different from the class they're located in.\n\nOften a `clone()` method will have a return type of `java.lang.Object`, which makes it harder to use by its clients.\n*Effective Java* (the second and third editions) recommends making the return type of the `clone()` method the same as the\nclass type of the object it returns.\n\n**Example:**\n\n\n class Foo implements Cloneable {\n public Object clone() {\n try {\n return super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo implements Cloneable {\n public Foo clone() {\n try {\n return (Foo)super.clone();\n } catch (CloneNotSupportedException e) {\n throw new AssertionError();\n }\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Serialization issues", - "index": 18, + "id": "Java/Cloning issues", + "index": 94, "toolComponent": { "name": "QDJVM" } @@ -31122,10 +28966,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -31156,10 +28997,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -31190,17 +29028,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -31224,17 +29059,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Numeric issues", - "index": 26, + "index": 28, "toolComponent": { "name": "QDJVM" } @@ -31258,17 +29090,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Resource management", - "index": 101, + "index": 111, "toolComponent": { "name": "QDJVM" } @@ -31292,17 +29121,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -31326,10 +29152,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31360,17 +29183,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -31394,17 +29214,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -31428,17 +29245,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Encapsulation", - "index": 96, + "index": 104, "toolComponent": { "name": "QDJVM" } @@ -31455,24 +29269,21 @@ "text": "Unnecessary unboxing" }, "fullDescription": { - "text": "Reports unboxing, that is explicit unwrapping of wrapped primitive values. Unboxing is unnecessary as for Java 5 and later, and can safely be removed. Examples: 'Integer i = Integer.valueOf(42).intValue();' → 'Integer i = Integer.valueOf(42);' 'int k = Integer.valueOf(42).intValue();' → 'int k = Integer.valueOf(42);' (reports only when the Only report truly superfluously unboxed expressions option is not checked) Use the Only report truly superfluously unboxed expressions option to only report truly superfluous unboxing, where an unboxed value is immediately boxed either implicitly or explicitly. In this case, the entire unboxing-boxing step can be removed. The inspection doesn't report simple explicit unboxing. This inspection only reports if the language level of the project or module is 5 or higher.", - "markdown": "Reports unboxing, that is explicit unwrapping of wrapped primitive values.\n\nUnboxing is unnecessary as for Java 5 and later, and can safely be removed.\n\n**Examples:**\n\n* `Integer i = Integer.valueOf(42).intValue();` → `Integer i = Integer.valueOf(42);`\n* `int k = Integer.valueOf(42).intValue();` → `int k = Integer.valueOf(42);`\n\n (reports only when the **Only report truly superfluously unboxed expressions** option is not checked)\n\n\nUse the **Only report truly superfluously unboxed expressions** option to only report truly superfluous unboxing,\nwhere an unboxed value is immediately boxed either implicitly or explicitly.\nIn this case, the entire unboxing-boxing step can be removed. The inspection doesn't report simple explicit unboxing.\n\nThis inspection only reports if the language level of the project or module is 5 or higher." + "text": "Reports unboxing, that is explicit unwrapping of wrapped primitive values. Unboxing is unnecessary as of Java 5 and later, and can safely be removed. Examples: 'Integer i = Integer.valueOf(42).intValue();' → 'Integer i = Integer.valueOf(42);' 'int k = Integer.valueOf(42).intValue();' → 'int k = Integer.valueOf(42);' (reports only when the Only report truly superfluously unboxed expressions option is not checked) Use the Only report truly superfluously unboxed expressions option to only report truly superfluous unboxing, where an unboxed value is immediately boxed either implicitly or explicitly. In this case, the entire unboxing-boxing step can be removed. The inspection doesn't report simple explicit unboxing. This inspection only reports if the language level of the project or module is 5 or higher.", + "markdown": "Reports unboxing, that is explicit unwrapping of wrapped primitive values.\n\nUnboxing is unnecessary as of Java 5 and later, and can safely be removed.\n\n**Examples:**\n\n* `Integer i = Integer.valueOf(42).intValue();` → `Integer i = Integer.valueOf(42);`\n* `int k = Integer.valueOf(42).intValue();` → `int k = Integer.valueOf(42);`\n\n (reports only when the **Only report truly superfluously unboxed expressions** option is not checked)\n\n\nUse the **Only report truly superfluously unboxed expressions** option to only report truly superfluous unboxing,\nwhere an unboxed value is immediately boxed either implicitly or explicitly.\nIn this case, the entire unboxing-boxing step can be removed. The inspection doesn't report simple explicit unboxing.\n\nThis inspection only reports if the language level of the project or module is 5 or higher." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 5", - "index": 91, + "index": 99, "toolComponent": { "name": "QDJVM" } @@ -31496,17 +29307,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Code maturity", - "index": 41, + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -31530,10 +29338,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31564,10 +29369,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31598,10 +29400,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31632,17 +29431,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Java language level migration aids/Java 11", - "index": 140, + "index": 146, "toolComponent": { "name": "QDJVM" } @@ -31666,17 +29462,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -31700,10 +29493,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31734,10 +29524,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31768,10 +29555,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31802,17 +29586,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/toString() issues", - "index": 158, + "index": 164, "toolComponent": { "name": "QDJVM" } @@ -31836,17 +29617,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Concurrency annotation issues", - "index": 76, + "index": 84, "toolComponent": { "name": "QDJVM" } @@ -31870,17 +29648,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Security", - "index": 31, + "index": 32, "toolComponent": { "name": "QDJVM" } @@ -31904,17 +29679,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Abstraction issues", - "index": 62, + "index": 69, "toolComponent": { "name": "QDJVM" } @@ -31938,10 +29710,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -31960,29 +29729,26 @@ ] }, { - "id": "MethodWithMultipleLoops", + "id": "NegativelyNamedBooleanVariable", "shortDescription": { - "text": "Method with multiple loops" + "text": "Negatively named boolean variable" }, "fullDescription": { - "text": "Reports methods that contain more than one loop statement. Example: The method below will be reported because it contains two loops: 'void methodWithTwoLoops(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n System.out.println(i);\n }\n\n int j = 0;\n while (j < n2) {\n System.out.println(j);\n j++;\n }\n }' The following method will also be reported because it contains a nested loop: 'void methodWithNestedLoop(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n for (int j = 0; j < n2; j++) {\n System.out.println(i + j);\n }\n }\n }'", - "markdown": "Reports methods that contain more than one loop statement.\n\n**Example:**\n\nThe method below will be reported because it contains two loops:\n\n\n void methodWithTwoLoops(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n System.out.println(i);\n }\n\n int j = 0;\n while (j < n2) {\n System.out.println(j);\n j++;\n }\n }\n\nThe following method will also be reported because it contains a nested loop:\n\n\n void methodWithNestedLoop(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n for (int j = 0; j < n2; j++) {\n System.out.println(i + j);\n }\n }\n }\n" + "text": "Reports negatively named variables, for example: 'disabled', 'hidden', or 'isNotChanged'. Usually, inverting the 'boolean' value and removing the negation from the name makes the code easier to understand. Example: 'boolean disabled = false;'", + "markdown": "Reports negatively named variables, for example: `disabled`, `hidden`, or `isNotChanged`.\n\nUsually, inverting the `boolean` value and removing the negation from the name makes the code easier to understand.\n\nExample:\n\n\n boolean disabled = false;\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Method metrics", - "index": 100, + "id": "Java/Data flow", + "index": 52, "toolComponent": { "name": "QDJVM" } @@ -32006,10 +29772,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -32028,29 +29791,26 @@ ] }, { - "id": "NegativelyNamedBooleanVariable", + "id": "MethodWithMultipleLoops", "shortDescription": { - "text": "Negatively named boolean variable" + "text": "Method with multiple loops" }, "fullDescription": { - "text": "Reports negatively named variables, for example: 'disabled', 'hidden', or 'isNotChanged'. Usually, inverting the 'boolean' value and removing the negation from the name makes the code easier to understand. Example: 'boolean disabled = false;'", - "markdown": "Reports negatively named variables, for example: `disabled`, `hidden`, or `isNotChanged`.\n\nUsually, inverting the `boolean` value and removing the negation from the name makes the code easier to understand.\n\nExample:\n\n\n boolean disabled = false;\n" + "text": "Reports methods that contain more than one loop statement. Example: The method below will be reported because it contains two loops: 'void methodWithTwoLoops(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n System.out.println(i);\n }\n\n int j = 0;\n while (j < n2) {\n System.out.println(j);\n j++;\n }\n }' The following method will also be reported because it contains a nested loop: 'void methodWithNestedLoop(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n for (int j = 0; j < n2; j++) {\n System.out.println(i + j);\n }\n }\n }'", + "markdown": "Reports methods that contain more than one loop statement.\n\n**Example:**\n\nThe method below will be reported because it contains two loops:\n\n\n void methodWithTwoLoops(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n System.out.println(i);\n }\n\n int j = 0;\n while (j < n2) {\n System.out.println(j);\n j++;\n }\n }\n\nThe following method will also be reported because it contains a nested loop:\n\n\n void methodWithNestedLoop(int n1, int n2) {\n for (int i = 0; i < n1; i++) {\n for (int j = 0; j < n2; j++) {\n System.out.println(i + j);\n }\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Data flow", - "index": 44, + "id": "Java/Method metrics", + "index": 110, "toolComponent": { "name": "QDJVM" } @@ -32074,17 +29834,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Threading issues", - "index": 25, + "index": 26, "toolComponent": { "name": "QDJVM" } @@ -32108,17 +29865,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -32142,17 +29896,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -32169,24 +29920,21 @@ "text": "Duplicate branches in 'switch'" }, "fullDescription": { - "text": "Reports 'switch' statements or expressions that contain the same code in different branches and suggests merging the duplicate branches. Example: 'switch (n) {\n case 1:\n System.out.println(n);\n break;\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }' Can be replaced with: 'switch (n) {\n case 1:\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }' New in 2019.1", - "markdown": "Reports `switch` statements or expressions that contain the same code in different branches and suggests merging the duplicate branches.\n\nExample:\n\n\n switch (n) {\n case 1:\n System.out.println(n);\n break;\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }\n\nCan be replaced with:\n\n\n switch (n) {\n case 1:\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }\n\nNew in 2019.1" + "text": "Reports 'switch' statements or expressions that contain the same code in different branches and suggests merging the duplicate branches. Example: 'switch (n) {\n case 1:\n System.out.println(n);\n break;\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }' After the quick-fix is applied: 'switch (n) {\n case 1:\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }' New in 2019.1", + "markdown": "Reports `switch` statements or expressions that contain the same code in different branches and suggests merging the duplicate branches.\n\nExample:\n\n\n switch (n) {\n case 1:\n System.out.println(n);\n break;\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }\n\nAfter the quick-fix is applied:\n\n\n switch (n) {\n case 1:\n case 2:\n System.out.println(n);\n break;\n default:\n System.out.println(\"default\");\n }\n\nNew in 2019.1" }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -32210,10 +29958,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -32244,17 +29989,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Verbose or redundant code constructs", - "index": 37, + "index": 40, "toolComponent": { "name": "QDJVM" } @@ -32278,17 +30020,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Declaration redundancy", - "index": 12, + "index": 13, "toolComponent": { "name": "QDJVM" } @@ -32312,10 +30051,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -32346,17 +30082,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/JUnit", - "index": 47, + "id": "JVM languages/Test frameworks", + "index": 105, "toolComponent": { "name": "QDJVM" } @@ -32380,17 +30113,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Initialization", - "index": 29, + "index": 30, "toolComponent": { "name": "QDJVM" } @@ -32414,10 +30144,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -32448,17 +30175,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Serialization issues", - "index": 18, + "index": 19, "toolComponent": { "name": "QDJVM" } @@ -32470,29 +30194,26 @@ ] }, { - "id": "NullArgumentToVariableArgMethod", + "id": "UseOfObsoleteDateTimeApi", "shortDescription": { - "text": "Confusing argument to varargs method" + "text": "Use of obsolete date-time API" }, "fullDescription": { - "text": "Reports calls to variable arity methods that have a single argument in the vararg parameter position, which is either a 'null' or an array of a subtype of the vararg parameter. Such an argument may be confusing as it is unclear if a varargs or non-varargs call is desired. Example: 'String[] ss = new String[]{\"foo\", \"bar\"};\n System.out.printf(\"%s\", ss);' In this example only the first element of the array will be printed, not the entire array.", - "markdown": "Reports calls to variable arity methods that have a single argument in the vararg parameter position, which is either a `null` or an array of a subtype of the vararg parameter. Such an argument may be confusing as it is unclear if a varargs or non-varargs call is desired.\n\n**Example:**\n\n\n String[] ss = new String[]{\"foo\", \"bar\"};\n System.out.printf(\"%s\", ss);\n\nIn this example only the first element of the array will be printed, not the entire array." + "text": "Reports usages of 'java.util.Date', 'java.util.Calendar', 'java.util.GregorianCalendar', 'java.util.TimeZone', and 'java.util.SimpleTimeZone'. While still supported, these classes were made obsolete by the JDK8 Date-Time API and should probably not be used in new development.", + "markdown": "Reports usages of `java.util.Date`, `java.util.Calendar`, `java.util.GregorianCalendar`, `java.util.TimeZone`, and `java.util.SimpleTimeZone`.\n\nWhile still supported, these classes were made obsolete by the JDK8 Date-Time API and should probably\nnot be used in new development." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Probable bugs", - "index": 16, + "id": "Java/Code maturity", + "index": 47, "toolComponent": { "name": "QDJVM" } @@ -32516,17 +30237,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Modularization issues", - "index": 53, + "index": 60, "toolComponent": { "name": "QDJVM" } @@ -32538,29 +30256,26 @@ ] }, { - "id": "UseOfObsoleteDateTimeApi", + "id": "NullArgumentToVariableArgMethod", "shortDescription": { - "text": "Use of obsolete date-time API" + "text": "Confusing argument to varargs method" }, "fullDescription": { - "text": "Reports usages of 'java.util.Date', 'java.util.Calendar', 'java.util.GregorianCalendar', 'java.util.TimeZone', and 'java.util.SimpleTimeZone'. While still supported, these classes were made obsolete by the JDK8 Date-Time API and should probably not be used in new development.", - "markdown": "Reports usages of `java.util.Date`, `java.util.Calendar`, `java.util.GregorianCalendar`, `java.util.TimeZone`, and `java.util.SimpleTimeZone`.\n\nWhile still supported, these classes were made obsolete by the JDK8 Date-Time API and should probably\nnot be used in new development." + "text": "Reports calls to variable arity methods that have a single argument in the vararg parameter position, which is either a 'null' or an array of a subtype of the vararg parameter. Such an argument may be confusing as it is unclear if a varargs or non-varargs call is desired. Example: 'String[] ss = new String[]{\"foo\", \"bar\"};\n System.out.printf(\"%s\", ss);' In this example only the first element of the array will be printed, not the entire array.", + "markdown": "Reports calls to variable arity methods that have a single argument in the vararg parameter position, which is either a `null` or an array of a subtype of the vararg parameter. Such an argument may be confusing as it is unclear if a varargs or non-varargs call is desired.\n\n**Example:**\n\n\n String[] ss = new String[]{\"foo\", \"bar\"};\n System.out.printf(\"%s\", ss);\n\nIn this example only the first element of the array will be printed, not the entire array." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Code maturity", - "index": 41, + "id": "Java/Probable bugs", + "index": 16, "toolComponent": { "name": "QDJVM" } @@ -32584,17 +30299,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Naming conventions/Method", - "index": 82, + "index": 90, "toolComponent": { "name": "QDJVM" } @@ -32611,24 +30323,21 @@ "text": "Anonymous class may be a named 'static' inner class" }, "fullDescription": { - "text": "Reports anonymous classes that may be safely replaced with 'static' inner classes. An anonymous class may be a 'static' inner class if it doesn't explicitly reference its enclosing instance or local classes from its surrounding method. A 'static' inner class does not keep an implicit reference to its enclosing instance. This prevents a common cause of memory leaks and uses less memory per class instance. The quick-fix extracts the anonymous class into a named 'static' inner class. Example: 'void sample() {\n Thread thread = new Thread(new Runnable() {\n @Override\n public void run() {\n }\n });\n }' After the quick-fix is applied: 'void sample() {\n Thread thread = new Thread(new Task());\n }\n\n private static class Task implements Runnable {\n @Override\n public void run() {\n }\n }'", - "markdown": "Reports anonymous classes that may be safely replaced with `static` inner classes. An anonymous class may be a `static` inner class if it doesn't explicitly reference its enclosing instance or local classes from its surrounding method.\n\n\nA `static` inner class does not keep an implicit reference to its enclosing instance.\nThis prevents a common cause of memory leaks and uses less memory per class instance.\n\nThe quick-fix extracts the anonymous class into a named `static` inner class.\n\n**Example:**\n\n\n void sample() {\n Thread thread = new Thread(new Runnable() {\n @Override\n public void run() {\n }\n });\n }\n\nAfter the quick-fix is applied:\n\n\n void sample() {\n Thread thread = new Thread(new Task());\n }\n\n private static class Task implements Runnable {\n @Override\n public void run() {\n }\n }\n" + "text": "Reports anonymous classes that may be safely replaced with 'static' inner classes. An anonymous class may be a 'static' inner class if it doesn't explicitly reference its enclosing instance or local classes from its surrounding method. A 'static' inner class does not keep an implicit reference to its enclosing instance. This prevents a common cause of memory leaks and uses less memory per class instance. Since Java 18, only serializable anonymous classes keep an implicit reference to its enclosing instance, if this reference is not used. So, if module language level is Java 18 or higher, this inspection reports serializable classes only. The quick-fix extracts the anonymous class into a named 'static' inner class. Example: 'void sample() {\n Thread thread = new Thread(new Runnable() {\n @Override\n public void run() {\n }\n });\n }' After the quick-fix is applied: 'void sample() {\n Thread thread = new Thread(new Task());\n }\n\n private static class Task implements Runnable {\n @Override\n public void run() {\n }\n }'", + "markdown": "Reports anonymous classes that may be safely replaced with `static` inner classes. An anonymous class may be a `static` inner class if it doesn't explicitly reference its enclosing instance or local classes from its surrounding method.\n\n\nA `static` inner class does not keep an implicit reference to its enclosing instance.\nThis prevents a common cause of memory leaks and uses less memory per class instance.\n\n\nSince Java 18, only serializable anonymous classes keep an implicit reference to its enclosing instance,\nif this reference is not used. So, if module language level is Java 18 or higher,\nthis inspection reports serializable classes only.\n\nThe quick-fix extracts the anonymous class into a named `static` inner class.\n\n**Example:**\n\n\n void sample() {\n Thread thread = new Thread(new Runnable() {\n @Override\n public void run() {\n }\n });\n }\n\nAfter the quick-fix is applied:\n\n\n void sample() {\n Thread thread = new Thread(new Task());\n }\n\n private static class Task implements Runnable {\n @Override\n public void run() {\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Memory", - "index": 126, + "index": 135, "toolComponent": { "name": "QDJVM" } @@ -32652,17 +30361,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -32686,10 +30392,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -32720,17 +30423,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class structure", - "index": 17, + "index": 18, "toolComponent": { "name": "QDJVM" } @@ -32754,17 +30454,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Finalization", - "index": 51, + "index": 58, "toolComponent": { "name": "QDJVM" } @@ -32776,29 +30473,26 @@ ] }, { - "id": "ReplaceNullCheck", + "id": "StaticImport", "shortDescription": { - "text": "Null check can be replaced with method call" + "text": "Static import" }, "fullDescription": { - "text": "Reports null checks that can be replaced with an 'Objects'/'Stream' static method. Example: 'if (message == null) {\n application.messageStorage().save(new EmptyMessage());\n} else {\n application.messageStorage().save(message);\n}' After the quick-fix is applied: 'application.messageStorage()\n .save(Objects.requireNonNullElseGet(message, () -> new EmptyMessage()));' Use the Don't warn if length of replacement bigger than original option to ignore the cases when the replacement is longer than the original code. New in 2017.3", - "markdown": "Reports null checks that can be replaced with an `Objects`/`Stream` static method.\n\n**Example:**\n\n\n if (message == null) {\n application.messageStorage().save(new EmptyMessage());\n } else {\n application.messageStorage().save(message);\n }\n\nAfter the quick-fix is applied:\n\n\n application.messageStorage()\n .save(Objects.requireNonNullElseGet(message, () -> new EmptyMessage()));\n\n\nUse the **Don't warn if length of replacement bigger than original** option to ignore the cases when the replacement is longer than the\noriginal code.\n\nNew in 2017.3" + "text": "Reports 'import static' statements. Such 'import' statements are not supported under Java 1.4 or earlier JVMs. Configure the inspection: Use the table below to specify the classes that will be ignored by the inspection when used in an 'import static' statement. Use the Ignore single field static imports checkbox to ignore single-field 'import static' statements. Use the Ignore single method static imports checkbox to ignore single-method 'import static' statements.", + "markdown": "Reports `import static` statements.\n\nSuch `import` statements are not supported under Java 1.4 or earlier JVMs.\n\nConfigure the inspection:\n\n* Use the table below to specify the classes that will be ignored by the inspection when used in an `import static` statement.\n* Use the **Ignore single field static imports** checkbox to ignore single-field `import static` statements.\n* Use the **Ignore single method static imports** checkbox to ignore single-method `import static` statements." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Java language level migration aids/Java 9", - "index": 64, + "id": "Java/Imports", + "index": 22, "toolComponent": { "name": "QDJVM" } @@ -32810,29 +30504,26 @@ ] }, { - "id": "StaticImport", + "id": "ReplaceNullCheck", "shortDescription": { - "text": "Static import" + "text": "Null check can be replaced with method call" }, "fullDescription": { - "text": "Reports 'import static' statements. Such 'import' statements are not supported under Java 1.4 or earlier JVMs. Configure the inspection: Use the table below to specify the classes that will be ignored by the inspection when used in an 'import static' statement. Use the Ignore single field static imports checkbox to ignore single-field 'import static' statements. Use the Ignore single method static imports checkbox to ignore single-method 'import static' statements.", - "markdown": "Reports `import static` statements.\n\nSuch `import` statements are not supported under Java 1.4 or earlier JVMs.\n\nConfigure the inspection:\n\n* Use the table below to specify the classes that will be ignored by the inspection when used in an `import static` statement.\n* Use the **Ignore single field static imports** checkbox to ignore single-field `import static` statements.\n* Use the **Ignore single method static imports** checkbox to ignore single-method `import static` statements." + "text": "Reports 'null' checks that can be replaced with a call to a static method from 'Objects' or 'Stream'. Example: 'if (message == null) {\n application.messageStorage().save(new EmptyMessage());\n } else {\n application.messageStorage().save(message);\n }' After the quick-fix is applied: 'application.messageStorage()\n .save(Objects.requireNonNullElseGet(message, () -> new EmptyMessage()));' Use the Don't warn if the replacement is longer than the original option to ignore the cases when the replacement is longer than the original code. New in 2017.3", + "markdown": "Reports `null` checks that can be replaced with a call to a static method from `Objects` or `Stream`.\n\n**Example:**\n\n\n if (message == null) {\n application.messageStorage().save(new EmptyMessage());\n } else {\n application.messageStorage().save(message);\n }\n\nAfter the quick-fix is applied:\n\n\n application.messageStorage()\n .save(Objects.requireNonNullElseGet(message, () -> new EmptyMessage()));\n\n\nUse the **Don't warn if the replacement is longer than the original** option to ignore the cases when the replacement is longer than the\noriginal code.\n\nNew in 2017.3" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Java/Imports", - "index": 21, + "id": "Java/Java language level migration aids/Java 9", + "index": 71, "toolComponent": { "name": "QDJVM" } @@ -32856,10 +30547,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -32890,17 +30578,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Class metrics", - "index": 95, + "index": 102, "toolComponent": { "name": "QDJVM" } @@ -32921,7 +30606,7 @@ }, { "name": "org.jetbrains.kotlin", - "version": "222-1.7.10-release-334-IJ4502", + "version": "223-1.7.21-release-272-IJ8394", "rules": [ { "id": "RedundantRunCatching", @@ -32936,10 +30621,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -32970,10 +30652,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -33004,10 +30683,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -33038,10 +30714,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -33072,17 +30745,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -33106,10 +30776,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -33133,17 +30800,14 @@ "text": "Trailing comma recommendations" }, "fullDescription": { - "text": "Reports trailing commas that are not follow the recommended style guide.", - "markdown": "Reports trailing commas that are not follow the recommended [style guide](https://kotlinlang.org/docs/coding-conventions.html#trailing-commas)." + "text": "Reports trailing commas that do not follow the recommended style guide.", + "markdown": "Reports trailing commas that do not follow the recommended [style guide](https://kotlinlang.org/docs/coding-conventions.html#trailing-commas)." }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33174,10 +30838,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33196,6 +30857,37 @@ ] }, { + "id": "ReplaceWithStringBuilderAppendRange", + "shortDescription": { + "text": "'StringBuilder.append(CharArray, offset, len)' call on the JVM" + }, + "fullDescription": { + "text": "Reports a 'StringBuilder.append(CharArray, offset, len)' function call on the JVM platform that should be replaced with a 'StringBuilder.appendRange(CharArray, startIndex, endIndex)' function call. The 'append' function behaves differently on the JVM, JS and Native platforms, so using the 'appendRange' function is recommended. Example: 'fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n append(charArray, offset, len)\n }\n }' After the quick-fix is applied: 'fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n appendRange(charArray, offset, offset + len)\n }\n }'", + "markdown": "Reports a `StringBuilder.append(CharArray, offset, len)` function call on the JVM platform that should be replaced with a `StringBuilder.appendRange(CharArray, startIndex, endIndex)` function call.\n\nThe `append` function behaves differently on the JVM, JS and Native platforms, so using the `appendRange` function is recommended.\n\n**Example:**\n\n\n fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n append(charArray, offset, len)\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n appendRange(charArray, offset, offset + len)\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Other problems", + "index": 51, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "KotlinInvalidBundleOrProperty", "shortDescription": { "text": "Invalid property key" @@ -33208,10 +30900,7 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -33242,17 +30931,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -33276,10 +30962,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33310,17 +30993,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -33344,17 +31024,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -33378,17 +31055,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -33410,12 +31084,9 @@ }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33446,10 +31117,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -33480,10 +31148,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33502,40 +31167,6 @@ ] }, { - "id": "DirectUseOfResultType", - "shortDescription": { - "text": "Function returning Result directly" - }, - "fullDescription": { - "text": "Reports functions that use 'Result' as a return type. 'Result' should never be used as a return type. Throw an exception, use a nullable type, or use a domain-specific result class to indicate failure. Example: 'fun foo() = Result.success(true)'", - "markdown": "Reports functions that use `Result` as a return type.\n\n\n`Result` should never be used as a return type.\nThrow an exception, use a nullable type, or use a domain-specific result class to indicate failure.\n\n**Example:**\n\n\n fun foo() = Result.success(true)\n" - }, - "defaultConfiguration": { - "enabled": false, - "level": "note", - "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Kotlin/Style issues", - "index": 3, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { "id": "FakeJvmFieldConstant", "shortDescription": { "text": "Kotlin non-const property used as Java constant" @@ -33548,17 +31179,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -33582,10 +31210,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33616,10 +31241,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -33650,10 +31272,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33684,10 +31303,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33718,10 +31334,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33752,10 +31365,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33786,10 +31396,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -33820,10 +31427,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -33854,10 +31458,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33888,10 +31489,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -33922,10 +31520,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -33956,17 +31551,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -33990,10 +31582,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -34024,10 +31613,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -34058,10 +31644,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -34092,10 +31675,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -34126,10 +31706,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -34160,17 +31737,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -34194,10 +31768,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -34228,10 +31799,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -34250,29 +31818,26 @@ ] }, { - "id": "JoinDeclarationAndAssignment", + "id": "KotlinEqualsBetweenInconvertibleTypes", "shortDescription": { - "text": "Join declaration and assignment" + "text": "'equals()' between objects of inconvertible types" }, "fullDescription": { - "text": "Reports property declarations that can be joined with the following assignment. Example: 'val x: String\n x = System.getProperty(\"\")' The quick fix joins the declaration with the assignment: 'val x = System.getProperty(\"\")'", - "markdown": "Reports property declarations that can be joined with the following assignment.\n\n**Example:**\n\n\n val x: String\n x = System.getProperty(\"\")\n\nThe quick fix joins the declaration with the assignment:\n\n\n val x = System.getProperty(\"\")\n" + "text": "Reports calls to 'equals()' where the receiver and the argument are of incompatible primitive, enum, or string types. While such a call might theoretically be useful, most likely it represents a bug. Example: '5.equals(\"\");'", + "markdown": "Reports calls to `equals()` where the receiver and the argument are of incompatible primitive, enum, or string types.\n\nWhile such a call might theoretically be useful, most likely it represents a bug.\n\n**Example:**\n\n 5.equals(\"\");\n" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Style issues", - "index": 3, + "id": "Kotlin/Probable bugs", + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -34284,29 +31849,26 @@ ] }, { - "id": "KotlinEqualsBetweenInconvertibleTypes", + "id": "JoinDeclarationAndAssignment", "shortDescription": { - "text": "'equals()' between objects of inconvertible types" + "text": "Join declaration and assignment" }, "fullDescription": { - "text": "Reports calls to 'equals()' where the receiver and the argument are of incompatible primitive, enum, or string types. While such a call might theoretically be useful, most likely it represents a bug. Example: '5.equals(\"\");'", - "markdown": "Reports calls to `equals()` where the receiver and the argument are of incompatible primitive, enum, or string types.\n\nWhile such a call might theoretically be useful, most likely it represents a bug.\n\n**Example:**\n\n 5.equals(\"\");\n" + "text": "Reports property declarations that can be joined with the following assignment. Example: 'val x: String\n x = System.getProperty(\"\")' The quick fix joins the declaration with the assignment: 'val x = System.getProperty(\"\")'", + "markdown": "Reports property declarations that can be joined with the following assignment.\n\n**Example:**\n\n\n val x: String\n x = System.getProperty(\"\")\n\nThe quick fix joins the declaration with the assignment:\n\n\n val x = System.getProperty(\"\")\n" }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Probable bugs", - "index": 24, + "id": "Kotlin/Style issues", + "index": 3, "toolComponent": { "name": "QDJVM" } @@ -34330,17 +31892,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -34364,17 +31923,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -34398,10 +31954,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -34432,17 +31985,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -34466,17 +32016,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Kotlin/Migration/Maven", - "index": 117, + "index": 127, "toolComponent": { "name": "QDJVM" } @@ -34500,10 +32047,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -34522,29 +32066,26 @@ ] }, { - "id": "DeprecatedMavenDependency", + "id": "UnnecessaryVariable", "shortDescription": { - "text": "Deprecated library is used in Maven" + "text": "Unnecessary local variable" }, "fullDescription": { - "text": "Reports deprecated maven dependency. Example: '<dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jre7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>' The quick fix changes the deprecated dependency to a maintained one: '<dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jdk7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>'", - "markdown": "Reports deprecated maven dependency.\n\n**Example:**\n\n\n <dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jre7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>\n\nThe quick fix changes the deprecated dependency to a maintained one:\n\n\n <dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jdk7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>\n" + "text": "Reports local variables that used only in the very next 'return' statement or exact copies of other variables. Such variables can be safely inlined to make the code more clear.", + "markdown": "Reports local variables that used only in the very next `return` statement or exact copies of other variables.\n\nSuch variables can be safely inlined to make the code more clear." }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin", - "index": 2, + "id": "Kotlin/Redundant constructs", + "index": 4, "toolComponent": { "name": "QDJVM" } @@ -34556,29 +32097,26 @@ ] }, { - "id": "UnnecessaryVariable", + "id": "DeprecatedMavenDependency", "shortDescription": { - "text": "Unnecessary local variable" + "text": "Deprecated library is used in Maven" }, "fullDescription": { - "text": "Reports local variables that used only in the very next 'return' statement or exact copies of other variables. Such variables can be safely inlined to make the code more clear.", - "markdown": "Reports local variables that used only in the very next `return` statement or exact copies of other variables.\n\nSuch variables can be safely inlined to make the code more clear." + "text": "Reports deprecated maven dependency. Example: '<dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jre7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>' The quick fix changes the deprecated dependency to a maintained one: '<dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jdk7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>'", + "markdown": "Reports deprecated maven dependency.\n\n**Example:**\n\n\n <dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jre7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>\n\nThe quick fix changes the deprecated dependency to a maintained one:\n\n\n <dependencies>\n <dependency>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-stdlib-jdk7</artifactId>\n <version>${kotlin.version}</version>\n </dependency>\n </dependencies>\n" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Redundant constructs", - "index": 4, + "id": "Kotlin", + "index": 2, "toolComponent": { "name": "QDJVM" } @@ -34602,17 +32140,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Redundant constructs", - "index": 4, + "id": "Kotlin/Other problems", + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -34636,17 +32171,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Kotlin/Migration/Gradle", - "index": 125, + "index": 134, "toolComponent": { "name": "QDJVM" } @@ -34658,29 +32190,26 @@ ] }, { - "id": "RedundantWith", + "id": "WarningOnMainUnusedParameterMigration", "shortDescription": { - "text": "Redundant 'with' call" + "text": "Unused 'args' on 'main' since 1.4" }, "fullDescription": { - "text": "Reports redundant 'with' function calls that don't access anything from the receiver. Examples: 'class MyClass {\n fun f(): String = \"\"\n }\n\n fun testRedundant() {\n with(c) { // <== 'with' is redundant since 'c' isn't used\n println(\"1\")\n }\n }\n\n fun testOk() {\n val c = MyClass()\n with(c) { // <== OK because 'f()' is effectively 'c.f()'\n println(f())\n }\n }'", - "markdown": "Reports redundant `with` function calls that don't access anything from the receiver.\n\n**Examples:**\n\n\n class MyClass {\n fun f(): String = \"\"\n }\n\n fun testRedundant() {\n with(c) { // <== 'with' is redundant since 'c' isn't used\n println(\"1\")\n }\n }\n\n fun testOk() {\n val c = MyClass()\n with(c) { // <== OK because 'f()' is effectively 'c.f()'\n println(f())\n }\n }\n" + "text": "Reports 'main' function with an unused single parameter. Since Kotlin 1.4, it is possible to use the 'main' function without parameter as the entry point to the Kotlin program. The compiler reports a warning for the 'main' function with an unused parameter.", + "markdown": "Reports `main` function with an unused single parameter.\n\nSince Kotlin 1.4, it is possible to use the `main` function without parameter as the entry point to the Kotlin program.\nThe compiler reports a warning for the `main` function with an unused parameter." }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Redundant constructs", - "index": 4, + "id": "Kotlin/Migration", + "index": 15, "toolComponent": { "name": "QDJVM" } @@ -34692,29 +32221,26 @@ ] }, { - "id": "WarningOnMainUnusedParameterMigration", + "id": "RedundantWith", "shortDescription": { - "text": "Unused 'args' on 'main' since 1.4" + "text": "Redundant 'with' call" }, "fullDescription": { - "text": "Reports 'main' function with an unused single parameter. Since Kotlin 1.4, it is possible to use the 'main' function without parameter as the entry point to the Kotlin program. The compiler reports a warning for the 'main' function with an unused parameter.", - "markdown": "Reports `main` function with an unused single parameter.\n\nSince Kotlin 1.4, it is possible to use the `main` function without parameter as the entry point to the Kotlin program.\nThe compiler reports a warning for the `main` function with an unused parameter." + "text": "Reports redundant 'with' function calls that don't access anything from the receiver. Examples: 'class MyClass {\n fun f(): String = \"\"\n }\n\n fun testRedundant() {\n with(c) { // <== 'with' is redundant since 'c' isn't used\n println(\"1\")\n }\n }\n\n fun testOk() {\n val c = MyClass()\n with(c) { // <== OK because 'f()' is effectively 'c.f()'\n println(f())\n }\n }'", + "markdown": "Reports redundant `with` function calls that don't access anything from the receiver.\n\n**Examples:**\n\n\n class MyClass {\n fun f(): String = \"\"\n }\n\n fun testRedundant() {\n with(c) { // <== 'with' is redundant since 'c' isn't used\n println(\"1\")\n }\n }\n\n fun testOk() {\n val c = MyClass()\n with(c) { // <== OK because 'f()' is effectively 'c.f()'\n println(f())\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Migration", - "index": 15, + "id": "Kotlin/Redundant constructs", + "index": 4, "toolComponent": { "name": "QDJVM" } @@ -34738,10 +32264,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -34772,10 +32295,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -34806,10 +32326,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -34840,17 +32357,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -34874,10 +32388,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -34908,10 +32419,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -34942,17 +32450,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -34976,10 +32481,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -35010,10 +32512,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -35044,10 +32543,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -35078,17 +32574,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -35112,10 +32605,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -35146,10 +32636,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -35180,10 +32667,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35214,10 +32698,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -35248,10 +32729,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -35282,17 +32760,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -35316,10 +32791,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35350,10 +32822,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -35377,24 +32846,21 @@ "text": "Inconsistent comment for Java parameter" }, "fullDescription": { - "text": "Reports inconsistent parameter name for java method specified in a comment block. Examples: '// Java\n public class JavaService {\n public void invoke(String command) {}\n }' '// Kotlin\n fun main() {\n JavaService().invoke(/* name = */ \"fix\")\n }' The quick fix corrects parameter name in a comment block: 'fun main() {\n JavaService().invoke(/* command = */ \"fix\")\n }'", - "markdown": "Reports inconsistent parameter name for **java** method specified in a comment block.\n\n**Examples:**\n\n\n // Java\n public class JavaService {\n public void invoke(String command) {}\n }\n\n\n // Kotlin\n fun main() {\n JavaService().invoke(/* name = */ \"fix\")\n }\n\nThe quick fix corrects parameter name in a comment block:\n\n\n fun main() {\n JavaService().invoke(/* command = */ \"fix\")\n }\n" + "text": "Reports inconsistent parameter names for Java method calls specified in a comment block. Examples: '// Java\n public class JavaService {\n public void invoke(String command) {}\n }' '// Kotlin\n fun main() {\n JavaService().invoke(/* name = */ \"fix\")\n }' The quick fix corrects the parameter name in the comment block: 'fun main() {\n JavaService().invoke(/* command = */ \"fix\")\n }'", + "markdown": "Reports inconsistent parameter names for **Java** method calls specified in a comment block.\n\n**Examples:**\n\n\n // Java\n public class JavaService {\n public void invoke(String command) {}\n }\n\n\n // Kotlin\n fun main() {\n JavaService().invoke(/* name = */ \"fix\")\n }\n\nThe quick fix corrects the parameter name in the comment block:\n\n\n fun main() {\n JavaService().invoke(/* command = */ \"fix\")\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -35418,10 +32884,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -35452,17 +32915,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -35486,17 +32946,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -35520,10 +32977,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35554,10 +33008,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35588,17 +33039,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -35622,17 +33070,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -35656,10 +33101,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -35690,10 +33132,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35724,10 +33163,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35758,10 +33194,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35792,17 +33225,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -35826,10 +33256,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35860,17 +33287,45 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReplaceUntilWithRangeUntil", + "shortDescription": { + "text": "Replace 'until' with '..<' operator" + }, + "fullDescription": { + "text": "Reports 'until' that can be replaced with '..<' operator. Every 'until' to '..<' replacement doesn't change the semantic in any way. The UX research shows that developers make ~20-30% fewer errors when reading code containing '..<' compared to 'until'. Example: 'fun main(args: Array<String>) {\n for (index in 0 until args.size) {\n println(index)\n }\n }' After the quick-fix is applied: 'fun main(args: Array<String>) {\n for (index in 0..<args.size) {\n println(index)\n }\n }' This inspection only reports if the Kotlin language level of the project or module is 1.7 or higher, and '-opt-in=kotlin.ExperimentalStdlibApi'compiler flag is provided.", + "markdown": "Reports `until` that can be replaced with `..<` operator.\n\nEvery `until` to `..<` replacement doesn't change the semantic in any way.\n\nThe UX research shows that developers make \\~20-30% fewer errors when reading code containing `..<` compared to `until`.\n\n**Example:**\n\n\n fun main(args: Array<String>) {\n for (index in 0 until args.size) {\n println(index)\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun main(args: Array<String>) {\n for (index in 0..<args.size) {\n println(index)\n }\n }\n\nThis inspection only reports if the Kotlin language level of the project or module is 1.7 or higher, and\n`-opt-in=kotlin.ExperimentalStdlibApi`compiler flag is provided." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Style issues", + "index": 3, "toolComponent": { "name": "QDJVM" } @@ -35894,10 +33349,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -35928,10 +33380,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -35962,10 +33411,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -35996,10 +33442,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36030,10 +33473,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -36064,17 +33504,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -36098,17 +33535,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -36132,10 +33566,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -36166,17 +33597,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -36200,17 +33628,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -36234,17 +33659,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -36268,10 +33690,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -36302,10 +33721,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36336,10 +33752,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36370,17 +33783,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -36404,10 +33814,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -36438,10 +33845,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -36472,10 +33876,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36506,17 +33907,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -36540,10 +33938,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -36574,17 +33969,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -36608,10 +34000,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -36642,10 +34031,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36666,7 +34052,7 @@ { "id": "CanSealedSubClassBeObject", "shortDescription": { - "text": "Sealed sub-class without state and overridden equals" + "text": "Sealed subclass without state and overridden equals" }, "fullDescription": { "text": "Reports direct inheritors of 'sealed' classes that have no state and overridden 'equals()' method. It's highly recommended to override 'equals()' to provide comparison stability, or convert the 'class' to an 'object' to reach the same effect. Example: 'sealed class Receiver {\n class Everyone : Receiver()\n class User(val id: Int) : Receiver()\n }' A quick-fix converts a 'class' into an 'object': 'sealed class Receiver {\n object Everyone : Receiver()\n class User(val id: Int) : Receiver()\n }'", @@ -36676,17 +34062,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -36698,29 +34081,26 @@ ] }, { - "id": "InlineClassDeprecatedMigration", + "id": "PropertyName", "shortDescription": { - "text": "Inline classes are deprecated since 1.5" + "text": "Property naming convention" }, "fullDescription": { - "text": "Reports inline classes that are deprecated and cause compilation warnings in Kotlin 1.5 and later. See What's new in Kotlin 1.5.0 Example: 'inline class Password(val s: String)' After the quick-fix is applied: '@JvmInline\n value class Password(val s: String)' Inspection is available for Kotlin language level starting from 1.5.", - "markdown": "Reports inline classes that are deprecated and cause compilation warnings in Kotlin 1.5 and later.\nSee [What's new in Kotlin 1.5.0](https://kotlinlang.org/docs/whatsnew15.html#inline-classes)\n\nExample:\n\n\n inline class Password(val s: String)\n\nAfter the quick-fix is applied:\n\n\n @JvmInline\n value class Password(val s: String)\n\nInspection is available for Kotlin language level starting from 1.5." + "text": "Reports property names that do not follow the recommended naming conventions. Consistent naming allows for easier code reading and understanding. According to the Kotlin official style guide, property names should start with a lowercase letter and use camel case. It is possible to introduce other naming rules by changing the \"Pattern\" regular expression. Example: 'val My_Cool_Property = \"\"' A quick-fix renames the class according to the Kotlin naming conventions: 'val myCoolProperty = \"\"'", + "markdown": "Reports property names that do not follow the recommended naming conventions.\n\n\nConsistent naming allows for easier code reading and understanding.\nAccording to the [Kotlin official style guide](https://kotlinlang.org/docs/coding-conventions.html#naming-rules),\nproperty names should start with a lowercase letter and use camel case.\n\nIt is possible to introduce other naming rules by changing the \"Pattern\" regular expression.\n\n**Example:**\n\n\n val My_Cool_Property = \"\"\n\nA quick-fix renames the class according to the Kotlin naming conventions:\n\n\n val myCoolProperty = \"\"\n" }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Migration", - "index": 15, + "id": "Kotlin/Naming conventions", + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -36732,29 +34112,26 @@ ] }, { - "id": "PropertyName", + "id": "InlineClassDeprecatedMigration", "shortDescription": { - "text": "Property naming convention" + "text": "Inline classes are deprecated since 1.5" }, "fullDescription": { - "text": "Reports property names that do not follow the recommended naming conventions. Consistent naming allows for easier code reading and understanding. According to the Kotlin official style guide, property names should start with a lowercase letter and use camel case. It is possible to introduce other naming rules by changing the \"Pattern\" regular expression. Example: 'val My_Cool_Property = \"\"' A quick-fix renames the class according to the Kotlin naming conventions: 'val myCoolProperty = \"\"'", - "markdown": "Reports property names that do not follow the recommended naming conventions.\n\n\nConsistent naming allows for easier code reading and understanding.\nAccording to the [Kotlin official style guide](https://kotlinlang.org/docs/coding-conventions.html#naming-rules),\nproperty names should start with a lowercase letter and use camel case.\n\nIt is possible to introduce other naming rules by changing the \"Pattern\" regular expression.\n\n**Example:**\n\n\n val My_Cool_Property = \"\"\n\nA quick-fix renames the class according to the Kotlin naming conventions:\n\n\n val myCoolProperty = \"\"\n" + "text": "Reports inline classes that are deprecated and cause compilation warnings in Kotlin 1.5 and later. See What's new in Kotlin 1.5.0 Example: 'inline class Password(val s: String)' After the quick-fix is applied: '@JvmInline\n value class Password(val s: String)' Inspection is available for Kotlin language level starting from 1.5.", + "markdown": "Reports inline classes that are deprecated and cause compilation warnings in Kotlin 1.5 and later.\nSee [What's new in Kotlin 1.5.0](https://kotlinlang.org/docs/whatsnew15.html#inline-classes)\n\nExample:\n\n\n inline class Password(val s: String)\n\nAfter the quick-fix is applied:\n\n\n @JvmInline\n value class Password(val s: String)\n\nInspection is available for Kotlin language level starting from 1.5." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Naming conventions", - "index": 48, + "id": "Kotlin/Migration", + "index": 15, "toolComponent": { "name": "QDJVM" } @@ -36778,10 +34155,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -36812,10 +34186,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36846,10 +34217,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36880,10 +34248,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -36914,10 +34279,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36936,6 +34298,37 @@ ] }, { + "id": "ConvertObjectToDataObject", + "shortDescription": { + "text": "Convert 'object' to 'data object'" + }, + "fullDescription": { + "text": "Reports 'object' that can be converted to 'data object' 'data object' auto-generates 'toString', 'equals', 'hashCode' and 'readResolve' if the 'object' is annotated with 'java.io.Serializable' There are mainly two cases when you should consider converting 'object' to 'data object'. The first one is when custom 'toString' returns name of the class. The second one is when the 'object' implements 'java.io.Serializable' Example: 'object Foo {\n override fun toString(): String = \"Foo\"\n }' After the quick-fix is applied: 'data object Foo' This inspection only reports if the Kotlin language level of the project or module is 1.8 or higher", + "markdown": "Reports `object` that can be converted to `data object`\n\n`data object` auto-generates `toString`, `equals`, `hashCode` and `readResolve` if\nthe `object` is annotated with `java.io.Serializable`\n\nThere are mainly two cases when you should consider converting `object` to `data object`. The first one is when\ncustom `toString` returns name of the class. The second one is when the `object` implements\n`java.io.Serializable`\n\n**Example:**\n\n\n object Foo {\n override fun toString(): String = \"Foo\"\n }\n\nAfter the quick-fix is applied:\n\n\n data object Foo\n\nThis inspection only reports if the Kotlin language level of the project or module is 1.8 or higher" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Probable bugs", + "index": 25, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "BooleanLiteralArgument", "shortDescription": { "text": "Boolean literal argument without parameter name" @@ -36948,10 +34341,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -36982,17 +34372,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -37016,10 +34403,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -37050,10 +34434,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -37084,10 +34465,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37118,10 +34496,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37150,12 +34525,9 @@ }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37186,10 +34558,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -37220,10 +34589,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37252,19 +34618,16 @@ }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -37288,10 +34651,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37322,10 +34682,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -37356,10 +34713,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -37390,10 +34744,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -37424,10 +34775,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37446,6 +34794,37 @@ ] }, { + "id": "ObjectPrivatePropertyName", + "shortDescription": { + "text": "Object private property naming convention" + }, + "fullDescription": { + "text": "Reports properties that do not follow the naming conventions. The following properties are reported: Private properties in objects and companion objects You can specify the required pattern in the inspection options. Recommended naming conventions: it has to start with an underscore or an uppercase letter, use camel case. Example: 'class Person {\n companion object {\n // property in companion object\n private val NO_NAME = Person()\n }\n }'", + "markdown": "Reports properties that do not follow the naming conventions.\n\nThe following properties are reported:\n\n* Private properties in objects and companion objects\n\nYou can specify the required pattern in the inspection options.\n\n[Recommended naming conventions](https://kotlinlang.org/docs/coding-conventions.html#naming-rules): it has to start with an underscore or an uppercase letter, use camel case.\n\n**Example:**\n\n\n class Person {\n companion object {\n // property in companion object\n private val NO_NAME = Person()\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Naming conventions", + "index": 55, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "WrapUnaryOperator", "shortDescription": { "text": "Ambiguous unary operator use with number constant" @@ -37458,17 +34837,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -37492,17 +34868,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -37526,10 +34899,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37560,10 +34930,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37594,10 +34961,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37628,10 +34992,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -37662,51 +35023,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "RedundantAsync", - "shortDescription": { - "text": "Redundant 'async' call" - }, - "fullDescription": { - "text": "Reports 'async' calls that are immediately followed by 'await'. Such calls can be replaced with blocking calls. Example: 'suspend fun test(ctx: CoroutineContext, scope: CoroutineScope) {\n scope.async(ctx) { doSomeJob() }.await()\n }' After the quick-fix is applied: 'suspend fun test(ctx: CoroutineContext, scope: CoroutineScope) {\n withContext(scope.coroutineContext + ctx) { doSomeJob() }\n }'", - "markdown": "Reports `async` calls that are immediately followed by `await`.\nSuch calls can be replaced with blocking calls.\n\n**Example:**\n\n\n suspend fun test(ctx: CoroutineContext, scope: CoroutineScope) {\n scope.async(ctx) { doSomeJob() }.await()\n }\n\nAfter the quick-fix is applied:\n\n\n suspend fun test(ctx: CoroutineContext, scope: CoroutineScope) {\n withContext(scope.coroutineContext + ctx) { doSomeJob() }\n }\n" - }, - "defaultConfiguration": { - "enabled": false, - "level": "note", - "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Kotlin/Style issues", - "index": 3, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -37730,10 +35054,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37764,44 +35085,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Kotlin/Style issues", - "index": 3, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "DeferredIsResult", - "shortDescription": { - "text": "Function returning Deferred directly" - }, - "fullDescription": { - "text": "Reports functions with the 'kotlinx.coroutines.Deferred' return type. Functions that use 'Deferred' as return type should have a name with the 'Async' suffix. Otherwise, it's recommended to mark a function as 'suspend' and unwrap 'Deferred' inside it. Example: 'fun calcEverything(): Deferred<Int> {\n return CompletableDeferred(42)\n }' After the quick-fix that adds the 'Async' suffix applied: 'fun calcEverythingAsync(): Deferred<Int> {\n return CompletableDeferred(42)\n }' After the quick-fix that converts the function into a 'suspend' one applied: 'suspend fun calcEverything(): Int {\n return CompletableDeferred(42).await()\n }'", - "markdown": "Reports functions with the `kotlinx.coroutines.Deferred` return type.\n\n\nFunctions that use `Deferred` as return type should have a name with the `Async` suffix.\nOtherwise, it's recommended to mark a function as `suspend` and unwrap `Deferred` inside it.\n\n**Example:**\n\n\n fun calcEverything(): Deferred<Int> {\n return CompletableDeferred(42)\n }\n\nAfter the quick-fix that adds the `Async` suffix applied:\n\n\n fun calcEverythingAsync(): Deferred<Int> {\n return CompletableDeferred(42)\n }\n\nAfter the quick-fix that converts the function into a `suspend` one applied:\n\n\n suspend fun calcEverything(): Int {\n return CompletableDeferred(42).await()\n }\n" - }, - "defaultConfiguration": { - "enabled": false, - "level": "note", - "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37832,10 +35116,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37866,10 +35147,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37900,10 +35178,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -37934,17 +35209,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -37968,17 +35240,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -38002,10 +35271,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38036,10 +35302,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38070,17 +35333,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -38104,10 +35364,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38138,10 +35395,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38172,10 +35426,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -38206,17 +35457,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -38240,10 +35488,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38274,10 +35519,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -38301,17 +35543,14 @@ "text": "Accessor call that can be replaced with property access syntax" }, "fullDescription": { - "text": "Reports Java 'get' and 'set' method calls that can be replaced with the Kotlin synthetic properties. Use property access syntax quick-fix can be used to amen the code automatically. Example: '// Java:\n public class JavaClassWithGetter {\n private final String expr = \"result\";\n\n // ...\n\n public String getExpr() {\n return expr;\n }\n }' '// Kotlin:\n fun test(j: JavaClassWithGetter) {\n // ...\n j.getExpr() // <== A quick-fix simplifies the expression to 'j.expr'\n }'", - "markdown": "Reports Java `get` and `set` method calls that can be replaced with the Kotlin synthetic properties.\n\n**Use property access syntax** quick-fix can be used to amen the code automatically.\n\nExample:\n\n\n // Java:\n public class JavaClassWithGetter {\n private final String expr = \"result\";\n\n // ...\n\n public String getExpr() {\n return expr;\n }\n }\n\n\n // Kotlin:\n fun test(j: JavaClassWithGetter) {\n // ...\n j.getExpr() // <== A quick-fix simplifies the expression to 'j.expr'\n }\n" + "text": "Reports Java 'get' and 'set' method calls that can be replaced with the Kotlin synthetic properties. Use property access syntax quick-fix can be used to amend the code automatically. Example: '// Java:\n public class JavaClassWithGetter {\n private final String expr = \"result\";\n\n // ...\n\n public String getExpr() {\n return expr;\n }\n }' '// Kotlin:\n fun test(j: JavaClassWithGetter) {\n // ...\n j.getExpr() // <== A quick-fix simplifies the expression to 'j.expr'\n }'", + "markdown": "Reports Java `get` and `set` method calls that can be replaced with the Kotlin synthetic properties.\n\n**Use property access syntax** quick-fix can be used to amend the code automatically.\n\nExample:\n\n\n // Java:\n public class JavaClassWithGetter {\n private final String expr = \"result\";\n\n // ...\n\n public String getExpr() {\n return expr;\n }\n }\n\n\n // Kotlin:\n fun test(j: JavaClassWithGetter) {\n // ...\n j.getExpr() // <== A quick-fix simplifies the expression to 'j.expr'\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38342,10 +35581,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38376,10 +35612,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38410,10 +35643,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38444,17 +35674,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -38478,10 +35705,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38512,17 +35736,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -38546,10 +35767,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38580,10 +35798,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -38614,11 +35829,39 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" + "ideaSeverity": "INFORMATION" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Style issues", + "index": 3, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" ] } + ] + }, + { + "id": "ReplaceRangeToWithRangeUntil", + "shortDescription": { + "text": "'rangeTo' or the '..' call should be replaced with '..<'" + }, + "fullDescription": { + "text": "Reports calls to 'rangeTo' or the '..' operator instead of calls to '..<'. Using corresponding functions makes your code simpler. The quick-fix replaces 'rangeTo' or the '..' call with '..<'. Example: 'fun foo(a: Int) {\n for (i in 0..a - 1) {\n\n }\n }' After the quick-fix is applied: 'fun foo(a: Int) {\n for (i in 0..<a) {\n\n }\n }'", + "markdown": "Reports calls to `rangeTo` or the `..` operator instead of calls to `..<`.\n\nUsing corresponding functions makes your code simpler.\n\nThe quick-fix replaces `rangeTo` or the `..` call with `..<`.\n\n**Example:**\n\n\n fun foo(a: Int) {\n for (i in 0..a - 1) {\n\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun foo(a: Int) {\n for (i in 0..<a) {\n\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } }, "relationships": [ { @@ -38648,10 +35891,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38682,10 +35922,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38716,10 +35953,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38750,10 +35984,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38784,10 +36015,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38818,10 +36046,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -38852,10 +36077,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -38886,10 +36108,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -38920,10 +36139,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -38954,17 +36170,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -38976,29 +36189,26 @@ ] }, { - "id": "KotlinPlaceholderCountMatchesArgumentCount", + "id": "ReplaceManualRangeWithIndicesCalls", "shortDescription": { - "text": "Number of placeholders does not match number of arguments in logging call" + "text": "Range can be converted to indices or iteration" }, "fullDescription": { - "text": "Reports SLF4J or Log4j 2 logging calls, such as 'logger.info(\"{}: {}\", key)' where the number of '{}' placeholders in the logger message doesn't match the number of other arguments to the logging call.", - "markdown": "Reports SLF4J or Log4j 2 logging calls, such as `logger.info(\"{}: {}\", key)` where the number of `{}` placeholders in the logger message doesn't match the number of other arguments to the logging call." + "text": "Reports 'until' and 'rangeTo' operators that can be replaced with 'Collection.indices' or iteration over collection inside 'for' loop. Using syntactic sugar makes your code simpler. The quick-fix replaces the manual range with the corresponding construction. Example: 'fun main(args: Array<String>) {\n for (index in 0..args.size - 1) {\n println(args[index])\n }\n }' After the quick-fix is applied: 'fun main(args: Array<String>) {\n for (element in args) {\n println(element)\n }\n }'", + "markdown": "Reports `until` and `rangeTo` operators that can be replaced with `Collection.indices` or iteration over collection inside `for` loop.\n\nUsing syntactic sugar makes your code simpler.\n\nThe quick-fix replaces the manual range with the corresponding construction.\n\n**Example:**\n\n\n fun main(args: Array<String>) {\n for (index in 0..args.size - 1) {\n println(args[index])\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun main(args: Array<String>) {\n for (element in args) {\n println(element)\n }\n }\n" }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Logging", - "index": 157, + "id": "Kotlin/Style issues", + "index": 3, "toolComponent": { "name": "QDJVM" } @@ -39010,29 +36220,26 @@ ] }, { - "id": "ReplaceManualRangeWithIndicesCalls", + "id": "KotlinPlaceholderCountMatchesArgumentCount", "shortDescription": { - "text": "Range can be converted to indices or iteration" + "text": "Number of placeholders does not match number of arguments in logging call" }, "fullDescription": { - "text": "Reports 'until' and 'rangeTo' operators that can be replaced with 'Collection.indices' or iteration over collection inside 'for' loop. Using syntactic sugar makes your code simpler. The quick-fix replaces the manual range with the corresponding construction. Example: 'fun main(args: Array<String>) {\n for (index in 0..args.size - 1) {\n println(args[index])\n }\n }' After the quick-fix is applied: 'fun main(args: Array<String>) {\n for (element in args) {\n println(element)\n }\n }'", - "markdown": "Reports `until` and `rangeTo` operators that can be replaced with `Collection.indices` or iteration over collection inside `for` loop.\n\nUsing syntactic sugar makes your code simpler.\n\nThe quick-fix replaces the manual range with the corresponding construction.\n\n**Example:**\n\n\n fun main(args: Array<String>) {\n for (index in 0..args.size - 1) {\n println(args[index])\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun main(args: Array<String>) {\n for (element in args) {\n println(element)\n }\n }\n" + "text": "Reports SLF4J or Log4j 2 logging calls, such as 'logger.info(\"{}: {}\", key)' where the number of '{}' placeholders in the logger message doesn't match the number of other arguments to the logging call.", + "markdown": "Reports SLF4J or Log4j 2 logging calls, such as `logger.info(\"{}: {}\", key)` where the number of `{}` placeholders in the logger message doesn't match the number of other arguments to the logging call." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Style issues", - "index": 3, + "id": "Kotlin/Logging", + "index": 163, "toolComponent": { "name": "QDJVM" } @@ -39056,17 +36263,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Logging", - "index": 157, + "index": 163, "toolComponent": { "name": "QDJVM" } @@ -39078,29 +36282,26 @@ ] }, { - "id": "RemoveToStringInStringTemplate", + "id": "RedundantAsSequence", "shortDescription": { - "text": "Redundant call to 'toString()' in string template" + "text": "Redundant 'asSequence' call" }, "fullDescription": { - "text": "Reports calls to 'toString()' in string templates that can be safely removed. Example: 'fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4).toString()}\" // 'toString()' is redundant\n }' After the quick-fix is applied: 'fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4)}\"\n }'", - "markdown": "Reports calls to `toString()` in string templates that can be safely removed.\n\n**Example:**\n\n fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4).toString()}\" // 'toString()' is redundant\n }\n\nAfter the quick-fix is applied:\n\n fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4)}\"\n }\n" + "text": "Reports redundant 'asSequence()' call that can never have a positive performance effect. 'asSequence()' speeds up collection processing that includes multiple operations because it performs operations lazily and doesn't create intermediate collections. However, if a terminal operation (such as 'toList()') is used right after 'asSequence()', this doesn't give you any positive performance effect. Example: 'fun test(list: List<String>) {\n list.asSequence().last()\n }' After the quick-fix is applied: 'fun test(list: List<String>) {\n list.last()\n }'", + "markdown": "Reports redundant `asSequence()` call that can never have a positive performance effect.\n\n\n`asSequence()` speeds up collection processing that includes multiple operations because it performs operations lazily\nand doesn't create intermediate collections.\n\n\nHowever, if a terminal operation (such as `toList()`) is used right after `asSequence()`, this doesn't give\nyou any positive performance effect.\n\n**Example:**\n\n\n fun test(list: List<String>) {\n list.asSequence().last()\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(list: List<String>) {\n list.last()\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Redundant constructs", - "index": 4, + "id": "Kotlin/Style issues", + "index": 3, "toolComponent": { "name": "QDJVM" } @@ -39112,29 +36313,26 @@ ] }, { - "id": "RedundantAsSequence", + "id": "RemoveToStringInStringTemplate", "shortDescription": { - "text": "Redundant 'asSequence' call" + "text": "Redundant call to 'toString()' in string template" }, "fullDescription": { - "text": "Reports redundant 'asSequence()' call that can never have a positive performance effect. 'asSequence()' speeds up collection processing that includes multiple operations because it performs operations lazily and doesn't create intermediate collections. However, if a terminal operation (such as 'toList()') is used right after 'asSequence()', this doesn't give you any positive performance effect. Example: 'fun test(list: List<String>) {\n list.asSequence().last()\n }' After the quick-fix is applied: 'fun test(list: List<String>) {\n list.last()\n }'", - "markdown": "Reports redundant `asSequence()` call that can never have a positive performance effect.\n\n\n`asSequence()` speeds up collection processing that includes multiple operations because it performs operations lazily\nand doesn't create intermediate collections.\n\n\nHowever, if a terminal operation (such as `toList()`) is used right after `asSequence()`, this doesn't give\nyou any positive performance effect.\n\n**Example:**\n\n\n fun test(list: List<String>) {\n list.asSequence().last()\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(list: List<String>) {\n list.last()\n }\n" + "text": "Reports calls to 'toString()' in string templates that can be safely removed. Example: 'fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4).toString()}\" // 'toString()' is redundant\n }' After the quick-fix is applied: 'fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4)}\"\n }'", + "markdown": "Reports calls to `toString()` in string templates that can be safely removed.\n\n**Example:**\n\n fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4).toString()}\" // 'toString()' is redundant\n }\n\nAfter the quick-fix is applied:\n\n fun foo(a: Int, b: Int) = a + b\n\n fun test(): String {\n return \"Foo: ${foo(0, 4)}\"\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Style issues", - "index": 3, + "id": "Kotlin/Redundant constructs", + "index": 4, "toolComponent": { "name": "QDJVM" } @@ -39158,10 +36356,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -39192,10 +36387,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -39226,10 +36418,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39260,10 +36449,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -39294,17 +36480,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -39328,10 +36511,7 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -39362,17 +36542,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -39396,10 +36573,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39430,10 +36604,7 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -39464,10 +36635,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39498,10 +36666,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39532,17 +36697,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -39566,17 +36728,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -39600,17 +36759,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -39634,10 +36790,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -39668,10 +36821,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -39702,10 +36852,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -39736,10 +36883,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39770,10 +36914,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39804,10 +36945,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -39826,6 +36964,37 @@ ] }, { + "id": "ReplaceReadLineWithReadln", + "shortDescription": { + "text": "'readLine' can be replaced with 'readln' or 'readlnOrNull'" + }, + "fullDescription": { + "text": "Reports calls to 'readLine()' that can be replaced with 'readln()' or 'readlnOrNull()'. Using corresponding functions makes your code simpler. The quick-fix replaces 'readLine()!!' with 'readln()' and 'readLine()' with 'readlnOrNull()'. Examples: 'val x = readLine()!!\n val y = readLine()?.length' After the quick-fix is applied: 'val x = readln()\n val y = readlnOrNull()?.length'", + "markdown": "Reports calls to `readLine()` that can be replaced with `readln()` or `readlnOrNull()`.\n\n\nUsing corresponding functions makes your code simpler.\n\n\nThe quick-fix replaces `readLine()!!` with `readln()` and `readLine()` with `readlnOrNull()`.\n\n**Examples:**\n\n\n val x = readLine()!!\n val y = readLine()?.length\n\nAfter the quick-fix is applied:\n\n\n val x = readln()\n val y = readlnOrNull()?.length\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Style issues", + "index": 3, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { "id": "SimplifyNestedEachInScopeFunction", "shortDescription": { "text": "Scope function with nested forEach can be simplified" @@ -39838,10 +37007,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39872,17 +37038,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -39906,17 +37069,45 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "DeclaringClassMigration", + "shortDescription": { + "text": "Deprecated 'Enum.declaringClass' property" + }, + "fullDescription": { + "text": "Reports 'declaringClass' property calls on Enum that will lead to compilation error since 1.9. 'Enum.getDeclaringClass' is among \"hidden\" Java functions which aren't normally visible by resolve. However, it's visible via synthetic property that is a front-end bug. More details: KT-49653 Deprecate and remove Enum.declaringClass synthetic property The quick-fix replaces a call with 'declaringJavaClass'. Example: 'fun <E: Enum<E>> foo(values: Array<E>) {\n EnumSet.noneOf(values.first().declaringClass)\n }' After the quick-fix is applied: 'fun <E: Enum<E>> foo(values: Array<E>) {\n EnumSet.noneOf(values.first().declaringJavaClass)\n }' This inspection only reports if the Kotlin language level of the project or module is 1.7 or higher.", + "markdown": "Reports 'declaringClass' property calls on Enum that will lead to compilation error since 1.9.\n\n'Enum.getDeclaringClass' is among \"hidden\" Java functions which aren't normally visible by resolve. However, it's visible via synthetic\nproperty that is a front-end bug.\n\n**More details:** [KT-49653 Deprecate and remove Enum.declaringClass synthetic\nproperty](https://youtrack.jetbrains.com/issue/KT-49653)\n\nThe quick-fix replaces a call with 'declaringJavaClass'.\n\n**Example:**\n\n\n fun <E: Enum<E>> foo(values: Array<E>) {\n EnumSet.noneOf(values.first().declaringClass)\n }\n\nAfter the quick-fix is applied:\n\n\n fun <E: Enum<E>> foo(values: Array<E>) {\n EnumSet.noneOf(values.first().declaringJavaClass)\n }\n\nThis inspection only reports if the Kotlin language level of the project or module is 1.7 or higher." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Kotlin/Migration", + "index": 15, "toolComponent": { "name": "QDJVM" } @@ -39940,10 +37131,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -39974,17 +37162,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40008,10 +37193,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -40042,10 +37224,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -40076,10 +37255,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -40110,10 +37286,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -40144,17 +37317,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -40178,10 +37348,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -40212,17 +37379,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -40239,24 +37403,21 @@ "text": "Augmented assignment creates a new collection under the hood" }, "fullDescription": { - "text": "Reports augmented assignment ('+=') expressions on read-only 'Collection'. Augment assignment ('+=') expression on read-only 'Collection' doesn't modify the target collection, it creates a new one under the hood which can be misleading and lead to performance issues. Change type to mutable quick-fix can be used to amend the code automatically. Example: 'fun test() {\n var list = listOf(0)\n list += 42 // new list is created, variable 'list' still contains only '0'\n }' After the quick-fix is applied: 'fun test() {\n val list = mutableListOf(0)\n list += 42\n }'", - "markdown": "Reports augmented assignment (`+=`) expressions on read-only `Collection`.\n\nAugment assignment (`+=`) expression on read-only `Collection` doesn't modify the target collection,\nit creates a new one under the hood which can be misleading and lead to performance issues.\n\n**Change type to mutable** quick-fix can be used to amend the code automatically.\n\nExample:\n\n\n fun test() {\n var list = listOf(0)\n list += 42 // new list is created, variable 'list' still contains only '0'\n }\n\nAfter the quick-fix is applied:\n\n\n fun test() {\n val list = mutableListOf(0)\n list += 42\n }\n" + "text": "Reports augmented assignment ('+=') expressions on a read-only 'Collection'. Augmented assignment ('+=') expression on a read-only 'Collection' temporarily allocates a new collection, which may hurt performance. Change type to mutable quick-fix can be used to amend the code automatically. Example: 'fun test() {\n var list = listOf(0)\n list += 42 // A new list is allocated here, equivalent to list = list + 42\n }' After the quick-fix is applied: 'fun test() {\n val list = mutableListOf(0)\n list += 42\n }'", + "markdown": "Reports augmented assignment (`+=`) expressions on a read-only `Collection`.\n\nAugmented assignment (`+=`) expression on a read-only `Collection` temporarily allocates a new collection,\nwhich may hurt performance.\n\n**Change type to mutable** quick-fix can be used to amend the code automatically.\n\nExample:\n\n\n fun test() {\n var list = listOf(0)\n list += 42 // A new list is allocated here, equivalent to list = list + 42\n }\n\nAfter the quick-fix is applied:\n\n\n fun test() {\n val list = mutableListOf(0)\n list += 42\n }\n" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40280,17 +37441,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "Kotlin/Java interop issues", - "index": 55, + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -40314,10 +37472,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -40348,17 +37503,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -40370,29 +37522,26 @@ ] }, { - "id": "KotlinJvmAnnotationInJava", + "id": "ObsoleteKotlinJsPackages", "shortDescription": { - "text": "Kotlin JVM annotation in Java" + "text": "'kotlin.browser' and 'kotlin.dom' packages are deprecated since 1.4" }, "fullDescription": { - "text": "Reports useless Kotlin JVM annotations in Java code. Example: 'import kotlin.jvm.Volatile;\n\n public class Test {\n @Volatile\n public int i;\n }'", - "markdown": "Reports useless Kotlin JVM annotations in Java code.\n\n**Example:**\n\n\n import kotlin.jvm.Volatile;\n\n public class Test {\n @Volatile\n public int i;\n }\n" + "text": "Reports usages of 'kotlin.dom' and 'kotlin.browser' packages. These packages were moved to 'kotlinx.dom' and 'kotlinx.browser' respectively in Kotlin 1.4+.", + "markdown": "Reports usages of `kotlin.dom` and `kotlin.browser` packages.\n\nThese packages were moved to `kotlinx.dom` and `kotlinx.browser`\nrespectively in Kotlin 1.4+." }, "defaultConfiguration": { - "enabled": false, - "level": "warning", + "enabled": true, + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Kotlin/Java interop issues", - "index": 55, + "id": "Kotlin/Migration", + "index": 15, "toolComponent": { "name": "QDJVM" } @@ -40404,29 +37553,26 @@ ] }, { - "id": "ObsoleteKotlinJsPackages", + "id": "KotlinJvmAnnotationInJava", "shortDescription": { - "text": "'kotlin.browser' and 'kotlin.dom' packages are deprecated since 1.4" + "text": "Kotlin JVM annotation in Java" }, "fullDescription": { - "text": "Reports usages of 'kotlin.dom' and 'kotlin.browser' packages. These packages were moved to 'kotlinx.dom' and 'kotlinx.browser' respectively in Kotlin 1.4+.", - "markdown": "Reports usages of `kotlin.dom` and `kotlin.browser` packages.\n\nThese packages were moved to `kotlinx.dom` and `kotlinx.browser`\nrespectively in Kotlin 1.4+." + "text": "Reports useless Kotlin JVM annotations in Java code. Example: 'import kotlin.jvm.Volatile;\n\n public class Test {\n @Volatile\n public int i;\n }'", + "markdown": "Reports useless Kotlin JVM annotations in Java code.\n\n**Example:**\n\n\n import kotlin.jvm.Volatile;\n\n public class Test {\n @Volatile\n public int i;\n }\n" }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "warning", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Kotlin/Migration", - "index": 15, + "id": "Kotlin/Java interop issues", + "index": 62, "toolComponent": { "name": "QDJVM" } @@ -40450,10 +37596,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -40484,17 +37627,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40518,10 +37658,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -40552,17 +37689,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40586,10 +37720,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -40620,10 +37751,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -40654,17 +37782,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Other problems", - "index": 152, + "index": 51, "toolComponent": { "name": "QDJVM" } @@ -40688,17 +37813,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40722,17 +37844,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40756,17 +37875,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40790,17 +37906,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -40824,10 +37937,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -40858,10 +37968,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -40892,10 +37999,7 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ @@ -40926,10 +38030,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -40960,10 +38061,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -40994,10 +38092,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -41028,10 +38123,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -41062,10 +38154,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -41096,10 +38185,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ @@ -41130,17 +38216,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Naming conventions", - "index": 48, + "index": 55, "toolComponent": { "name": "QDJVM" } @@ -41164,10 +38247,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -41198,17 +38278,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -41232,17 +38309,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Kotlin/Probable bugs", - "index": 24, + "index": 25, "toolComponent": { "name": "QDJVM" } @@ -41263,7 +38337,7 @@ }, { "name": "com.intellij.spring", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "SpringBeanConstructorArgInspection", @@ -41278,17 +38352,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41312,17 +38383,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41346,17 +38414,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41380,17 +38445,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Setup", - "index": 67, + "index": 75, "toolComponent": { "name": "QDJVM" } @@ -41414,17 +38476,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41448,17 +38507,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41482,17 +38538,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41516,17 +38569,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41550,17 +38600,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41584,17 +38631,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41618,17 +38662,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41652,17 +38693,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core", - "index": 8, + "index": 9, "toolComponent": { "name": "QDJVM" } @@ -41686,17 +38724,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core", - "index": 8, + "index": 9, "toolComponent": { "name": "QDJVM" } @@ -41720,17 +38755,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring AOP", - "index": 99, + "index": 109, "toolComponent": { "name": "QDJVM" } @@ -41754,17 +38786,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41788,17 +38817,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41822,17 +38848,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -41856,17 +38879,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41890,17 +38910,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41924,17 +38941,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41958,17 +38972,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -41992,17 +39003,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Setup", - "index": 67, + "index": 75, "toolComponent": { "name": "QDJVM" } @@ -42026,17 +39034,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42060,17 +39065,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42084,27 +39086,24 @@ { "id": "SpringJavaInjectionPointsAutowiringInspection", "shortDescription": { - "text": "Incorrect injection point autowiring in Spring bean components" + "text": "Incorrect autowiring in Spring bean components" }, "fullDescription": { - "text": "Reports autowiring problems on injection points of Spring beans: More than one bean of 'concrete' type No beans of 'concrete' type No bean with qualifier Autowired method or constructor without parameters Example: public interface FooInterface {...}\n @Component public class FooBean implements FooInterface {...}\n @Component public class OtherBean implements FooInterface {...}\n\n@Component\npublic class MyComponent {\n\t@Autowired\n\tFooInterface foo; // \"Could not autowire. There is more than one bean of 'FooInterface' type.\n // Beans: fooBean(FooBean.java), otherBean(OtherBean.java)\"\n}", - "markdown": "Reports autowiring problems on injection points of Spring beans:\n\n* More than one bean of 'concrete' type\n* No beans of 'concrete' type\n* No bean with qualifier\n* Autowired method or constructor without parameters\n\n**Example:**\n\n```\npublic interface FooInterface {...}\n @Component public class FooBean implements FooInterface {...}\n @Component public class OtherBean implements FooInterface {...}\n\n@Component\npublic class MyComponent {\n\t@Autowired\n\tFooInterface foo; // \"Could not autowire. There is more than one bean of 'FooInterface' type.\n // Beans: fooBean(FooBean.java), otherBean(OtherBean.java)\"\n}\n```" + "text": "Reports autowiring problems on injection points of Spring beans @Component, @Service, and so on. More than one bean of 'concrete' type No beans of 'concrete' type No bean with qualifier Incorrect usages of '@Autowired' on Spring bean constructors Injected or autowired fields/methods in classes that are not valid Spring beans Example: public interface FooInterface {...}\n @Component public class FooBean implements FooInterface {...}\n @Component public class OtherBean implements FooInterface {...}\n\n@Component\npublic class MyComponent {\n\t@Autowired\n\tFooInterface foo; // \"Could not autowire. There is more than one bean of 'FooInterface' type.\n // Beans: fooBean(FooBean.java), otherBean(OtherBean.java)\"\n}\n Example: '@Component\npublic class MyComponent {\n\t@Autowired\n\tpublic MyComponent(BarBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n\n\t@Autowired\n\tpublic MyComponent(FooBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n}\n\n@Component\npublic class MyFactory { // reports ' No matching @Autowired constructor'\n\tpublic MyFactory(String str) {...}\n\tpublic MyFactory(int count) {...}\n}' Example: 'public class FooBeanClass {\n @Autowired // reports 'Autowired members must be defined in valid Spring beans: @Component, @Service, and so on'\n ServiceBean bean;\n }'", + "markdown": "Reports autowiring problems on injection points of Spring beans\n[@Component](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Component.html),\n[@Service](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Service.html),\nand so on.\n\n* More than one bean of 'concrete' type\n* No beans of 'concrete' type\n* No bean with qualifier\n* Incorrect usages of `@Autowired` on Spring bean constructors\n* Injected or autowired fields/methods in classes that are not valid Spring beans\n\n**Example:**\n\n```\npublic interface FooInterface {...}\n @Component public class FooBean implements FooInterface {...}\n @Component public class OtherBean implements FooInterface {...}\n\n@Component\npublic class MyComponent {\n\t@Autowired\n\tFooInterface foo; // \"Could not autowire. There is more than one bean of 'FooInterface' type.\n // Beans: fooBean(FooBean.java), otherBean(OtherBean.java)\"\n}\n```\n\n**Example:**\n\n\n @Component\n public class MyComponent {\n \t@Autowired\n \tpublic MyComponent(BarBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n\n \t@Autowired\n \tpublic MyComponent(FooBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n }\n\n @Component\n public class MyFactory { // reports ' No matching @Autowired constructor'\n \tpublic MyFactory(String str) {...}\n \tpublic MyFactory(int count) {...}\n }\n\n**Example:**\n\n\n public class FooBeanClass {\n @Autowired // reports 'Autowired members must be defined in valid Spring beans: @Component, @Service, and so on'\n ServiceBean bean;\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42128,17 +39127,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Setup", - "index": 67, + "index": 75, "toolComponent": { "name": "QDJVM" } @@ -42162,17 +39158,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42196,17 +39189,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring AOP", - "index": 99, + "index": 109, "toolComponent": { "name": "QDJVM" } @@ -42230,17 +39220,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42264,51 +39251,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "SpringJavaConstructorAutowiringInspection", - "shortDescription": { - "text": "Autowiring issues in a Spring bean class constructors" - }, - "fullDescription": { - "text": "Reports incorrect usages of '@Autowired' on Spring bean constructors: more than one '@Autowired' constructor, no matching '@Autowired' constructor, and so on. Example: '@Component\npublic class MyComponent {\n\t@Autowired\n\tpublic MyComponent(BarBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n\n\t@Autowired\n\tpublic MyComponent(FooBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n}\n\n@Component\npublic class MyFactory { // reports ' No matching @Autowired constructor'\n\tpublic MyFactory(String str) {...}\n\tpublic MyFactory(int count) {...}\n}'", - "markdown": "Reports incorrect usages of `@Autowired` on Spring bean constructors:\nmore than one `@Autowired` constructor, no matching `@Autowired` constructor, and so on.\n\n**Example:**\n\n\n @Component\n public class MyComponent {\n \t@Autowired\n \tpublic MyComponent(BarBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n\n \t@Autowired\n \tpublic MyComponent(FooBean bean) {...} // reports 'Only one @Autowired constructor is allowed'\n }\n\n @Component\n public class MyFactory { // reports ' No matching @Autowired constructor'\n \tpublic MyFactory(String str) {...}\n \tpublic MyFactory(int count) {...}\n }\n" - }, - "defaultConfiguration": { - "enabled": true, - "level": "error", - "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Spring/Spring Core/Code", - "index": 13, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42332,17 +39282,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42366,17 +39313,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42400,17 +39344,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42434,17 +39375,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42468,17 +39406,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42502,17 +39437,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42536,17 +39468,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring AOP", - "index": 99, + "index": 109, "toolComponent": { "name": "QDJVM" } @@ -42570,17 +39499,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42604,17 +39530,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42638,17 +39561,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42672,17 +39592,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42706,17 +39623,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42740,17 +39654,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -42774,17 +39685,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring AOP", - "index": 99, + "index": 109, "toolComponent": { "name": "QDJVM" } @@ -42808,17 +39716,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring AOP", - "index": 99, + "index": 109, "toolComponent": { "name": "QDJVM" } @@ -42842,17 +39747,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42876,17 +39778,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42910,17 +39809,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -42944,17 +39840,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core", - "index": 8, + "index": 9, "toolComponent": { "name": "QDJVM" } @@ -42978,17 +39871,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43012,17 +39902,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43046,17 +39933,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43080,51 +39964,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "SpringJavaAutowiredMembersInspection", - "shortDescription": { - "text": "Incorrect @Autowired member in a non-Spring component" - }, - "fullDescription": { - "text": "Reports injected or autowired fields/methods in classes that are not valid Spring beans: @Component, @Service, and so on. Example: 'public class FooBeanClass {\n @Autowired // reports 'Autowired members must be defined in valid Spring beans: @Component, @Service, and so on'\n ServiceBean bean;\n }'", - "markdown": "Reports injected or autowired fields/methods in classes that are not valid Spring beans:\n[@Component](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Component.html),\n[@Service](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Service.html),\nand so on.\n\n**Example:**\n\n\n public class FooBeanClass {\n @Autowired // reports 'Autowired members must be defined in valid Spring beans: @Component, @Service, and so on'\n ServiceBean bean;\n }\n" - }, - "defaultConfiguration": { - "enabled": true, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Spring/Spring Core/Code", - "index": 13, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -43148,17 +39995,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43182,17 +40026,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43216,17 +40057,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, "toolComponent": { "name": "QDJVM" } @@ -43250,17 +40088,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43284,17 +40119,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/Code", - "index": 13, + "index": 14, "toolComponent": { "name": "QDJVM" } @@ -43318,17 +40150,119 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Core/XML", - "index": 9, + "index": 10, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij.spring.cloud", + "version": "223.8394", + "rules": [ + { + "id": "SpringBootBootstrapConfigurationInspection", + "shortDescription": { + "text": "Bootstrap configuration included in application context" + }, + "fullDescription": { + "text": "Reports 'BootstrapConfiguration' included into the Spring Boot application context via a component scan where it might not be needed. For more information, see Spring Cloud Commons documentation.", + "markdown": "Reports `BootstrapConfiguration` included into the Spring Boot application context via a component scan where it might not be needed.\n\nFor more information, see [Spring Cloud Commons documentation](https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#customizing-the-bootstrap-configuration)." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Cloud", + "index": 17, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpringCloudStreamMessageChannelInspection", + "shortDescription": { + "text": "Unresolved message channel" + }, + "fullDescription": { + "text": "Reports unresolved channel attributes in '@StreamListener', '@SendTo', '@Output', and '@Input' annotations. Using invalid binding name results in 'bean not found' error at runtime. Example: '@EnableBinding(Sink.class)\n public class LogSource {\n @StreamListener(Sink.class)\n\t public void log1() {\n }\n\n @StreamListener(\"invalid\") // Reports 'Cannot find channel'\n\t public void log2() {\n }\n }'", + "markdown": "Reports unresolved channel attributes in `@StreamListener`, `@SendTo`, `@Output`, and `@Input` annotations.\n\nUsing invalid binding name results in 'bean not found' error at runtime.\n\n**Example:**\n\n\n @EnableBinding(Sink.class)\n public class LogSource {\n @StreamListener(Sink.class)\n \t public void log1() {\n }\n\n @StreamListener(\"invalid\") // Reports 'Cannot find channel'\n \t public void log2() {\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Cloud Stream", + "index": 145, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpringCloudStreamInconsistencyInspection", + "shortDescription": { + "text": "Stream handler method error" + }, + "fullDescription": { + "text": "Reports inconsistency errors in stream handler methods. Input and output stream handler methods annotated with '@StreamListener' or '@StreamEmitter' have various constraints. Violation of the constraints results in errors at runtime. For example: Channel defined in '@StreamListener' 'value' attribute may never be combined with method parameters annotated with '@Input' or '@Output' An input channel must be specified for a method annotated with '@StreamListener' An output channel must be specified for a method that can return a value An output channel cannot be specified for a method that does not return a value '@StreamListener' 'condition' attribute cannot be set for methods that return a value", + "markdown": "Reports inconsistency errors in stream handler methods.\n\n\nInput and output stream handler methods annotated with `@StreamListener` or `@StreamEmitter` have various constraints.\nViolation of the constraints results in errors at runtime.\n\nFor example:\n\n* Channel defined in `@StreamListener` `value` attribute may never be combined with method parameters annotated with `@Input` or `@Output`\n* An input channel must be specified for a method annotated with `@StreamListener`\n* An output channel must be specified for a method that can return a value\n* An output channel cannot be specified for a method that does not return a value\n* `@StreamListener` `condition` attribute cannot be set for methods that return a value" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Cloud Stream", + "index": 145, "toolComponent": { "name": "QDJVM" } @@ -43349,7 +40283,7 @@ }, { "name": "org.intellij.groovy", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "GroovyListSetCanBeKeyedAccess", @@ -43364,17 +40298,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/GPath", - "index": 20, + "index": 21, "toolComponent": { "name": "QDJVM" } @@ -43398,17 +40329,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -43432,17 +40360,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -43466,17 +40391,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/GPath", - "index": 20, + "index": 21, "toolComponent": { "name": "QDJVM" } @@ -43500,17 +40422,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -43527,24 +40446,21 @@ "text": "Double-checked locking" }, "fullDescription": { - "text": "Reports double-checked locking. Double-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization. Unfortunately it is not thread safe when used on a field that is not declared 'volatile'. When using Java 1.4 or older, double-checked locking doesn't work even with a 'volatile' field. See the article for an explanation of the problem. Example: 'class Foo {\n private Helper helper = null\n\n Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) {\n helper = new Helper()\n }\n }\n }\n return helper;\n }\n }'", - "markdown": "Reports double-checked locking.\n\n\nDouble-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization.\nUnfortunately it is not thread safe when used on a field that is not declared `volatile`.\nWhen using Java 1.4 or older, double-checked locking doesn't work even with a `volatile` field.\nSee [the article](https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html) for an explanation of the problem.\n\n**Example:**\n\n\n class Foo {\n private Helper helper = null\n\n Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) {\n helper = new Helper()\n }\n }\n }\n return helper;\n }\n }\n" + "text": "Reports double-checked locking. Double-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization. Unfortunately it is not thread-safe when used on a field that is not declared 'volatile'. When using Java 1.4 or earlier, double-checked locking doesn't work even with a 'volatile' field. Read the article linked above for a detailed explanation of the problem. Example: 'class Foo {\n private Helper helper = null\n\n Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) {\n helper = new Helper()\n }\n }\n }\n return helper;\n }\n }'", + "markdown": "Reports [double-checked locking](https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html).\n\n\nDouble-checked locking tries to initialize a field on demand and in a thread-safe manner, while avoiding the cost of synchronization.\nUnfortunately it is not thread-safe when used on a field that is not declared `volatile`.\nWhen using Java 1.4 or earlier, double-checked locking doesn't work even with a `volatile` field.\nRead the article linked above for a detailed explanation of the problem.\n\n**Example:**\n\n\n class Foo {\n private Helper helper = null\n\n Helper getHelper() {\n if (helper == null)\n synchronized(this) {\n if (helper == null) {\n helper = new Helper()\n }\n }\n }\n return helper;\n }\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -43568,17 +40484,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -43602,17 +40515,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -43636,17 +40546,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -43670,17 +40577,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -43704,17 +40608,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -43738,17 +40639,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -43772,17 +40670,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -43806,17 +40701,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Annotations", - "index": 83, + "index": 91, "toolComponent": { "name": "QDJVM" } @@ -43840,17 +40732,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -43874,17 +40763,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -43908,17 +40794,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -43942,17 +40825,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/GPath", - "index": 20, + "index": 21, "toolComponent": { "name": "QDJVM" } @@ -43976,17 +40856,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -44010,17 +40887,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -44044,17 +40918,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -44078,17 +40949,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -44112,17 +40980,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -44146,17 +41011,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -44180,17 +41042,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44214,17 +41073,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -44248,17 +41104,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44282,17 +41135,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -44316,17 +41166,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/GPath", - "index": 20, + "index": 21, "toolComponent": { "name": "QDJVM" } @@ -44350,17 +41197,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44384,17 +41228,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Method metrics", - "index": 111, + "index": 121, "toolComponent": { "name": "QDJVM" } @@ -44418,17 +41259,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44452,17 +41290,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44474,29 +41309,26 @@ ] }, { - "id": "GroovyEmptyStatementBody", + "id": "GroovyLabeledStatement", "shortDescription": { - "text": "Statement with empty body" + "text": "Labeled statement inspection" }, "fullDescription": { - "text": "Reports 'if', 'while', 'do' or 'for' statements with empty bodies. While occasionally intended, this construction is confusing, and often the result of a typo. Example: 'if (condition) {}\nwhile(true){}'", - "markdown": "Reports `if`, `while`, `do` or `for` statements with empty bodies. While occasionally intended, this construction is confusing, and often the result of a typo.\n\n**Example:**\n\n\n if (condition) {}\n while(true){}\n\n" + "text": "Reports labels already used in parent workflow. Example: 'def list = [\"foo\"]\ncycle:\nfor (element in list) {\n cycle: // confusing label repeat\n element.chars().forEach {\n }\n}'", + "markdown": "Reports labels already used in parent workflow.\n\n**Example:**\n\n\n def list = [\"foo\"]\n cycle:\n for (element in list) {\n cycle: // confusing label repeat\n element.chars().forEach {\n }\n }\n\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "id": "Groovy/Probable bugs", + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -44508,29 +41340,26 @@ ] }, { - "id": "GroovyLabeledStatement", + "id": "GroovyEmptyStatementBody", "shortDescription": { - "text": "Labeled statement inspection" + "text": "Statement with empty body" }, "fullDescription": { - "text": "Reports labels already used in parent workflow. Example: 'def list = [\"foo\"]\ncycle:\nfor (element in list) {\n cycle: // confusing label repeat\n element.chars().forEach {\n }\n}'", - "markdown": "Reports labels already used in parent workflow.\n\n**Example:**\n\n\n def list = [\"foo\"]\n cycle:\n for (element in list) {\n cycle: // confusing label repeat\n element.chars().forEach {\n }\n }\n\n" + "text": "Reports 'if', 'while', 'do' or 'for' statements with empty bodies. While occasionally intended, this construction is confusing, and often the result of a typo. Example: 'if (condition) {}\nwhile(true){}'", + "markdown": "Reports `if`, `while`, `do` or `for` statements with empty bodies. While occasionally intended, this construction is confusing, and often the result of a typo.\n\n**Example:**\n\n\n if (condition) {}\n while(true){}\n\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Groovy/Probable bugs", - "index": 43, + "id": "Groovy/Potentially confusing code constructs", + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44554,17 +41383,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -44588,17 +41414,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -44622,17 +41445,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44656,17 +41476,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -44690,17 +41507,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Annotations", - "index": 83, + "index": 91, "toolComponent": { "name": "QDJVM" } @@ -44724,17 +41538,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -44758,17 +41569,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Annotations", - "index": 83, + "index": 91, "toolComponent": { "name": "QDJVM" } @@ -44792,17 +41600,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -44826,17 +41631,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -44860,17 +41662,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Method metrics", - "index": 111, + "index": 121, "toolComponent": { "name": "QDJVM" } @@ -44894,17 +41693,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -44928,17 +41724,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44962,17 +41755,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -44996,17 +41786,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45030,17 +41817,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -45064,17 +41848,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Groovy/Annotations", - "index": 83, + "index": 91, "toolComponent": { "name": "QDJVM" } @@ -45098,17 +41879,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Data flow", - "index": 145, + "index": 149, "toolComponent": { "name": "QDJVM" } @@ -45132,17 +41910,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -45166,17 +41941,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Method metrics", - "index": 111, + "index": 121, "toolComponent": { "name": "QDJVM" } @@ -45200,17 +41972,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Data flow", - "index": 145, + "index": 149, "toolComponent": { "name": "QDJVM" } @@ -45234,17 +42003,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Method metrics", - "index": 111, + "index": 121, "toolComponent": { "name": "QDJVM" } @@ -45268,17 +42034,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Annotations", - "index": 83, + "index": 91, "toolComponent": { "name": "QDJVM" } @@ -45302,17 +42065,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -45336,17 +42096,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45370,17 +42127,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -45404,17 +42158,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -45438,17 +42189,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -45472,17 +42220,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -45506,17 +42251,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -45540,17 +42282,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Data flow", - "index": 145, + "index": 149, "toolComponent": { "name": "QDJVM" } @@ -45574,17 +42313,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45608,17 +42344,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Data flow", - "index": 145, + "index": 149, "toolComponent": { "name": "QDJVM" } @@ -45642,17 +42375,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45676,17 +42406,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -45710,17 +42437,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45744,17 +42468,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -45778,17 +42499,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45812,17 +42530,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -45846,17 +42561,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -45880,17 +42592,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -45914,17 +42623,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -45948,17 +42654,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -45982,17 +42685,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -46016,17 +42716,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -46050,17 +42747,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Other", - "index": 154, + "index": 159, "toolComponent": { "name": "QDJVM" } @@ -46084,17 +42778,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -46118,17 +42809,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -46140,29 +42828,26 @@ ] }, { - "id": "ChangeToMethod", + "id": "UnnecessaryQualifiedReference", "shortDescription": { - "text": "Operator invocation can be replaced with method call" + "text": "Unnecessary qualified reference" }, "fullDescription": { - "text": "Reports operator invocations that can be replaced with method calls. Example: 'a + b' After the quick-fix is applied: 'a.plus(b)'", - "markdown": "Reports operator invocations that can be replaced with method calls.\n\n**Example:**\n\n\n a + b\n\nAfter the quick-fix is applied:\n\n\n a.plus(b)\n" + "text": "Reports fully qualified references, which can be replaced with import. Example: 'def swingBuilder = new groovy.swing.SwingBuilder()' After the quick-fix is applied: 'import groovy.swing.SwingBuilder\n \n def swingBuilder = new SwingBuilder()'", + "markdown": "Reports fully qualified references, which can be replaced with import.\n\n**Example:**\n\n\n def swingBuilder = new groovy.swing.SwingBuilder()\n\nAfter the quick-fix is applied:\n\n\n import groovy.swing.SwingBuilder\n \n def swingBuilder = new SwingBuilder()\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Groovy/Style", - "index": 69, + "id": "Groovy/Potentially confusing code constructs", + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -46174,29 +42859,26 @@ ] }, { - "id": "UnnecessaryQualifiedReference", + "id": "ChangeToMethod", "shortDescription": { - "text": "Unnecessary qualified reference" + "text": "Operator invocation can be replaced with method call" }, "fullDescription": { - "text": "Reports fully qualified references, which can be replaced with import. Example: 'def swingBuilder = new groovy.swing.SwingBuilder()' After the quick-fix is applied: 'import groovy.swing.SwingBuilder\n \n def swingBuilder = new SwingBuilder()'", - "markdown": "Reports fully qualified references, which can be replaced with import.\n\n**Example:**\n\n\n def swingBuilder = new groovy.swing.SwingBuilder()\n\nAfter the quick-fix is applied:\n\n\n import groovy.swing.SwingBuilder\n \n def swingBuilder = new SwingBuilder()\n" + "text": "Reports operator invocations that can be replaced with method calls. Example: 'a + b' After the quick-fix is applied: 'a.plus(b)'", + "markdown": "Reports operator invocations that can be replaced with method calls.\n\n**Example:**\n\n\n a + b\n\nAfter the quick-fix is applied:\n\n\n a.plus(b)\n" }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { - "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "id": "Groovy/Style", + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -46220,17 +42902,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -46254,17 +42933,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -46288,17 +42964,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -46322,17 +42995,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Assignment issues", - "index": 94, + "index": 101, "toolComponent": { "name": "QDJVM" } @@ -46356,17 +43026,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -46390,17 +43057,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -46424,17 +43088,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -46458,17 +43119,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -46492,17 +43150,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -46526,17 +43181,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Validity issues", - "index": 156, + "index": 162, "toolComponent": { "name": "QDJVM" } @@ -46560,17 +43212,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -46594,17 +43243,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -46628,17 +43274,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -46662,17 +43305,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Data flow", - "index": 145, + "index": 149, "toolComponent": { "name": "QDJVM" } @@ -46696,17 +43336,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -46730,17 +43367,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -46764,17 +43398,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -46798,17 +43429,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -46832,17 +43460,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -46866,17 +43491,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -46900,17 +43522,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -46934,17 +43553,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -46968,17 +43584,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -47002,17 +43615,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Method metrics", - "index": 111, + "index": 121, "toolComponent": { "name": "QDJVM" } @@ -47036,17 +43646,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -47070,17 +43677,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Validity issues", - "index": 156, + "index": 162, "toolComponent": { "name": "QDJVM" } @@ -47104,17 +43708,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -47138,17 +43739,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -47172,17 +43770,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -47206,17 +43801,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Style", - "index": 69, + "index": 77, "toolComponent": { "name": "QDJVM" } @@ -47240,17 +43832,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -47274,17 +43863,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Naming conventions", - "index": 35, + "index": 36, "toolComponent": { "name": "QDJVM" } @@ -47308,17 +43894,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -47342,17 +43925,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -47376,17 +43956,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -47410,17 +43987,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -47444,17 +44018,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Method metrics", - "index": 111, + "index": 121, "toolComponent": { "name": "QDJVM" } @@ -47478,17 +44049,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Other", - "index": 154, + "index": 159, "toolComponent": { "name": "QDJVM" } @@ -47512,17 +44080,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Potentially confusing code constructs", - "index": 88, + "index": 96, "toolComponent": { "name": "QDJVM" } @@ -47546,17 +44111,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -47580,17 +44142,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -47614,17 +44173,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -47648,17 +44204,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -47682,17 +44235,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Probable bugs", - "index": 43, + "index": 50, "toolComponent": { "name": "QDJVM" } @@ -47716,17 +44266,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -47750,17 +44297,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Threading issues", - "index": 65, + "index": 72, "toolComponent": { "name": "QDJVM" } @@ -47784,17 +44328,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Error handling", - "index": 90, + "index": 98, "toolComponent": { "name": "QDJVM" } @@ -47818,17 +44359,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Declaration redundancy", - "index": 159, + "index": 166, "toolComponent": { "name": "QDJVM" } @@ -47852,17 +44390,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -47886,17 +44421,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Groovy/Control flow issues", - "index": 66, + "index": 73, "toolComponent": { "name": "QDJVM" } @@ -47917,7 +44449,7 @@ }, { "name": "org.jetbrains.idea.maven", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "MavenDuplicatePluginInspection", @@ -47932,17 +44464,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Maven", - "index": 22, + "index": 23, "toolComponent": { "name": "QDJVM" } @@ -47966,17 +44495,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Maven", - "index": 22, + "index": 23, "toolComponent": { "name": "QDJVM" } @@ -48000,17 +44526,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Maven", - "index": 22, + "index": 23, "toolComponent": { "name": "QDJVM" } @@ -48034,17 +44557,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Maven", - "index": 22, + "index": 23, "toolComponent": { "name": "QDJVM" } @@ -48068,17 +44588,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Maven", - "index": 22, + "index": 23, "toolComponent": { "name": "QDJVM" } @@ -48102,17 +44619,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Maven", - "index": 22, + "index": 23, "toolComponent": { "name": "QDJVM" } @@ -48133,7 +44647,7 @@ }, { "name": "com.intellij.database", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "MysqlLoadDataPathInspection", @@ -48148,17 +44662,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "MySQL", - "index": 23, + "index": 24, "toolComponent": { "name": "QDJVM" } @@ -48182,17 +44693,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48216,17 +44724,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48250,17 +44755,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48284,17 +44786,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48318,17 +44817,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48352,17 +44848,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48386,17 +44879,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48420,17 +44910,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48454,17 +44941,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Oracle", - "index": 116, + "index": 126, "toolComponent": { "name": "QDJVM" } @@ -48488,17 +44972,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48522,17 +45003,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48556,17 +45034,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "MongoJS", - "index": 124, + "index": 133, "toolComponent": { "name": "QDJVM" } @@ -48590,17 +45065,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "MongoJS", - "index": 124, + "index": 133, "toolComponent": { "name": "QDJVM" } @@ -48624,17 +45096,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48658,17 +45127,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48692,17 +45158,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48726,17 +45189,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48760,17 +45220,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48794,17 +45251,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "MongoJS", - "index": 124, + "index": 133, "toolComponent": { "name": "QDJVM" } @@ -48828,17 +45282,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48862,17 +45313,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48896,17 +45344,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -48930,17 +45375,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "PostgreSQL", - "index": 142, + "index": 147, "toolComponent": { "name": "QDJVM" } @@ -48964,17 +45406,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL server", - "index": 144, + "index": 148, "toolComponent": { "name": "QDJVM" } @@ -48998,17 +45437,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49032,17 +45468,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49066,17 +45499,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49100,17 +45530,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49134,17 +45561,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Oracle", - "index": 116, + "index": 126, "toolComponent": { "name": "QDJVM" } @@ -49168,17 +45592,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49202,17 +45623,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49236,17 +45654,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49270,17 +45685,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49304,17 +45716,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49338,17 +45747,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49372,17 +45778,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49406,17 +45809,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "MySQL", - "index": 23, + "index": 24, "toolComponent": { "name": "QDJVM" } @@ -49440,17 +45840,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49474,17 +45871,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49508,17 +45902,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49542,17 +45933,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49576,17 +45964,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49610,17 +45995,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49644,17 +46026,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49678,17 +46057,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49712,17 +46088,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49746,17 +46119,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49780,17 +46150,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49814,17 +46181,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49848,17 +46212,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49882,17 +46243,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49916,17 +46274,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -49950,17 +46305,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Oracle", - "index": 116, + "index": 126, "toolComponent": { "name": "QDJVM" } @@ -49984,17 +46336,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50018,17 +46367,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50052,17 +46398,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50086,17 +46429,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50120,17 +46460,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50154,17 +46491,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50188,17 +46522,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "SQL server", - "index": 144, + "index": 148, "toolComponent": { "name": "QDJVM" } @@ -50222,17 +46553,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50256,17 +46584,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "SQL", - "index": 42, + "index": 48, "toolComponent": { "name": "QDJVM" } @@ -50287,7 +46612,7 @@ }, { "name": "com.intellij.javaee.jpa", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "JpaObjectClassSignatureInspection", @@ -50302,17 +46627,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50336,17 +46658,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50370,17 +46689,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50404,17 +46720,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50438,17 +46751,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50472,17 +46782,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50506,17 +46813,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50540,17 +46844,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50574,17 +46875,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50608,17 +46906,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50642,17 +46937,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50676,17 +46968,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50710,17 +46999,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50744,17 +47030,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50778,17 +47061,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JPA", - "index": 28, + "index": 29, "toolComponent": { "name": "QDJVM" } @@ -50809,7 +47089,7 @@ }, { "name": "com.intellij", - "version": "222.4502.199", + "version": "223.8394.71", "rules": [ { "id": "HtmlUnknownBooleanAttribute", @@ -50824,17 +47104,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -50858,17 +47135,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -50892,17 +47166,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -50926,17 +47197,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -50960,17 +47228,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -50994,17 +47259,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "TYPO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "TYPO" } }, "relationships": [ { "target": { "id": "Proofreading", - "index": 84, + "index": 92, "toolComponent": { "name": "QDJVM" } @@ -51028,17 +47290,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51062,17 +47321,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51096,17 +47352,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51130,17 +47383,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51164,17 +47414,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51198,17 +47445,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51225,24 +47469,21 @@ "text": "TODO comment" }, "fullDescription": { - "text": "Reports TODO comments in your code. You can configure the format for TODO comments in Settings | Editor | TODO. Since syntax highlighting for TODO comments is already provided, this inspection is intended for use in batch mode or on a continuous integration server.", - "markdown": "Reports **TODO** comments in your code.\n\nYou can configure the format for **TODO** comments in [Settings \\| Editor \\| TODO](settings://preferences.toDoOptions).\nSince syntax highlighting for **TODO** comments is already provided,\nthis inspection is intended for use in batch mode or on a continuous integration server." + "text": "Reports TODO comments in your code. You can configure the format for TODO comments in Settings | Editor | TODO. Enable the Only warn on TODO comments without any details option to only warn on empty TODO comments, that don't provide any description on the task that should be done. Disable to report all TODO comments.", + "markdown": "Reports **TODO** comments in your code.\n\nYou can configure the format for **TODO** comments in [Settings \\| Editor \\| TODO](settings://preferences.toDoOptions).\n\nEnable the **Only warn on TODO comments without any details** option to only warn on empty TODO comments, that\ndon't provide any description on the task that should be done. Disable to report all TODO comments." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -51266,17 +47507,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -51300,17 +47538,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51334,17 +47569,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -51368,17 +47600,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -51402,17 +47631,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -51436,17 +47662,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51470,17 +47693,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Internationalization", - "index": 118, + "index": 128, "toolComponent": { "name": "QDJVM" } @@ -51497,24 +47717,21 @@ "text": "Ignore file duplicates" }, "fullDescription": { - "text": "Reports duplicate entries (patters) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed. Example: # Output directories\n /out/\n /target/\n /out/", - "markdown": "Reports duplicate entries (patters) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed.\n\nExample:\n\n```\n # Output directories\n /out/\n /target/\n /out/\n```" + "text": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed. Example: # Output directories\n /out/\n /target/\n /out/", + "markdown": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed.\n\nExample:\n\n```\n # Output directories\n /out/\n /target/\n /out/\n```" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Version control", - "index": 123, + "index": 132, "toolComponent": { "name": "QDJVM" } @@ -51538,17 +47755,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -51572,17 +47786,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -51606,17 +47817,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Structural search", - "index": 127, + "index": 138, "toolComponent": { "name": "QDJVM" } @@ -51640,17 +47848,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51674,17 +47879,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51708,17 +47910,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51742,17 +47941,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "RELAX NG", - "index": 133, + "index": 143, "toolComponent": { "name": "QDJVM" } @@ -51776,17 +47972,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -51810,17 +48003,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51844,17 +48034,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -51878,17 +48065,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -51912,17 +48096,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51946,17 +48127,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -51980,17 +48158,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52014,17 +48189,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -52048,17 +48220,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -52082,17 +48251,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -52116,17 +48282,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52150,17 +48313,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -52184,17 +48344,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -52218,17 +48375,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52252,17 +48406,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -52286,17 +48437,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52320,17 +48468,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52354,17 +48499,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -52388,17 +48530,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -52422,17 +48561,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -52456,17 +48592,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -52490,17 +48623,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52524,17 +48654,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -52558,17 +48685,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XML", - "index": 85, + "index": 93, "toolComponent": { "name": "QDJVM" } @@ -52592,17 +48716,45 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlWrongAttributeValue", + "shortDescription": { + "text": "Wrong attribute value" + }, + "fullDescription": { + "text": "Reports an incorrect HTML attribute value.", + "markdown": "Reports an incorrect HTML attribute value." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52626,17 +48778,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Internationalization", - "index": 118, + "index": 128, "toolComponent": { "name": "QDJVM" } @@ -52660,17 +48809,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -52694,17 +48840,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52728,17 +48871,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -52762,17 +48902,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -52796,17 +48933,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -52830,17 +48964,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSON and JSON5", - "index": 107, + "index": 117, "toolComponent": { "name": "QDJVM" } @@ -52864,17 +48995,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -52898,17 +49026,14 @@ "enabled": true, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -52932,17 +49057,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RELAX NG", - "index": 133, + "index": 143, "toolComponent": { "name": "QDJVM" } @@ -52966,17 +49088,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "RegExp", - "index": 80, + "index": 88, "toolComponent": { "name": "QDJVM" } @@ -52997,7 +49116,7 @@ }, { "name": "com.intellij.java-i18n", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "UnusedMessageFormatParameter", @@ -53012,17 +49131,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -53046,17 +49162,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -53080,17 +49193,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java/Properties files", - "index": 135, + "index": 144, "toolComponent": { "name": "QDJVM" } @@ -53114,10 +49224,7 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ @@ -53148,10 +49255,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -53182,10 +49286,7 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -53216,17 +49317,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -53243,17 +49341,14 @@ "text": "Duplicate string literal" }, "fullDescription": { - "text": "Reports all string literals that are replicated unchanged throughout the project. Example: 'class C1 { String CONST1 = \"duplicate string\"; }\n class C2 { String CONST2 = \"duplicate string\"; }' Configure the inspection: Use the Min string length field to set the minimal string length required to detect duplicates. Use the Ignore @PropertyKey expressions option to ignore strings passed as arguments to methods annotated with 'org.jetbrains.annotations.PropertyKey'.", - "markdown": "Reports all string literals that are replicated unchanged throughout the project.\n\nExample:\n\n\n class C1 { String CONST1 = \"duplicate string\"; }\n class C2 { String CONST2 = \"duplicate string\"; }\n\nConfigure the inspection:\n\n* Use the **Min string length** field to set the minimal string length required to detect duplicates.\n* Use the **Ignore @PropertyKey expressions** option to ignore strings passed as arguments to methods annotated with `org.jetbrains.annotations.PropertyKey`." + "text": "Reports string literals that are replicated unchanged throughout the project. Two quick-fixes are provided. One to introduce a constant for a duplicated string and use it throughout the project, and one to show the location of all the duplicates of a particular string literal. Example: 'class C1 { String CONST1 = \"duplicate string\"; }\n class C2 { String CONST2 = \"duplicate string\"; }' Configure the inspection: Use the Min string length field to set the minimal string length required to detect duplicates. Use the Ignore @PropertyKey expressions option to ignore strings passed as arguments to methods annotated with 'org.jetbrains.annotations.PropertyKey'.", + "markdown": "Reports string literals that are replicated unchanged throughout the project. Two quick-fixes are provided. One to introduce a constant for a duplicated string and use it throughout the project, and one to show the location of all the duplicates of a particular string literal.\n\nExample:\n\n\n class C1 { String CONST1 = \"duplicate string\"; }\n class C2 { String CONST2 = \"duplicate string\"; }\n\nConfigure the inspection:\n\n* Use the **Min string length** field to set the minimal string length required to detect duplicates.\n* Use the **Ignore @PropertyKey expressions** option to ignore strings passed as arguments to methods annotated with `org.jetbrains.annotations.PropertyKey`." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ @@ -53280,8 +49375,590 @@ "isComprehensive": false }, { + "name": "com.intellij.reactivestreams", + "version": "223.8394", + "rules": [ + { + "id": "ReactiveStreamsUnusedPublisher", + "shortDescription": { + "text": "Unused publisher" + }, + "fullDescription": { + "text": "Reports unused 'Publisher' instances. To use an operator (a method of Mono/Flux/Flowable object that returns a Mono/Flux/Flowable) that produces a new 'Publisher' instance, you must subscribe to the created 'Publisher' via 'subscribe()'. Using a factory (for example, 'Mono.just()') without subscribing to the returned 'Publisher', creates an object that is never used and is treated as unnecessary memory allocation. For example, 'Mono.just(1, 2, 3).map(i -> i + 3)' won't be executed unless you subscribe to this 'Publisher', or unless you produce a new 'Publisher' by applying operators and subscribe to it. Example: Unused 'Flux' instance: 'Flux.just(1, 2, 3);' A 'Flux' instance used by consumer: 'Flux.just(1, 2, 3).subscribe(System.out::println);' Calls to methods annotated with Error Prone's or AssertJ's '@CanIgnoreReturnValue' annotation are not reported. New in 2019.3", + "markdown": "Reports unused `Publisher` instances.\n\n\nTo use an operator (a method of Mono/Flux/Flowable object that returns a Mono/Flux/Flowable) that produces a new `Publisher`\ninstance,\nyou must subscribe to the created `Publisher` via `subscribe()`.\n\n\nUsing a factory (for example, `Mono.just()`) without subscribing to the returned `Publisher`,\ncreates an object that is never used and is treated as unnecessary memory allocation.\n\n\nFor example, `Mono.just(1, 2, 3).map(i -> i + 3)` won't be executed unless you subscribe to this `Publisher`,\nor unless you produce a new `Publisher` by applying operators and subscribe to it.\n\n**Example:**\n\nUnused `Flux` instance:\n\n\n Flux.just(1, 2, 3);\n\nA `Flux` instance used by consumer:\n\n\n Flux.just(1, 2, 3).subscribe(System.out::println);\n\nCalls to methods annotated with Error Prone's or AssertJ's `@CanIgnoreReturnValue` annotation are not reported.\n\nNew in 2019.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Common", + "index": 38, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReactiveStreamsThrowInOperator", + "shortDescription": { + "text": "Throw statement in Reactive operator" + }, + "fullDescription": { + "text": "Reports 'throw' expressions in the Reactor/RxJava operator code. Throwing exceptions from a Reactor/RxJava operator indicates a possible problem, because you can return a \"Reactive-like\" error: 'Mono.error()' or 'Flowable.error()' from 'flatMap()', or call 'sink.error()' from the Reactor's 'handle()' operator. Also, Reactor factory methods allow returning checked exceptions without any errors, while throwing such exceptions without the 'Exceptions' class leads to a compilation error. Example: 'Flux.just(1, 2, 3).flatMap(i -> {\n throw new RuntimeException();\n })' After the quick-fix is applied: 'Flux.just(1, 2, 3).flatMap(i -> {\n return Flux.error(new RuntimeException());\n })' New in 2019.3", + "markdown": "Reports `throw` expressions in the Reactor/RxJava operator code.\n\nThrowing exceptions from a Reactor/RxJava operator indicates a possible problem, because you can return a \"Reactive-like\" error:\n`Mono.error()` or `Flowable.error()` from `flatMap()`,\nor call `sink.error()` from the Reactor's `handle()` operator.\n\n\nAlso, Reactor factory methods allow returning checked exceptions without any errors, while throwing such exceptions without\nthe `Exceptions` class leads to a compilation error.\n\n**Example:**\n\n\n Flux.just(1, 2, 3).flatMap(i -> {\n throw new RuntimeException();\n })\n\nAfter the quick-fix is applied:\n\n\n Flux.just(1, 2, 3).flatMap(i -> {\n return Flux.error(new RuntimeException());\n })\n\nNew in 2019.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Common", + "index": 38, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReactiveStreamsPublisherImplementation", + "shortDescription": { + "text": "Class implements Publisher" + }, + "fullDescription": { + "text": "Reports classes that directly implement the 'Publisher' interface. Consider using static generators from RxJava, Reactor or Mutiny, for example: 'Flux.just()', 'Flux.create()', 'Flux.generate()', 'Flux.from()' 'Mono.create()', 'Mono.from()', 'Mono.just()' 'Flowable.just()', 'Flowable.from()' 'Maybe.just()', 'Maybe.from()' 'Multi.createFrom()', 'Multi.createBy()' 'Uni.createFrom()'", + "markdown": "Reports classes that directly implement the `Publisher` interface.\n\nConsider using static generators from RxJava, Reactor or Mutiny, for example:\n\n* `Flux.just()`, `Flux.create()`, `Flux.generate()`, `Flux.from()`\n* `Mono.create()`, `Mono.from()`, `Mono.just()`\n* `Flowable.just()`, `Flowable.from()`\n* `Maybe.just()`, `Maybe.from()`\n* `Multi.createFrom()`, `Multi.createBy()`\n* `Uni.createFrom()`" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Common", + "index": 38, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReactiveStreamsNullableInLambdaInTransform", + "shortDescription": { + "text": "Return null or something nullable from a lambda in transformation method" + }, + "fullDescription": { + "text": "Reports transform operations that may return 'null' inside a Reactive Stream chain. Reactive Streams don't support nullable values, which causes such code to fail. The quick-fix suggests replacing 'map()' with 'mapNotNull', which omits exceptions. Example: 'repository.findWithTailableCursorBy()\n .map(e -> (Person)null)\n .doOnNext(System.out::println)' After the quick-fix is applied: 'repository.findWithTailableCursorBy()\n .mapNotNull(e -> (Person)null)\n .doOnNext(System.out::println)' New in 2019.3", + "markdown": "Reports transform operations that may return `null` inside a Reactive Stream chain.\n\n\nReactive Streams don't support nullable values, which causes such code to fail.\nThe quick-fix suggests replacing `map()` with `mapNotNull`, which omits exceptions.\n\n**Example:**\n\n repository.findWithTailableCursorBy()\n .map(e -> (Person)null)\n .doOnNext(System.out::println)\n\nAfter the quick-fix is applied:\n\n repository.findWithTailableCursorBy()\n .mapNotNull(e -> (Person)null)\n .doOnNext(System.out::println)\n\nNew in 2019.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Common", + "index": 38, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReactiveStreamsTooLongSameOperatorsChain", + "shortDescription": { + "text": "Too long same methods chain" + }, + "fullDescription": { + "text": "Reports long Reactive Streams transformation chains. Each operator method call, such as 'map()' or 'filter()', creates some objects for those operators. Calling a long chain of operators on each subscription, for each stream element, may cause performance overhead. To avoid it, combine a long chain of calls into one operator call wherever possible. Example: 'Flux.just(1, 2, 3)\n .map(it -> it + 1)\n .map(it -> it + 2)\n .map(it -> it + 3)' After the quick-fix is applied: 'Flux.just(1, 2, 3)\n .map(it -> it + 1 + 2 + 3)' New in 2019.3", + "markdown": "Reports long Reactive Streams transformation chains.\n\nEach operator method call, such as `map()` or `filter()`, creates some objects for those operators.\nCalling a long chain of operators on each subscription, for each stream element, may cause performance overhead.\nTo avoid it, combine a long chain of calls into one operator call wherever possible.\n\n**Example:**\n\n\n Flux.just(1, 2, 3)\n .map(it -> it + 1)\n .map(it -> it + 2)\n .map(it -> it + 3)\n\nAfter the quick-fix is applied:\n\n\n Flux.just(1, 2, 3)\n .map(it -> it + 1 + 2 + 3)\n\nNew in 2019.3" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Common", + "index": 38, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CallingSubscribeInNonBlockingScope", + "shortDescription": { + "text": "Calling 'subscribe' in \"reactive\" methods" + }, + "fullDescription": { + "text": "Reports 'subscribe()' calls in \"reactive\" methods. Methods returning a 'Publisher' type (including 'Flux' and 'Mono') should not call the 'subscribe()' method directly because it can break the reactive call chain. Instead of using 'subscribe()', consider using composition operators like 'flatMap()', 'zip()', 'then()', and so on. Example: 'Flux<String> stringFlux(){\n Flux<String> flux = Flux.just(\"abc\");\n flux.subscribe(); // <- blocking 'subscribe' call in non-blocking context\n return flux;\n }'", + "markdown": "Reports `subscribe()` calls in \"reactive\" methods.\n\nMethods returning a `Publisher` type (including `Flux` and `Mono`)\nshould not call the `subscribe()` method directly because it can break the reactive call chain.\n\nInstead of using `subscribe()`, consider using composition operators like `flatMap()`,\n`zip()`, `then()`, and so on.\n\n**Example:**\n\n\n Flux<String> stringFlux(){\n Flux<String> flux = Flux.just(\"abc\");\n flux.subscribe(); // <- blocking 'subscribe' call in non-blocking context\n return flux;\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Reactor", + "index": 136, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "MutinyCallingSubscribeInNonBlockingScope", + "shortDescription": { + "text": "Calling 'subscribe' in \"reactive\" methods" + }, + "fullDescription": { + "text": "Reports 'subscribe()' calls in \"reactive\" methods. Methods returning a publisher (including 'Uni' and 'Multi') should not call the 'subscribe()' method directly because it can break the reactive call chain. Instead of using 'subscribe()', consider using composition operators like 'flatMap()', 'merge()', and so on. Example: 'Multi<String> stringMulti(){\n Multi<String> multi = Multi.createFrom().item(\"abc\");\n multi.subscribe(); // <- blocking 'subscribe' call in non-blocking context\n return multi;\n }'", + "markdown": "Reports `subscribe()` calls in \"reactive\" methods.\n\nMethods returning a publisher (including `Uni` and `Multi`)\nshould not call the `subscribe()` method directly because it can break the reactive call chain.\n\nInstead of using `subscribe()`, consider using composition operators like `flatMap()`,\n`merge()`, and so on.\n\n**Example:**\n\n\n Multi<String> stringMulti(){\n Multi<String> multi = Multi.createFrom().item(\"abc\");\n multi.subscribe(); // <- blocking 'subscribe' call in non-blocking context\n return multi;\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Mutiny", + "index": 160, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReactiveStreamsSubscriberImplementation", + "shortDescription": { + "text": "Class implements Subscriber" + }, + "fullDescription": { + "text": "Reports classes that directly implement the 'Subscriber' interface. Consider using static generators from RxJava, Reactor or Mutiny, for example: 'Flux.just()', 'Flux.create()', 'Flux.generate()', 'Flux.from()' 'Mono.create()', 'Mono.from()', 'Mono.just()' 'Flowable.just()', 'Flowable.from()' 'Maybe.just()', 'Maybe.from()' 'Multi.createFrom()', 'Multi.createBy()' 'Uni.createFrom()'", + "markdown": "Reports classes that directly implement the `Subscriber` interface.\n\nConsider using static generators from RxJava, Reactor or Mutiny, for example:\n\n* `Flux.just()`, `Flux.create()`, `Flux.generate()`, `Flux.from()`\n* `Mono.create()`, `Mono.from()`, `Mono.just()`\n* `Flowable.just()`, `Flowable.from()`\n* `Maybe.just()`, `Maybe.from()`\n* `Multi.createFrom()`, `Multi.createBy()`\n* `Uni.createFrom()`" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Common", + "index": 38, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnfinishedStepVerifier", + "shortDescription": { + "text": "Unfinished StepVerifier" + }, + "fullDescription": { + "text": "Reports missing 'StepVerifier' terminal calls. Initiating 'Publisher' subscriptions and assertions requires calling a terminal verification method, such as 'verify()', 'verifyComplete()', and so on. Example: 'StepVerifier.create(Flux.just(1,2,3)).expectNext(1);' After the quick-fix is applied: 'StepVerifier.create(Flux.just(1,2,3)).expectNext(1).verifyComplete();'", + "markdown": "Reports missing `StepVerifier` terminal calls.\n\n\nInitiating `Publisher` subscriptions and assertions requires calling a terminal verification method,\nsuch as `verify()`, `verifyComplete()`, and so on.\n\n**Example:**\n\n\n StepVerifier.create(Flux.just(1,2,3)).expectNext(1);\n\nAfter the quick-fix is applied:\n\n\n StepVerifier.create(Flux.just(1,2,3)).expectNext(1).verifyComplete();\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Reactor", + "index": 136, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReactorAutomaticDebugger", + "shortDescription": { + "text": "Unnecessary debug initialization" + }, + "fullDescription": { + "text": "Reports redundant 'ReactorDebugAgent.init()' calls. IDE can automatically initialize the Reactor Debug mode, so users don't need to call 'ReactorDebugAgent.init()' or 'Hooks.onOperatorDebug()' explicitly. Also, calling both 'ReactorDebugAgent.init()' and 'Hooks.onOperatorDebug()' causes doubled debugging stack frames generated by Reactor.", + "markdown": "Reports redundant `ReactorDebugAgent.init()` calls.\n\n\nIDE can automatically initialize the Reactor Debug mode, so users don't need to call `ReactorDebugAgent.init()` or\n`Hooks.onOperatorDebug()` explicitly.\n\nAlso, calling both `ReactorDebugAgent.init()` and `Hooks.onOperatorDebug()` causes doubled debugging stack frames\ngenerated by Reactor." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Reactive Streams/Reactor", + "index": 136, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.jetbrains.plugins.gradle", + "version": "223.8394", + "rules": [ + { + "id": "ForeignDelegate", + "shortDescription": { + "text": "Possibly misplaced call to Gradle method" + }, + "fullDescription": { + "text": "Detects possibly misplaced calls to Gradle methods. Gradle buildscripts comprise a lot of nested closures, making the code structure similar to a markup language. Due to the behavior of Groovy, the methods that you can write in the outer closures are also available in the inner ones. Such methods may have no meaning when written outside their scope. Sometimes it may be hard to detect this situation. This inspection aims to detect such methods. Example: 'repositories {\n // the delegate of 'repositories' has method 'exclusiveContent', which can be written here\n maven {\n // the delegate of 'maven' has method 'content', which can be written here\n // but 'exclusiveContent' is also available\n exclusiveContent {} // reports 'exclusiveContent'\n }\n}'", + "markdown": "Detects possibly misplaced calls to Gradle methods.\nGradle buildscripts comprise a lot of nested closures, making the code structure similar to a markup language. Due to the behavior of Groovy, the methods that you can write in the outer closures are also available in the inner ones. Such methods may have no meaning when written outside their scope. \nSometimes it may be hard to detect this situation. This inspection aims to detect such methods.\n\n**Example:**\n\n\n repositories {\n // the delegate of 'repositories' has method 'exclusiveContent', which can be written here\n maven {\n // the delegate of 'maven' has method 'content', which can be written here\n // but 'exclusiveContent' is also available\n exclusiveContent {} // reports 'exclusiveContent'\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Probable bugs", + "index": 43, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IncorrectPluginDslStructure", + "shortDescription": { + "text": "Plugin DSL structure" + }, + "fullDescription": { + "text": "Detects disallowed statements before 'plugins {}' block. Due to the limitations of Gradle Plugin DSL, only a restricted set of Groovy statements is available before ''plugins {}'' block. The only options are ''buildscript {}'', ''pluginManagement {}'' and other ''plugins {}''. See Gradle documentation Example: 'import foo.bar.Baz\nplugins {} // reports 'plugins'\nplugins {\n foo() // reporst 'foo'\n id 'java'\n}'", + "markdown": "Detects disallowed statements before 'plugins {}' block.\nDue to the limitations of Gradle Plugin DSL, only a restricted set of Groovy statements is available before '`plugins {}`' block. The only options are '`buildscript {}`', '`pluginManagement {}`' and other '`plugins {}`'. \n[See Gradle documentation](https://docs.gradle.org/current/userguide/plugins.html#plugins_dsl_limitations)\n\n**Example:**\n\n\n import foo.bar.Baz\n plugins {} // reports 'plugins'\n plugins {\n foo() // reporst 'foo'\n id 'java'\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Validity issues", + "index": 46, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "DependencyNotationArgument", + "shortDescription": { + "text": "Unrecognized dependency notation" + }, + "fullDescription": { + "text": "Detects incorrect dependency notations. The following types/formats are supported by Gradle: Instances of 'Dependency'; 'String' or 'CharSequence' values, for example ''org.gradle:gradle-core:1.0''; Maps, for example '[group: 'org.gradle', name: 'gradle-core', version: '1.0']'; FileCollections, for example 'files('some.jar', 'someOther.jar')'; Projects, for example 'project(':some:project:path')'; 'ClassPathNotation', for example 'gradleApi()'; Lists of dependency notations, for example '['org.gradle:gradle-core:1.0']'; (Gradle 7.0+) Version catalog accessors, for example 'libs.groovy.core'. See Gradle documentation Example: 'dependencies {\n implementation(1) // reports '1'\n}'", + "markdown": "Detects incorrect dependency notations.\nThe following types/formats are supported by Gradle:\n\n* Instances of `Dependency`;\n* `String` or `CharSequence` values, for example `'org.gradle:gradle-core:1.0'`;\n* Maps, for example `[group: 'org.gradle', name: 'gradle-core', version: '1.0']`;\n* FileCollections, for example `files('some.jar', 'someOther.jar')`;\n* Projects, for example `project(':some:project:path')`;\n* `ClassPathNotation`, for example `gradleApi()`;\n* Lists of dependency notations, for example `['org.gradle:gradle-core:1.0']`;\n* (Gradle 7.0+) [Version catalog accessors](https://docs.gradle.org/current/userguide/platforms.html), for example `libs.groovy.core`.\n\n[See Gradle documentation](https://docs.gradle.org/current/userguide/declaring_dependencies.html#sec:dependency-types)\n\n**Example:**\n\n\n dependencies {\n implementation(1) // reports '1'\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Probable bugs", + "index": 43, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "MultipleRepositoryUrls", + "shortDescription": { + "text": "Multiple repository urls" + }, + "fullDescription": { + "text": "Reports the usage of multiple URLs per repository (maven or ivy) block. The problem is that only one URL can be picked up for the repository, the other URLs will be ignored.", + "markdown": "Reports the usage of multiple URLs per repository (maven or ivy) block. The problem is that only one URL can be picked up for the repository, the other URLs will be ignored." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Probable bugs", + "index": 43, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "BintrayPublishingPlugin", + "shortDescription": { + "text": "Bintray publishing plugin may stop working on May 1st, 2021" + }, + "fullDescription": { + "text": "Detects usages of Gradle plugin 'com.jfrog.bintray'. The plugin is used for publishing build results to Bintray. Publishing to Bintray service is disabled.", + "markdown": "Detects usages of Gradle plugin `com.jfrog.bintray`.\nThe plugin is used for publishing build results to Bintray.\nPublishing to\n[Bintray](https://www.jfrog.com/confluence/display/BT/Welcome+to+JFrog+Bintray) service is disabled." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Probable bugs", + "index": 43, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "DeprecatedConfigurations", + "shortDescription": { + "text": "Deprecated configurations" + }, + "fullDescription": { + "text": "Detects usage of configuration methods that were deprecated. Configuration methods may be deprecated because of two possible reasons: The Gradle API has evolved, so old method choices should be avoided; Some plugin provides a better version of the deprecated configuration method. Most likely there will be an alternative for the deprecated method. Example: 'plugins {\n id 'java'\n}\n\ndependencies {\n archive 'org.gradle.api:gradle:1.0' // reports 'archive'\n}'", + "markdown": "Detects usage of configuration methods that were deprecated.\nConfiguration methods may be deprecated because of two possible reasons:\n\n* The Gradle API has evolved, so old method choices should be avoided;\n* Some plugin provides a better version of the deprecated configuration method.\n\nMost likely there will be an alternative for the deprecated method.\n\n**Example:**\n\n\n plugins {\n id 'java'\n }\n\n dependencies {\n archive 'org.gradle.api:gradle:1.0' // reports 'archive'\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Validity issues", + "index": 46, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JCenterRepository", + "shortDescription": { + "text": "Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022" + }, + "fullDescription": { + "text": "Detects usages of the JCenter repository to resolve dependencies. Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022.", + "markdown": "Detects usages of the JCenter repository to resolve dependencies. Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Probable bugs", + "index": 43, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ConfigurationAvoidance", + "shortDescription": { + "text": "Configuration avoidance" + }, + "fullDescription": { + "text": "(Gradle 4.9+) Detects usage of API that interacts with tasks eagerly. Eager interaction with tasks implies some invonveniences: The user should manually set up all dependencies between tasks; In the configuration phase, all the tasks accessed via the eager API become configured, even if they are not executed afterwards. It results in performance degradation. Eventually, the eager API will be deprecated in favor of the lazy one. See Gradle documentation for migration guide. Example: 'task foo { // reports 'task', suggests replacing it with 'task.register'\n // ...\n}'", + "markdown": "(Gradle 4.9+) Detects usage of API that interacts with tasks eagerly.\nEager interaction with tasks implies some invonveniences:\n\n* The user should manually set up all dependencies between tasks;\n* In the [configuration phase](https://docs.gradle.org/current/userguide/build_lifecycle.html#sec:build_phases), all the tasks accessed via the eager API become configured, even if they are not executed afterwards. It results in performance degradation.\n\nEventually, the eager API will be deprecated in favor of the lazy one. \n[See Gradle documentation for migration guide.](https://docs.gradle.org/current/userguide/task_configuration_avoidance.html)\n\n**Example:**\n\n\n task foo { // reports 'task', suggests replacing it with 'task.register'\n // ...\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Gradle/Best practises", + "index": 165, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { "name": "com.intellij.freemarker", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "FtlFileReferencesInspection", @@ -53296,17 +49973,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53330,17 +50004,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53364,17 +50035,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53398,17 +50066,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53432,17 +50097,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53466,17 +50128,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53500,17 +50159,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "FreeMarker", - "index": 39, + "index": 44, "toolComponent": { "name": "QDJVM" } @@ -53531,7 +50187,7 @@ }, { "name": "org.editorconfig.editorconfigjetbrains", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "EditorConfigNumerousWildcards", @@ -53546,17 +50202,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53580,17 +50233,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53614,17 +50264,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53648,17 +50295,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53682,17 +50326,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53716,17 +50357,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53750,17 +50388,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53784,17 +50419,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53818,17 +50450,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53852,17 +50481,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53886,17 +50512,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53920,17 +50543,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53954,17 +50574,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -53988,17 +50605,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54022,17 +50636,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54056,17 +50667,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54090,17 +50698,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54124,17 +50729,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54158,17 +50760,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54192,17 +50791,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54226,17 +50822,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54260,17 +50853,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54294,17 +50884,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54328,17 +50915,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54362,17 +50946,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54396,17 +50977,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54430,17 +51008,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, "toolComponent": { "name": "QDJVM" } @@ -54464,17 +51039,150 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "EditorConfig", - "index": 40, + "index": 45, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij.spring.data", + "version": "223.8394", + "rules": [ + { + "id": "SpringDataMongoDBJsonFieldInspection", + "shortDescription": { + "text": "Spring Data MongoDB JSON unresolved fields" + }, + "fullDescription": { + "text": "Reports unresolved document fields specified inside of 'org.springframework.data.mongodb.repository.Query' annotation. Example: '@Document\nclass User {\n @Field\n String name;\n}\n\ninterface UserRepository extends Repository<User, Long> {\n @Query(\"{ age: { $gt: ?0 } }\") // 'age' is highlighted as unresolved\n List<User> findUsersOlderThan(Integer age);\n}'", + "markdown": "Reports unresolved document fields specified inside of `org.springframework.data.mongodb.repository.Query` annotation.\n\n**Example:**\n\n\n @Document\n class User {\n @Field\n String name;\n }\n\n interface UserRepository extends Repository<User, Long> {\n @Query(\"{ age: { $gt: ?0 } }\") // 'age' is highlighted as unresolved\n List<User> findUsersOlderThan(Integer age);\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Data", + "index": 49, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpringDataMethodInconsistencyInspection", + "shortDescription": { + "text": "Spring Data repository method errors" + }, + "fullDescription": { + "text": "Reports Spring Data CRUD repository methods for which the Spring Data Query builder cannot generate the corresponding query. Example: 'interface PersonRepository extends Repository<Person, Long> {\n List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);\n List<Person> findByEmailUnknownAndLastname(EmailAddress emailAddress, String lastname); // Cannot resolve property 'Unknown'\n List<Person> findByAndLastname(EmailAddress emailAddress, String lastname); // Missing property name\n\n List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);\n List<Person> findPeopleDistinctByUnknownOrFirstname(String lastname, String firstname); // Cannot resolve property 'Unknown'\n\n List<Person> findByLastnameOrderByFirstnameAsc(String lastname);\n List<Person> findByLastnameOrderByUnknownDesc(String lastname); // Cannot resolve property 'Unknown'\n}'", + "markdown": "Reports Spring Data CRUD repository methods for which the\n[Spring Data Query](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation)\nbuilder cannot generate the corresponding query.\n\n**Example:**\n\n\n interface PersonRepository extends Repository<Person, Long> {\n List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);\n List<Person> findByEmailUnknownAndLastname(EmailAddress emailAddress, String lastname); // Cannot resolve property 'Unknown'\n List<Person> findByAndLastname(EmailAddress emailAddress, String lastname); // Missing property name\n\n List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);\n List<Person> findPeopleDistinctByUnknownOrFirstname(String lastname, String firstname); // Cannot resolve property 'Unknown'\n\n List<Person> findByLastnameOrderByFirstnameAsc(String lastname);\n List<Person> findByLastnameOrderByUnknownDesc(String lastname); // Cannot resolve property 'Unknown'\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Data", + "index": 49, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpringDataRepositoryMethodParametersInspection", + "shortDescription": { + "text": "Spring Data repository method parameters errors" + }, + "fullDescription": { + "text": "Reports Spring Data CRUD repository method parameters with incorrect types. Example: 'public class Person {\n private int id;\n private String lastname;\n private Address address;\n }\n\n public class Address {\n private int zipCode;\n }\n\n public interface CustomerRepository extends CrudRepository<Person, Integer> {\n List<Person> findByAddress(String lastname); // 'Address' type expected\n List<Person> findByAddressZipCode(String str); // 'int' type expected\n }'", + "markdown": "Reports Spring Data CRUD repository method parameters with incorrect types.\n\n**Example:**\n\n\n public class Person {\n private int id;\n private String lastname;\n private Address address;\n }\n\n public class Address {\n private int zipCode;\n }\n\n public interface CustomerRepository extends CrudRepository<Person, Integer> {\n List<Person> findByAddress(String lastname); // 'Address' type expected\n List<Person> findByAddressZipCode(String str); // 'int' type expected\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Data", + "index": 49, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpringDataRepositoryMethodReturnTypeInspection", + "shortDescription": { + "text": "Spring Data repository method return type errors" + }, + "fullDescription": { + "text": "Reports Spring Data CRUD repository methods with incorrect return types. The following return types are supported: 'void' Primitive types Wrapper types 'T' when the query method is expected to return one result at most. Returns 'null' if there are no results and throws 'IncorrectResultSizeDataAccessException' if there is more than one result. 'java.util.List' or any common 'Iterable' type 'java.util.stream.Stream' 'java.util.Optional' or 'scala.Option' when the query method is expected to return one result at most. Returns 'Optional.empty()' or 'Optional.absent()' if there are no results and throws 'IncorrectResultSizeDataAccessException' if there is more than one result. 'io.micronaut.data.model.Page' 'io.micronaut.data.model.Slice' 'java.util.concurrent.Future', 'java.util.concurrent.CompletableFuture', or 'ListenableFuture' if the method is annotated with '@Async' and Spring asynchronous method execution is enabled 'GeoResults<T>', 'GeoResult<T>', or 'GeoPage<T>'", + "markdown": "Reports Spring Data CRUD repository methods with incorrect return types.\n\nThe following return types are supported:\n* `void`\n* Primitive types\n* Wrapper types\n* `T` when the query method is expected to return one result at most. Returns `null` if there are no results and throws `IncorrectResultSizeDataAccessException` if there is more than one result.\n* `java.util.List` or any common `Iterable` type\n* `java.util.stream.Stream`\n* `java.util.Optional` or `scala.Option` when the query method is expected to return one result at most. Returns `Optional.empty()` or `Optional.absent()` if there are no results and throws `IncorrectResultSizeDataAccessException` if there is more than one result.\n* `io.micronaut.data.model.Page`\n* `io.micronaut.data.model.Slice`\n* `java.util.concurrent.Future`, `java.util.concurrent.CompletableFuture`, or `ListenableFuture` if the method is annotated with `@Async` and Spring asynchronous method execution is enabled\n* `GeoResults<T>`, `GeoResult<T>`, or `GeoPage<T>`" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Spring/Spring Data", + "index": 49, "toolComponent": { "name": "QDJVM" } @@ -54495,7 +51203,7 @@ }, { "name": "com.intellij.cdi", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "CdiUnknownProducersForDisposerMethodInspection", @@ -54510,17 +51218,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54544,17 +51249,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54578,17 +51280,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54612,17 +51311,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54646,17 +51342,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54680,17 +51373,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54714,17 +51404,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54748,17 +51435,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54782,17 +51466,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54816,17 +51497,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54850,17 +51528,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54884,17 +51559,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54918,17 +51590,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54952,17 +51621,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -54986,17 +51652,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -55020,17 +51683,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -55054,17 +51714,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CDI (Contexts and Dependency Injection)", - "index": 45, + "index": 53, "toolComponent": { "name": "QDJVM" } @@ -55085,7 +51742,7 @@ }, { "name": "com.intellij.velocity", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "VtlInterpolationsInspection", @@ -55100,17 +51757,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Velocity", - "index": 46, + "index": 54, "toolComponent": { "name": "QDJVM" } @@ -55134,17 +51788,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Velocity", - "index": 46, + "index": 54, "toolComponent": { "name": "QDJVM" } @@ -55168,17 +51819,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Velocity", - "index": 46, + "index": 54, "toolComponent": { "name": "QDJVM" } @@ -55202,17 +51850,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Velocity", - "index": 46, + "index": 54, "toolComponent": { "name": "QDJVM" } @@ -55236,17 +51881,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Velocity", - "index": 46, + "index": 54, "toolComponent": { "name": "QDJVM" } @@ -55267,7 +51909,7 @@ }, { "name": "com.intellij.css", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "CssInvalidFunction", @@ -55282,17 +51924,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55316,17 +51955,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Probable bugs", - "index": 77, + "index": 85, "toolComponent": { "name": "QDJVM" } @@ -55350,17 +51986,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -55384,17 +52017,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -55418,17 +52048,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "CSS/Probable bugs", - "index": 77, + "index": 85, "toolComponent": { "name": "QDJVM" } @@ -55452,17 +52079,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -55486,17 +52110,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55520,17 +52141,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Code style issues", - "index": 151, + "index": 157, "toolComponent": { "name": "QDJVM" } @@ -55554,17 +52172,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -55588,17 +52203,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55622,17 +52234,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55656,17 +52265,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55690,17 +52296,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Probable bugs", - "index": 77, + "index": 85, "toolComponent": { "name": "QDJVM" } @@ -55724,17 +52327,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55758,17 +52358,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55792,17 +52389,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Code style issues", - "index": 151, + "index": 157, "toolComponent": { "name": "QDJVM" } @@ -55826,17 +52420,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55860,17 +52451,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -55894,17 +52482,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -55928,17 +52513,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55962,17 +52544,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -55996,17 +52575,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -56030,17 +52606,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -56064,17 +52637,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "CSS", - "index": 49, + "index": 56, "toolComponent": { "name": "QDJVM" } @@ -56098,17 +52668,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "CSS/Invalid elements", - "index": 50, + "index": 57, "toolComponent": { "name": "QDJVM" } @@ -56129,7 +52696,7 @@ }, { "name": "com.intellij.hibernate", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "CriteriaApiResolveInspection", @@ -56144,17 +52711,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Hibernate", - "index": 58, + "index": 65, "toolComponent": { "name": "QDJVM" } @@ -56178,17 +52742,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Hibernate", - "index": 58, + "index": 65, "toolComponent": { "name": "QDJVM" } @@ -56212,17 +52773,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Hibernate", - "index": 58, + "index": 65, "toolComponent": { "name": "QDJVM" } @@ -56246,17 +52804,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Hibernate", - "index": 58, + "index": 65, "toolComponent": { "name": "QDJVM" } @@ -56280,17 +52835,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Hibernate", - "index": 58, + "index": 65, "toolComponent": { "name": "QDJVM" } @@ -56311,7 +52863,7 @@ }, { "name": "com.intellij.spring.integration", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "UnresolvedMessageChannel", @@ -56326,17 +52878,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Integration", - "index": 59, + "index": 66, "toolComponent": { "name": "QDJVM" } @@ -56360,17 +52909,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Integration", - "index": 59, + "index": 66, "toolComponent": { "name": "QDJVM" } @@ -56394,17 +52940,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Integration", - "index": 59, + "index": 66, "toolComponent": { "name": "QDJVM" } @@ -56428,17 +52971,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Integration", - "index": 59, + "index": 66, "toolComponent": { "name": "QDJVM" } @@ -56459,7 +52999,7 @@ }, { "name": "DevKit", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "PluginXmlCapitalization", @@ -56474,17 +53014,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Plugin descriptor", - "index": 61, + "index": 68, "toolComponent": { "name": "QDJVM" } @@ -56501,24 +53038,21 @@ "text": "Use DPI-aware borders" }, "fullDescription": { - "text": "Reports usages of 'javax.swing.border.EmptyBorder'. These are not DPI-aware and can result in UI layout problems. Quick-fix performs replacement with 'JBUI.Borders.empty()'.", - "markdown": "Reports usages of `javax.swing.border.EmptyBorder`.\n\n\nThese are not DPI-aware and can result in UI layout problems.\n\n\nQuick-fix performs replacement with `JBUI.Borders.empty()`." + "text": "Reports usages of 'javax.swing.border.EmptyBorder' and 'JBUI.Borders.emptyXyz()' that can be simplified. The 'EmptyBorder' instances are not DPI-aware and can result in UI layout problems. Quick fix performs replacement with 'JBUI.Borders.empty()' or simplifies the expression. Example: // bad:\nBorder border1 = new EmptyBorder(1, 2, 3, 4);\nBorder border2 = new EmptyBorder(1, 2, 1, 2);\nBorder border3 = new EmptyBorder(1, 0, 0, 0);\n\n// good:\nBorder border1 = JBUI.Borders.empty(1, 2, 3, 4);\nBorder border2 = JBUI.Borders.empty(1, 2);\nBorder border3 = JBUI.Borders.emptyTop(1);", + "markdown": "Reports usages of `javax.swing.border.EmptyBorder` and `JBUI.Borders.emptyXyz()` that can be simplified.\n\n\nThe `EmptyBorder` instances are not DPI-aware and can result in UI layout problems.\n\n\nQuick fix performs replacement with `JBUI.Borders.empty()` or simplifies the expression.\n\nExample:\n\n```\n// bad:\nBorder border1 = new EmptyBorder(1, 2, 3, 4);\nBorder border2 = new EmptyBorder(1, 2, 1, 2);\nBorder border3 = new EmptyBorder(1, 0, 0, 0);\n\n// good:\nBorder border1 = JBUI.Borders.empty(1, 2, 3, 4);\nBorder border2 = JBUI.Borders.empty(1, 2);\nBorder border3 = JBUI.Borders.emptyTop(1);\n```" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56542,17 +53076,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56576,17 +53107,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56610,17 +53138,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56632,29 +53157,26 @@ ] }, { - "id": "InspectionUniqueToolbarId", + "id": "IntentionDescriptionNotFoundInspection", "shortDescription": { - "text": "Specify toolbar id" + "text": "Intention description checker" }, "fullDescription": { - "text": "Reports passing non-unique 'place' parameter for 'ActionManager.createActionToolbar()'. Specifying proper 'place' is required to distinguish Action's usage in 'update()/actionPerformed()' via 'AnActionEvent.getPlace()'.", - "markdown": "Reports passing non-unique `place` parameter for `ActionManager.createActionToolbar()`.\n\n\nSpecifying proper `place` is required to distinguish Action's usage in `update()/actionPerformed()` via `AnActionEvent.getPlace()`." + "text": "Reports intentions that are missing an HTML description file, 'before.template' file or 'after.template' file. These are shown in Settings | Editor | Intentions. The Create description file quick-fix creates a template HTML description file.", + "markdown": "Reports intentions that are missing an HTML description file, `before.template` file or `after.template` file. These are shown in [Settings \\| Editor \\| Intentions](settings://preferences.intentionPowerPack).\n\n\nThe **Create description file** quick-fix creates a template HTML description file." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Plugin DevKit/Code", - "index": 73, + "id": "Plugin DevKit/Description file", + "index": 114, "toolComponent": { "name": "QDJVM" } @@ -56666,29 +53188,26 @@ ] }, { - "id": "InspectionMappingConsistency", + "id": "MissingRecentApi", "shortDescription": { - "text": "<inspection> tag consistency" + "text": "Usage of IntelliJ API not available in older IDEs" }, "fullDescription": { - "text": "Reports problems for inspection extension point registration in 'plugin.xml'. Inspection (group) name must be defined using respective attributes for proper presentation in IDE.", - "markdown": "Reports problems for inspection extension point registration in `plugin.xml`.\n\n\nInspection (group) name must be defined using respective attributes for proper presentation in IDE." + "text": "Reports usages of IntelliJ Platform API introduced in a version newer than the one specified in '<idea-version>' '@since-build' in 'plugin.xml'. Using such API may lead to incompatibilities of the plugin with older IDE versions. To avoid possible issues when running the plugin in older IDE versions, increase 'since-build' accordingly, or remove usages of this API. Configure the inspection: If '<idea-version>' '@since/until-build' attributes are not specified in 'plugin.xml', set Since/Until explicitly.", + "markdown": "Reports usages of IntelliJ Platform API introduced in a version *newer* than the one specified in `<idea-version>` `@since-build` in `plugin.xml`.\n\n\nUsing such API may lead to incompatibilities of the plugin with older IDE versions.\n\n\nTo avoid possible issues when running the plugin in older IDE versions, increase `since-build` accordingly,\nor remove usages of this API.\n\nConfigure the inspection:\nIf `<idea-version>` `@since/until-build` attributes are not specified in `plugin.xml`, set **Since** /**Until** explicitly." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Plugin DevKit/Plugin descriptor", - "index": 61, + "id": "Plugin DevKit/Code", + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56700,63 +53219,26 @@ ] }, { - "id": "IntentionDescriptionNotFoundInspection", + "id": "PluginXmlExtensionRegistration", "shortDescription": { - "text": "Intention description checker" + "text": "Plugin.xml extension registration" }, "fullDescription": { - "text": "Reports intentions that are missing an HTML description file, 'before.template' file or 'after.template' file. These are shown in Settings | Editor | Intentions. The Create description file quick-fix creates a template HTML description file.", - "markdown": "Reports intentions that are missing an HTML description file, `before.template` file or `after.template` file. These are shown in [Settings \\| Editor \\| Intentions](settings://preferences.intentionPowerPack).\n\n\nThe **Create description file** quick-fix creates a template HTML description file." + "text": "Reports problems with extension registration in 'plugin.xml'. The following problems are reported: Missing 'language' declaration. If the extension does not target a specific language, use quick fix to create an explicit declaration for \"any language\". Inspections: missing attributes Services: redundant 'serviceInterface' declaration 'com.intellij.stubElementTypeHolder' without 'externalIdPrefix', see Stub Indexes New in 2022.3", + "markdown": "Reports problems with extension registration in `plugin.xml`.\n\n\nThe following problems are reported:\n\n* Missing `language` declaration. If the extension does not target a specific language, use quick fix to create an explicit declaration for \"any language\".\n* Inspections: missing attributes\n* Services: redundant `serviceInterface` declaration\n* `com.intellij.stubElementTypeHolder` without `externalIdPrefix`, see [Stub Indexes](https://plugins.jetbrains.com/docs/intellij/stub-indexes.html?from=?from=DevkitPluginXmlInspectionDescription)\n\n<br />\n\nNew in 2022.3" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Plugin DevKit/Description file", - "index": 104, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "MissingRecentApi", - "shortDescription": { - "text": "Usage of IntelliJ API not available in older IDEs" - }, - "fullDescription": { - "text": "Reports usages of IntelliJ Platform API introduced in a version newer than the one specified in '<idea-version>' '@since-build' in 'plugin.xml'. Using such API may lead to incompatibilities of the plugin with older IDE versions. To avoid possible issues when running the plugin in older IDE versions, increase 'since-build' accordingly, or remove usages of this API. Configure the inspection: If '<idea-version>' '@since/until-build' attributes are not specified in 'plugin.xml', set Since/Until explicitly.", - "markdown": "Reports usages of IntelliJ Platform API introduced in a version *newer* than the one specified in `<idea-version>` `@since-build` in `plugin.xml`.\n\n\nUsing such API may lead to incompatibilities of the plugin with older IDE versions.\n\n\nTo avoid possible issues when running the plugin in older IDE versions, increase `since-build` accordingly,\nor remove usages of this API.\n\nConfigure the inspection:\nIf `<idea-version>` `@since/until-build` attributes are not specified in `plugin.xml`, set **Since** /**Until** explicitly." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Plugin DevKit/Code", - "index": 73, + "id": "Plugin DevKit/Plugin descriptor", + "index": 68, "toolComponent": { "name": "QDJVM" } @@ -56780,17 +53262,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56808,23 +53287,20 @@ }, "fullDescription": { "text": "Reports actions, action groups and other 'ActionUpdateThreadAware that implicitly state the deprecated and costly ActionUpdateThread.OLD_EDT mode. When an action or an action group defines its own update method, IntelliJ Platform tries to mimic the old synchronous way of calling update and getChildren methods in the UI thread and supply it with all the data in AnActionEvent.dataContext. To do that, it caches all the possible data on a background thread beforehand even if it is not needed. Provide one of the two new modes ActionUpdateThread.EDT or ActionUpdateThread.BGT by overriding the getActionUpdateThread method. See ActionUpdateThread documentation for more information.'", - "markdown": "Reports actions, action groups and other `ActionUpdateThreadAware``\nthat implicitly state the deprecated and costly ``ActionUpdateThread.OLD_EDT`` mode.\n\n`\n\n\nWhen an action or an action group defines its own `update` method, IntelliJ Platform tries to mimic\nthe old synchronous way of calling `update` and `getChildren` methods in the UI thread and\nsupply it with all the data in `AnActionEvent.dataContext`.\nTo do that, it caches all the possible data on a background thread beforehand even if it is not needed.\n`\n`\n\n\nProvide one of the two new modes `ActionUpdateThread.EDT` or `ActionUpdateThread.BGT`\nby overriding the `getActionUpdateThread` method.\n`\n`\n\n\nSee `ActionUpdateThread` documentation for more information.\n`\n``\n``\n`" + "markdown": "Reports actions, action groups and other `ActionUpdateThreadAware``\nthat implicitly state the deprecated and costly ``ActionUpdateThread.OLD_EDT`` mode.\n\n`\n\n\nWhen an action or an action group defines its own `update` method, IntelliJ Platform tries to mimic\nthe old synchronous way of calling `update` and `getChildren` methods in the UI thread and\nsupply it with all the data in `AnActionEvent.dataContext`.\nTo do that, it caches all the possible data on a background thread beforehand even if it is not needed.\n`\n`\n\n\nProvide one of the two new modes `ActionUpdateThread.EDT` or `ActionUpdateThread.BGT`\nby overriding the `getActionUpdateThread` method.\n`\n`\n\n\nSee `ActionUpdateThread` documentation for more information.\n`\n``\n`" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56848,17 +53324,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Plugin descriptor", - "index": 61, + "index": 68, "toolComponent": { "name": "QDJVM" } @@ -56882,17 +53355,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56916,17 +53386,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -56950,17 +53417,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit", - "index": 60, + "index": 67, "toolComponent": { "name": "QDJVM" } @@ -56984,17 +53448,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57018,17 +53479,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57045,24 +53503,21 @@ "text": "Unresolved plugin configuration reference" }, "fullDescription": { - "text": "Reports unresolved references to plugin configuration elements. Referencing extension with an unknown 'id' might result in errors at runtime. The following extension points are supported: 'com.intellij.advancedSetting' in resource bundle 'advanced.setting.*' key 'com.intellij.experimentalFeature' in 'Experiments.isFeatureEnabled()/setFeatureEnabled()' 'com.intellij.notificationGroup' in 'Notification' constructor and 'NotificationGroupManager.getNotificationGroup()' 'com.intellij.registryKey' in 'Registry' methods 'key' parameter 'com.intellij.toolWindow' in resource bundle 'toolwindow.stripe.*' key", - "markdown": "Reports unresolved references to plugin configuration elements.\n\n\nReferencing extension with an unknown `id` might result in errors at runtime.\n\n\nThe following extension points are supported:\n\n* `com.intellij.advancedSetting` in resource bundle `advanced.setting.*` key\n* `com.intellij.experimentalFeature` in `Experiments.isFeatureEnabled()/setFeatureEnabled()`\n* `com.intellij.notificationGroup` in `Notification` constructor and `NotificationGroupManager.getNotificationGroup()`\n* `com.intellij.registryKey` in `Registry` methods `key` parameter\n* `com.intellij.toolWindow` in resource bundle `toolwindow.stripe.*` key" + "text": "Reports unresolved references to plugin configuration elements. Extensions Referencing extension with an unknown 'id' might result in errors at runtime. The following extension points are supported: 'com.intellij.advancedSetting' in resource bundle 'advanced.setting.*' key 'com.intellij.experimentalFeature' in 'Experiments.isFeatureEnabled()/setFeatureEnabled()' 'com.intellij.notificationGroup' in 'Notification' constructor and 'NotificationGroupManager.getNotificationGroup()' 'com.intellij.registryKey' in 'Registry' methods 'key' parameter 'com.intellij.toolWindow' in resource bundle 'toolwindow.stripe.*' key Extension Point Extension point name referencing its corresponding '<extensionPoint>' declaration in 'plugin.xml'. 'com.intellij.openapi.extensions.ExtensionPointName' constructor and 'create()' 'com.intellij.openapi.extensions.ProjectExtensionPointName' constructor 'com.intellij.openapi.util.KeyedExtensionCollector' and inheritors constructor", + "markdown": "Reports unresolved references to plugin configuration elements.\n\n#### Extensions\n\n\nReferencing extension with an unknown `id` might result in errors at runtime.\n\n\nThe following extension points are supported:\n\n* `com.intellij.advancedSetting` in resource bundle `advanced.setting.*` key\n* `com.intellij.experimentalFeature` in `Experiments.isFeatureEnabled()/setFeatureEnabled()`\n* `com.intellij.notificationGroup` in `Notification` constructor and `NotificationGroupManager.getNotificationGroup()`\n* `com.intellij.registryKey` in `Registry` methods `key` parameter\n* `com.intellij.toolWindow` in resource bundle `toolwindow.stripe.*` key\n\n#### Extension Point\n\n\nExtension point name referencing its corresponding `<extensionPoint>` declaration in `plugin.xml`.\n\n* `com.intellij.openapi.extensions.ExtensionPointName` constructor and `create()`\n* `com.intellij.openapi.extensions.ProjectExtensionPointName` constructor\n* `com.intellij.openapi.util.KeyedExtensionCollector` and inheritors constructor\n\n<br />" }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57079,24 +53534,21 @@ "text": "Use DPI-aware insets" }, "fullDescription": { - "text": "Reports usages of 'java.awt.Insets'. These are not DPI-aware and can result in UI layout problems. Quick-fix performs replacement with 'JBUI.insets()'.", - "markdown": "Reports usages of `java.awt.Insets`.\n\n\nThese are not DPI-aware and can result in UI layout problems.\n\n\nQuick-fix performs replacement with `JBUI.insets()`." + "text": "Reports usages of 'java.awt.Insets' and 'JBUI.insetsXyz()' that can be simplified. The 'Insets' instances are not DPI-aware and can result in UI layout problems. Quick fix performs replacement with 'JBUI.insets()' or simplifies the expression. Example: // bad:\nInsets insets1 = new Insets(1, 2, 3, 4);\nInsets insets2 = new Insets(1, 2, 1, 2);\nInsets insets3 = new Insets(1, 0, 0, 0);\n\n// good:\nInsets insets1 = JBUI.insets(1, 2, 3, 4);\nInsets insets2 = JBUI.insets(1, 2);\nInsets insets3 = JBUI.insetsTop(1);", + "markdown": "Reports usages of `java.awt.Insets` and `JBUI.insetsXyz()` that can be simplified.\n\n\nThe `Insets` instances are not DPI-aware and can result in UI layout problems.\n\n\nQuick fix performs replacement with `JBUI.insets()` or simplifies the expression.\n\nExample:\n\n```\n// bad:\nInsets insets1 = new Insets(1, 2, 3, 4);\nInsets insets2 = new Insets(1, 2, 1, 2);\nInsets insets3 = new Insets(1, 0, 0, 0);\n\n// good:\nInsets insets1 = JBUI.insets(1, 2, 3, 4);\nInsets insets2 = JBUI.insets(1, 2);\nInsets insets3 = JBUI.insetsTop(1);\n```" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57120,17 +53572,45 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Workspace model", - "index": 153, + "index": 158, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnspecifiedActionsPlace", + "shortDescription": { + "text": "Unspecified action place" + }, + "fullDescription": { + "text": "Reports passing unspecified 'place' parameter for 'ActionManager.createActionToolbar()' and 'ActionManager.createActionPopupMenu()'. Specifying proper 'place' is required to distinguish Action's usage in 'update()/actionPerformed()' via 'AnActionEvent.getPlace()'. Examples: // bad:\nactionManager.createActionToolbar(\"\", group, false);\nactionManager.createActionToolbar(\"unknown\", group, false);\nactionManager.createActionPopupMenu(ActionPlaces.UNKNOWN, group);\n\n// good:\nactionManager.createActionToolbar(\"MyPlace\", group, false);\nactionManager.createActionPopupMenu(ActionPlaces.EDITOR_TOOLBAR, group);", + "markdown": "Reports passing unspecified `place` parameter for `ActionManager.createActionToolbar()` and `ActionManager.createActionPopupMenu()`.\n\n\nSpecifying proper `place` is required to distinguish Action's usage in `update()/actionPerformed()` via `AnActionEvent.getPlace()`.\n\n\nExamples:\n\n```\n// bad:\nactionManager.createActionToolbar(\"\", group, false);\nactionManager.createActionToolbar(\"unknown\", group, false);\nactionManager.createActionPopupMenu(ActionPlaces.UNKNOWN, group);\n\n// good:\nactionManager.createActionToolbar(\"MyPlace\", group, false);\nactionManager.createActionPopupMenu(ActionPlaces.EDITOR_TOOLBAR, group);\n```\n\n<br />" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "Plugin DevKit/Code", + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57147,24 +53627,21 @@ "text": "Field blocks intention preview" }, "fullDescription": { - "text": "Reports fields in 'LocalQuickFix' implementations that prevent intention preview action from functioning properly. Additionally, excessive '@SafeFieldForPreview' annotations are reported on fields whose types are known to be safe. Intention preview is an IntelliJ platform feature that displays how quick-fix or intention action will change the current file when applied. To implement this, 'LocalQuickFix.generatePreview()' is called with a custom 'ProblemDescriptor' that points to the non-physical copy of current file. Normally, it just delegates to 'LocalQuickFix.applyFix()'. However, some quick-fixes may refer directly or indirectly to physical elements and use them for writing. As a result, preview won't work, as the quick-fix will attempt to update physical PSI instead of non-physical one. To avoid this, default implementation of 'generatePreview()' delegates only if all the instance fields of a quick-fix class have safe types: primitives, Strings, etc. You may fix this problem in a number of ways: If the field does not actually store any PSI reference, or that PSI is used only for reading, you may annotate the field with '@SafeFieldForPreview'. You can also use '@SafeTypeForPreview' if the field type can never store any writable PSI reference. You may override 'getFileModifierForPreview()' method and create a copy of the quick-fix rebinding it to the non-physical file copy which is supplied as a parameter. Use 'PsiTreeUtil.findSameElementInCopy()' to find the corresponding PSI elements inside the supplied non-physical copy. Instead of storing PSI references in fields, try to extract all the necessary information from 'ProblemDescriptor.getPsiElement()'. You may override 'generatePreview()' method and provide completely custom preview behavior. For example, it's possible to display a custom HTML document instead of actual preview if your action does something besides modifying a current file. This inspection does not report if a custom implementation of 'getFileModifierForPreview()' or 'generatePreview()' exists. However, this doesn't mean that the implementation is correct and preview works. Please test. Also note that preview result is calculated in background thread, so you cannot start a write action during the preview or do any operation that requires a write action. Finally, no preview is generated automatically if 'startInWriteAction()' returns 'false'. In this case, having custom 'generatePreview()' implementation is desired. New in 2022.1", - "markdown": "Reports fields in `LocalQuickFix` implementations that prevent intention preview action from functioning properly. Additionally, excessive `@SafeFieldForPreview` annotations are reported on fields whose types are known to be safe.\n\n\nIntention preview is an IntelliJ platform feature that displays how quick-fix or intention action\nwill change the current file when applied. To implement this, `LocalQuickFix.generatePreview()`\nis called with a custom `ProblemDescriptor` that points to the non-physical copy of current file.\nNormally, it just delegates to `LocalQuickFix.applyFix()`. However, some quick-fixes\nmay refer directly or indirectly to physical elements and use them for writing. As a result,\npreview won't work, as the quick-fix will attempt to update physical PSI instead of non-physical one.\nTo avoid this, default implementation of `generatePreview()` delegates only if all the\ninstance fields of a quick-fix class have safe types: primitives, Strings, etc.\n\n\nYou may fix this problem in a number of ways:\n\n1. If the field does not actually store any PSI reference, or that PSI is used only for reading, you may annotate the field with `@SafeFieldForPreview`. You can also use `@SafeTypeForPreview` if the field type can never store any writable PSI reference.\n2. You may override `getFileModifierForPreview()` method and create a copy of the quick-fix rebinding it to the non-physical file copy which is supplied as a parameter. Use `PsiTreeUtil.findSameElementInCopy()` to find the corresponding PSI elements inside the supplied non-physical copy.\n3. Instead of storing PSI references in fields, try to extract all the necessary information from `ProblemDescriptor.getPsiElement()`.\n4. You may override `generatePreview()` method and provide completely custom preview behavior. For example, it's possible to display a custom HTML document instead of actual preview if your action does something besides modifying a current file.\n\n\nThis inspection does not report if a custom implementation of `getFileModifierForPreview()`\nor `generatePreview()` exists. However, this doesn't mean that the implementation is correct and preview works.\nPlease test. Also note that preview result is calculated in background thread, so you cannot start a write action\nduring the preview or do any operation that requires a write action. Finally, no preview is generated automatically\nif `startInWriteAction()` returns `false`. In this case, having custom `generatePreview()`\nimplementation is desired.\n\nNew in 2022.1" + "text": "Reports fields in 'LocalQuickFix' and 'IntentionAction' implementations that prevent intention preview action from functioning properly. Additionally, excessive '@SafeFieldForPreview' annotations are reported on fields whose types are known to be safe. Intention preview is an IntelliJ platform feature that displays how quick-fix or intention action will change the current file when applied. To implement this in quick fixes, 'LocalQuickFix.generatePreview()' is called with a custom 'ProblemDescriptor' that points to the non-physical copy of current file. In intention actions, 'IntentionAction.generatePreview()' is called with the non-physical copy of current file and imaginary editor. Normally, these methods just delegate to 'LocalQuickFix.applyFix()' or 'IntentionAction.invoke()'. However, some quick-fixes may refer directly or indirectly to physical elements and use them for writing. As a result, preview won't work, as the quick-fix will attempt to update physical PSI instead of non-physical one. To avoid this, default implementation of 'generatePreview()' delegates only if all the instance fields of a quick fix or intention action class have safe types: primitives, Strings, etc. You may fix this problem in a number of ways: If the field does not actually store any PSI reference, or that PSI is used only for reading, you may annotate the field with '@SafeFieldForPreview'. You can also use '@SafeTypeForPreview' if the field type can never store any writable PSI reference. You may override 'getFileModifierForPreview()' method and create a copy of the quick-fix rebinding it to the non-physical file copy which is supplied as a parameter. Use 'PsiTreeUtil.findSameElementInCopy()' to find the corresponding PSI elements inside the supplied non-physical copy. Instead of storing PSI references in fields, try to extract all the necessary information from 'ProblemDescriptor.getPsiElement()' in quick fix or from the supplied file/editor in intention action. You may also inherit the abstract 'LocalQuickFixAndIntentionActionOnPsiElement' class and implement its 'invoke()' and 'isAvailable()' methods, which have 'startElement' and 'endElement' parameters. These parameters are automatically mapped to a non-physical file copy for you. You may override 'generatePreview()' method and provide completely custom preview behavior. For example, it's possible to display a custom HTML document instead of actual preview if your action does something besides modifying a current file. This inspection does not report if a custom implementation of 'getFileModifierForPreview()' or 'generatePreview()' exists. However, this doesn't mean that the implementation is correct and preview works. Please test. Also note that preview result is calculated in background thread, so you cannot start a write action during the preview or do any operation that requires a write action. Finally, no preview is generated automatically if 'startInWriteAction()' returns 'false'. In this case, having custom 'generatePreview()' implementation is desired. New in 2022.1", + "markdown": "Reports fields in `LocalQuickFix` and `IntentionAction` implementations that prevent intention preview action from functioning properly. Additionally, excessive `@SafeFieldForPreview` annotations are reported on fields whose types are known to be safe.\n\n\nIntention preview is an IntelliJ platform feature that displays how quick-fix or intention action\nwill change the current file when applied. To implement this in quick fixes,\n`LocalQuickFix.generatePreview()` is called with a custom `ProblemDescriptor`\nthat points to the non-physical copy of current file. In intention actions, `IntentionAction.generatePreview()`\nis called with the non-physical copy of current file and imaginary editor.\nNormally, these methods just delegate to `LocalQuickFix.applyFix()` or `IntentionAction.invoke()`.\nHowever, some quick-fixes may refer directly or indirectly to physical elements and use them for writing. As a result,\npreview won't work, as the quick-fix will attempt to update physical PSI instead of non-physical one.\nTo avoid this, default implementation of `generatePreview()` delegates only if all the\ninstance fields of a quick fix or intention action class have safe types: primitives, Strings, etc.\n\n\nYou may fix this problem in a number of ways:\n\n1. If the field does not actually store any PSI reference, or that PSI is used only for reading, you may annotate the field with `@SafeFieldForPreview`. You can also use `@SafeTypeForPreview` if the field type can never store any writable PSI reference.\n2. You may override `getFileModifierForPreview()` method and create a copy of the quick-fix rebinding it to the non-physical file copy which is supplied as a parameter. Use `PsiTreeUtil.findSameElementInCopy()` to find the corresponding PSI elements inside the supplied non-physical copy.\n3. Instead of storing PSI references in fields, try to extract all the necessary information from `ProblemDescriptor.getPsiElement()` in quick fix or from the supplied file/editor in intention action. You may also inherit the abstract `LocalQuickFixAndIntentionActionOnPsiElement` class and implement its `invoke()` and `isAvailable()` methods, which have `startElement` and `endElement` parameters. These parameters are automatically mapped to a non-physical file copy for you.\n4. You may override `generatePreview()` method and provide completely custom preview behavior. For example, it's possible to display a custom HTML document instead of actual preview if your action does something besides modifying a current file.\n\n\nThis inspection does not report if a custom implementation of `getFileModifierForPreview()`\nor `generatePreview()` exists. However, this doesn't mean that the implementation is correct and preview works.\nPlease test. Also note that preview result is calculated in background thread, so you cannot start a write action\nduring the preview or do any operation that requires a write action. Finally, no preview is generated automatically\nif `startInWriteAction()` returns `false`. In this case, having custom `generatePreview()`\nimplementation is desired.\n\nNew in 2022.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57181,24 +53658,21 @@ "text": "Using new Color(a,a,a)" }, "fullDescription": { - "text": "Reports usages of 'java.awt.Color' to create gray colors. Quick-fix Convert to Gray replaces it using 'com.intellij.ui.Gray' constants instead. Example: 'Color myGray = new Color(55, 55, 55);' After the quick-fix is applied: 'Color myGray = Gray._55;'", - "markdown": "Reports usages of `java.awt.Color` to create gray colors.\n\n\nQuick-fix **Convert to Gray** replaces it using `com.intellij.ui.Gray` constants instead.\n\n**Example:**\n`Color myGray = new Color(55, 55, 55);`\n\nAfter the quick-fix is applied:\n`Color myGray = Gray._55;`" + "text": "Reports usages of 'java.awt.Color' to create gray colors. The Convert to 'Gray' quick fix replaces it using 'com.intellij.ui.Gray' constants instead. Examples: // bad:\nColor gray = new Color(37, 37, 37);\n\n// good:\nColor gray = Gray._37;", + "markdown": "Reports usages of `java.awt.Color` to create gray colors.\n\n\nThe **Convert to 'Gray'** quick fix replaces it using `com.intellij.ui.Gray` constants instead.\n\nExamples:\n\n```\n// bad:\nColor gray = new Color(37, 37, 37);\n\n// good:\nColor gray = Gray._37;\n```" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57222,17 +53696,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Plugin descriptor", - "index": 61, + "index": 68, "toolComponent": { "name": "QDJVM" } @@ -57249,24 +53720,21 @@ "text": "Component type mismatch" }, "fullDescription": { - "text": "Reports incorrect registration of plugin components (Components and Actions) both in code and in the 'plugin.xml' descriptor. The following problems are reported: Unresolved component/action implementation-classes ('plugin.xml') Unresolved component interface-classes ('plugin.xml') Component implementation-class is not assignable to its interface-class ('plugin.xml') Incorrect component registration, e.g. 'ProjectComponent' is registered as Application Component, or the class doesn't implement any component interface at all ('plugin.xml' and Java code) Incorrect class modifiers: Action classes must be 'public' and must have a public no-argument constructor. Additionally, Action and Component implementation classes must not be abstract ('plugin.xml' and Java code) Duplicate interface-class: A class may only be used once as interface-class ('plugin.xml') Configure the inspection: Use the Check Plugin Descriptor (plugin.xml) option to disable checks in 'plugin.xml' descriptor. Use the Check Java Actions option to disable checks in Action code. Use the Check Java Code option to disable all checks in code.", - "markdown": "Reports incorrect registration of plugin components (Components and Actions) both in code and in the `plugin.xml` descriptor.\n\n\nThe following problems are reported:\n\n* Unresolved component/action implementation-classes (`plugin.xml`)\n* Unresolved component interface-classes (`plugin.xml`)\n* Component implementation-class is not assignable to its interface-class (`plugin.xml`)\n* Incorrect component registration, e.g. `ProjectComponent` is registered as Application Component, or the class doesn't implement any component interface at all (`plugin.xml` and Java code)\n* Incorrect class modifiers: Action classes must be `public` and must have a public no-argument constructor. Additionally, Action and Component implementation classes must not be abstract (`plugin.xml` and Java code)\n* Duplicate interface-class: A class may only be used once as interface-class (`plugin.xml`)\n\nConfigure the inspection:\n\n* Use the **Check Plugin Descriptor (plugin.xml)** option to disable checks in `plugin.xml` descriptor.\n* Use the **Check Java Actions** option to disable checks in Action code.\n* Use the **Check Java Code** option to disable all checks in code." + "text": "Reports incorrect registration of plugin components (Actions and Components). The following problems are reported: Action/Component implementation class is abstract. Class is registered in plugin.xml as action but does not extend 'AnAction' class. Action class does not have a public no-argument constructor.", + "markdown": "Reports incorrect registration of plugin components (Actions and Components).\n\n\nThe following problems are reported:\n\n* Action/Component implementation class is abstract.\n* Class is registered in plugin.xml as action but does not extend `AnAction` class.\n* Action class does not have a public no-argument constructor." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Plugin DevKit", - "index": 60, + "id": "Plugin DevKit/Code", + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57290,17 +53758,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57317,24 +53782,21 @@ "text": "Use Darcula aware JBColor" }, "fullDescription": { - "text": "Reports usages of 'java.awt.Color'. These are not aware of \"dark\" themes (e.g., bundled \"Darcula\") and might result in bad looking UI. Quick-fix replaces usages with 'JBColor', which defines \"dark\" color variant.", - "markdown": "Reports usages of `java.awt.Color`.\n\n\nThese are not aware of \"dark\" themes (e.g., bundled \"Darcula\") and might result in bad looking UI.\n\n\nQuick-fix replaces usages with `JBColor`, which defines \"dark\" color variant." + "text": "Reports usages of 'java.awt.Color'. These are not aware of \"dark\" themes (e.g., bundled \"Darcula\") and might result in bad looking UI. Quick-fix replaces usages with 'JBColor', which defines \"dark\" color variant. Examples: // bad:\nColor darkGreen = new Color(12, 58, 27);\nColor blue = Color.BLUE;\n\n// good:\nColor darkGreen = new JBColor(12, 58, 27);\nColor blue = JBColor.BLUE;\nColor green = new JBColor(new Color(12, 58, 27), new Color(27, 112, 39));", + "markdown": "Reports usages of `java.awt.Color`.\n\n\nThese are not aware of \"dark\" themes (e.g., bundled \"Darcula\") and might result in bad looking UI.\n\n\nQuick-fix replaces usages with `JBColor`, which defines \"dark\" color variant.\n\nExamples:\n\n```\n// bad:\nColor darkGreen = new Color(12, 58, 27);\nColor blue = Color.BLUE;\n\n// good:\nColor darkGreen = new JBColor(12, 58, 27);\nColor blue = JBColor.BLUE;\nColor green = new JBColor(new Color(12, 58, 27), new Color(27, 112, 39));\n```" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57358,17 +53820,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57392,17 +53851,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57426,17 +53882,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57460,17 +53913,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57494,17 +53944,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57521,24 +53968,21 @@ "text": "Unsafe return statements visitor" }, "fullDescription": { - "text": "Reports unsafe use of 'JavaRecursiveElementVisitor.visitReturnStatement()'. Processing 'PsiReturnStatement's even if they belong to another 'PsiClass' or 'PsiLambdaExpression' is a bug in most cases. Quick-fix inserts necessary explicit 'visitClass()/visitLambdaExpression()' method(s).", - "markdown": "Reports unsafe use of `JavaRecursiveElementVisitor.visitReturnStatement()`.\n\n\nProcessing `PsiReturnStatement`s\neven if they belong to another `PsiClass` or `PsiLambdaExpression` is a bug in most cases.\n\n\nQuick-fix inserts necessary explicit `visitClass()/visitLambdaExpression()` method(s)." + "text": "Reports unsafe use of 'JavaRecursiveElementVisitor.visitReturnStatement()'. Processing 'PsiReturnStatement's even if they belong to another 'PsiClass' or 'PsiLambdaExpression' is a bug in most cases, and a visitor most probably should implement 'visitClass()' and 'visitLambdaExpression()' methods.", + "markdown": "Reports unsafe use of `JavaRecursiveElementVisitor.visitReturnStatement()`.\n\n\nProcessing `PsiReturnStatement`s\neven if they belong to another `PsiClass` or `PsiLambdaExpression` is a bug in most cases, and a visitor most\nprobably should implement `visitClass()` and `visitLambdaExpression()` methods." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57562,17 +54006,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57596,17 +54037,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Plugin descriptor", - "index": 61, + "index": 68, "toolComponent": { "name": "QDJVM" } @@ -57630,17 +54068,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Description file", - "index": 104, + "index": 114, "toolComponent": { "name": "QDJVM" } @@ -57664,17 +54099,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57698,17 +54130,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Description file", - "index": 104, + "index": 114, "toolComponent": { "name": "QDJVM" } @@ -57725,24 +54154,21 @@ "text": "Unsafe VFS recursion" }, "fullDescription": { - "text": "Reports usage of 'VirtualFile.getChildren()' inside recursive methods. This may cause endless loops when iterating over cyclic symlinks. Use 'VfsUtilCore.visitChildrenRecursively()' instead.", - "markdown": "Reports usage of `VirtualFile.getChildren()` inside recursive methods.\n\n\nThis may cause endless loops when iterating over cyclic symlinks.\nUse `VfsUtilCore.visitChildrenRecursively()` instead." + "text": "Reports usage of 'VirtualFile.getChildren()' inside recursive methods. This may cause endless loops when iterating over cyclic symlinks. Use 'VfsUtilCore.visitChildrenRecursively()' instead. 'void processDirectory(VirtualFile dir) {\n for (VirtualFile file : dir.getChildren()) { // bad\n if (!file.isDirectory()) {\n processFile(file);\n } else {\n processDirectory(file); // recursive call\n }\n }\n}'\n 'void processDirectory(VirtualFile dir) {\n VfsUtilCore.visitChildrenRecursively(dir, new VirtualFileVisitor<Void>() { // good\n @Override\n public boolean visitFile(@NotNull VirtualFile file) {\n if (!file.isDirectory()) {\n processFile(file);\n }\n return true;\n }\n });\n}'", + "markdown": "Reports usage of `VirtualFile.getChildren()` inside recursive methods.\n\n\nThis may cause endless loops when iterating over cyclic symlinks.\nUse `VfsUtilCore.visitChildrenRecursively()` instead.\n\n\n void processDirectory(VirtualFile dir) {\n for (VirtualFile file : dir.getChildren()) { // bad\n if (!file.isDirectory()) {\n processFile(file);\n } else {\n processDirectory(file); // recursive call\n }\n }\n }\n\n\n void processDirectory(VirtualFile dir) {\n VfsUtilCore.visitChildrenRecursively(dir, new VirtualFileVisitor<Void>() { // good\n @Override\n public boolean visitFile(@NotNull VirtualFile file) {\n if (!file.isDirectory()) {\n processFile(file);\n }\n return true;\n }\n });\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57766,17 +54192,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Code", - "index": 73, + "index": 81, "toolComponent": { "name": "QDJVM" } @@ -57800,17 +54223,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Plugin DevKit/Workspace model", - "index": 153, + "index": 158, "toolComponent": { "name": "QDJVM" } @@ -57831,7 +54251,7 @@ }, { "name": "com.intellij.properties", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "UseEllipsisInPropertyInspection", @@ -57846,17 +54266,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -57880,17 +54297,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFO" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -57907,24 +54321,21 @@ "text": "Trailing spaces in property" }, "fullDescription": { - "text": "Reports all properties whose keys or values end with a whitespace.", - "markdown": "Reports all properties whose keys or values end with a whitespace. " + "text": "Reports properties whose keys or values end with a whitespace.", + "markdown": "Reports properties whose keys or values end with a whitespace." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -57948,17 +54359,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "WEAK WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -57982,17 +54390,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -58009,24 +54414,21 @@ "text": "Unused property" }, "fullDescription": { - "text": "Reports all properties that are not referenced from the outside of the .properties file.", - "markdown": "Reports all properties that are not referenced from the outside of the .properties file." + "text": "Reports properties that are not referenced outside of the .properties file they are contained in.", + "markdown": "Reports properties that are not referenced outside of the .properties file they are contained in." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Properties files", - "index": 32, + "index": 33, "toolComponent": { "name": "QDJVM" } @@ -58047,7 +54449,7 @@ }, { "name": "XPathView", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "XsltUnusedDeclaration", @@ -58055,24 +54457,21 @@ "text": "Unused variable or parameter" }, "fullDescription": { - "text": "Reports local variables and parameters that are never used. Powered by XPathView + XSLT-Support", - "markdown": "Reports local variables and parameters that are never used.\n\nPowered by XPathView + XSLT-Support" + "text": "Reports local variables and parameters that are never used.", + "markdown": "Reports local variables and parameters that are never used." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XSLT", - "index": 68, + "index": 76, "toolComponent": { "name": "QDJVM" } @@ -58089,24 +54488,21 @@ "text": "Redundant type conversion" }, "fullDescription": { - "text": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a 'string()', 'number()', or 'boolean()' function is already the same as the function's return type or if the expected expression type is 'any'. Suggests removing the unnecessary conversion. Powered by XPathView + XSLT-Support", - "markdown": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a `string()`, `number()`, or `boolean()` function is already the same as the function's return type or if the expected expression type is `any`. Suggests removing the unnecessary conversion.\n\nPowered by XPathView + XSLT-Support" + "text": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a 'string()', 'number()', or 'boolean()' function is already the same as the function's return type or if the expected expression type is 'any'. Suggests removing the unnecessary conversion.", + "markdown": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a `string()`, `number()`, or `boolean()` function is already the same as the function's return type or if the expected expression type is `any`. Suggests removing the unnecessary conversion." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XPath", - "index": 112, + "index": 122, "toolComponent": { "name": "QDJVM" } @@ -58123,24 +54519,21 @@ "text": "XPath predicate with index 0" }, "fullDescription": { - "text": "Reports usages of '0' in a predicate index or in a comparison with the function 'position()'. Such usage is almost always a bug because in XPath, the index starts at '1', not at'0'. Example: '//someelement[position() = 0]' or '//something[0]' Powered by XPathView + XSLT-Support", - "markdown": "Reports usages of `0` in a predicate index or in a comparison with the function `position()`. Such usage is almost always a bug because in XPath, the index starts at `1`, *not* at`0`.\n\n**Example:**\n\n\n //someelement[position() = 0] or //something[0]\n\nPowered by XPathView + XSLT-Support" + "text": "Reports usages of '0' in a predicate index or in a comparison with the function 'position()'. Such usage is almost always a bug because in XPath, the index starts at '1', not at '0'. Example: '//someelement[position() = 0]' or '//something[0]'", + "markdown": "Reports usages of `0` in a predicate index or in a comparison with the function `position()`. Such usage is almost always a bug because in XPath, the index starts at `1`, *not* at `0`.\n\n**Example:**\n\n\n //someelement[position() = 0] or //something[0]\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XPath", - "index": 112, + "index": 122, "toolComponent": { "name": "QDJVM" } @@ -58157,24 +54550,21 @@ "text": "Unknown element or attribute name" }, "fullDescription": { - "text": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime. Example: '<xsl:template match=\"h:txtarea\" />' If the 'h' is bound to the XHTML namespace, the inspection will report this part of the 'match' expression as an unknown element name because the correct name of the element is \"textarea\". Powered by XPathView + XSLT-Support", - "markdown": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime.\n\n**Example:**\n\n\n <xsl:template match=\"h:txtarea\" />\n\n\nIf the `h` is bound to the XHTML namespace, the inspection will report this part of the `match` expression as an\nunknown element name because the correct name of the element is \"textarea\".\n\nPowered by XPathView + XSLT-Support" + "text": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime. Example: '<xsl:template match=\"h:txtarea\" />' If the 'h' is bound to the XHTML namespace, the inspection will report this part of the 'match' expression as an unknown element name because the correct name of the element is \"textarea\".", + "markdown": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime.\n\n**Example:**\n\n\n <xsl:template match=\"h:txtarea\" />\n\n\nIf the `h` is bound to the XHTML namespace, the inspection will report this part of the `match` expression as an\nunknown element name because the correct name of the element is \"textarea\"." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XPath", - "index": 112, + "index": 122, "toolComponent": { "name": "QDJVM" } @@ -58191,24 +54581,21 @@ "text": "Incorrect declaration" }, "fullDescription": { - "text": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates: Powered by XPathView + XSLT-Support", - "markdown": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:\n\nPowered by XPathView + XSLT-Support" + "text": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:", + "markdown": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:" }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XSLT", - "index": 68, + "index": 76, "toolComponent": { "name": "QDJVM" } @@ -58225,24 +54612,21 @@ "text": "Hardcoded namespace prefix" }, "fullDescription": { - "text": "Reports comparisons of the 'name()' function with a string that contains a colon (':'). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace. Example: '<xsl:if test=\"name() = 'xlink:href'\">...<xsl:if>' Powered by XPathView + XSLT-Support", - "markdown": "Reports comparisons of the `name()` function with a string that contains a colon (`:`). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace.\n\n**Example:**\n\n\n <xsl:if test=\"name() = 'xlink:href'\">...<xsl:if>\n\nPowered by XPathView + XSLT-Support" + "text": "Reports comparisons of the 'name()' function with a string that contains a colon (':'). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace. Example: '<xsl:if test=\"name() = 'xlink:href'\">...<xsl:if>'", + "markdown": "Reports comparisons of the `name()` function with a string that contains a colon (`:`). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace.\n\n**Example:**\n\n\n <xsl:if test=\"name() = 'xlink:href'\">...<xsl:if>\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XPath", - "index": 112, + "index": 122, "toolComponent": { "name": "QDJVM" } @@ -58259,24 +54643,21 @@ "text": "Incorrect template invocation" }, "fullDescription": { - "text": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations. Parameters declared with a default value are optional and will not be reported as missing. Powered by XPathView + XSLT-Support", - "markdown": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations.\n\n\nParameters declared with a default value are optional and will not be reported as missing.\n\nPowered by XPathView + XSLT-Support" + "text": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations. Parameters declared with a default value are optional and will not be reported as missing.", + "markdown": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations.\n\n\nParameters declared with a default value are optional and will not be reported as missing." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "XSLT", - "index": 68, + "index": 76, "toolComponent": { "name": "QDJVM" } @@ -58293,24 +54674,21 @@ "text": "Implicit type conversion" }, "fullDescription": { - "text": "Reports implicit conversions between the predefined XPath-types 'STRING', 'NUMBER', 'BOOLEAN', and 'NODESET'. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs: Example: '<xsl:if test=\"foo\" />' is not the same as '<xsl:if test=\"string(foo)\" />' The first test checks whether the element \"foo\" exists ('count(foo) > 0)'; the latter one however is only true if the element actually contains any text ('string-length(foo) > 0'). Suggests making the type conversion more explicit. Use the following options to configure the inspection: Enable or disable implicit conversions between certain types Always report explicit conversions that do not result in the actually expected type, for example, '<xsl:if test=\"number(foo)\" />' Ignore conversion from 'NODESET' to 'BOOLEAN' by using the 'string()' function as a shortcut for writing 'string-length() > 0'. Powered by XPathView + XSLT-Support", - "markdown": "Reports implicit conversions between the predefined XPath-types `STRING`, `NUMBER`, `BOOLEAN`, and `NODESET`. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs:\n\n**Example:**\n\n\n <xsl:if test=\"foo\" />\n\nis not the same as\n\n\n <xsl:if test=\"string(foo)\" />\n\n\nThe first test checks whether the element \"foo\" exists (`count(foo) > 0)`; the latter one however is only\ntrue if the element actually contains any text (`string-length(foo) > 0`). Suggests making\nthe type conversion more explicit.\n\n\nUse the following options to configure the inspection:\n\n* Enable or disable implicit conversions between certain types\n* Always report explicit conversions that do not result in the actually expected type, for example, `<xsl:if test=\"number(foo)\" />`\n* Ignore conversion from `NODESET` to `BOOLEAN` by using the `string()` function as a shortcut for writing `string-length() > 0`.\n\nPowered by XPathView + XSLT-Support" + "text": "Reports implicit conversions between the predefined XPath-types 'STRING', 'NUMBER', 'BOOLEAN', and 'NODESET'. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs: Example: '<xsl:if test=\"foo\" />' is not the same as '<xsl:if test=\"string(foo)\" />' The first test checks whether the element \"foo\" exists ('count(foo) > 0)'; the latter one however is only true if the element actually contains any text ('string-length(foo) > 0'). Suggests making the type conversion more explicit. Use the following options to configure the inspection: Enable or disable implicit conversions between certain types Always report explicit conversions that do not result in the actually expected type, for example, '<xsl:if test=\"number(foo)\" />' Ignore conversion from 'NODESET' to 'BOOLEAN' by using the 'string()' function as a shortcut for writing 'string-length() > 0'.", + "markdown": "Reports implicit conversions between the predefined XPath-types `STRING`, `NUMBER`, `BOOLEAN`, and `NODESET`. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs:\n\n**Example:**\n\n\n <xsl:if test=\"foo\" />\n\nis not the same as\n\n\n <xsl:if test=\"string(foo)\" />\n\n\nThe first test checks whether the element \"foo\" exists (`count(foo) > 0)`; the latter one however is only\ntrue if the element actually contains any text (`string-length(foo) > 0`). Suggests making\nthe type conversion more explicit.\n\n\nUse the following options to configure the inspection:\n\n* Enable or disable implicit conversions between certain types\n* Always report explicit conversions that do not result in the actually expected type, for example, `<xsl:if test=\"number(foo)\" />`\n* Ignore conversion from `NODESET` to `BOOLEAN` by using the `string()` function as a shortcut for writing `string-length() > 0`." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XPath", - "index": 112, + "index": 122, "toolComponent": { "name": "QDJVM" } @@ -58327,24 +54705,21 @@ "text": "Shadowed variable" }, "fullDescription": { - "text": "Reports shadowed XSLT variables. Powered by XPathView + XSLT-Support", - "markdown": "Reports shadowed XSLT variables.\n\nPowered by XPathView + XSLT-Support" + "text": "Reports shadowed XSLT variables.", + "markdown": "Reports shadowed XSLT variables." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "XSLT", - "index": 68, + "index": 76, "toolComponent": { "name": "QDJVM" } @@ -58365,7 +54740,7 @@ }, { "name": "com.intellij.javaee", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "JavaeeApplicationDomInspection", @@ -58380,17 +54755,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java EE", - "index": 70, + "index": 78, "toolComponent": { "name": "QDJVM" } @@ -58414,17 +54786,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java EE", - "index": 70, + "index": 78, "toolComponent": { "name": "QDJVM" } @@ -58445,7 +54814,7 @@ }, { "name": "TestNG-J", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "ConvertJavadoc", @@ -58460,17 +54829,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58494,17 +54860,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58528,17 +54891,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58562,17 +54922,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58596,17 +54953,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58630,17 +54984,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58664,17 +55015,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58698,17 +55046,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58732,17 +55077,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58766,17 +55108,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java/TestNG", - "index": 72, + "index": 80, "toolComponent": { "name": "QDJVM" } @@ -58797,7 +55136,7 @@ }, { "name": "com.intellij.jsp", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "ELDeferredExpressionsInspection", @@ -58812,17 +55151,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -58846,17 +55182,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -58880,17 +55213,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -58914,17 +55244,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -58948,17 +55275,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -58982,17 +55306,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59016,17 +55337,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59050,17 +55368,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59084,17 +55399,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59118,17 +55430,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59152,17 +55461,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59186,17 +55492,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59220,17 +55523,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "JSP", - "index": 74, + "index": 82, "toolComponent": { "name": "QDJVM" } @@ -59251,7 +55551,7 @@ }, { "name": "Lombook Plugin", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "RedundantModifiersUtilityClassLombok", @@ -59266,17 +55566,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok/Redundant modifiers", - "index": 79, + "index": 87, "toolComponent": { "name": "QDJVM" } @@ -59300,17 +55597,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok", - "index": 78, + "index": 86, "toolComponent": { "name": "QDJVM" } @@ -59334,17 +55628,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok/Redundant modifiers", - "index": 79, + "index": 87, "toolComponent": { "name": "QDJVM" } @@ -59368,17 +55659,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok/Redundant definitions", - "index": 149, + "index": 155, "toolComponent": { "name": "QDJVM" } @@ -59402,17 +55690,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok/Redundant modifiers", - "index": 79, + "index": 87, "toolComponent": { "name": "QDJVM" } @@ -59436,17 +55721,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok", - "index": 78, + "index": 86, "toolComponent": { "name": "QDJVM" } @@ -59470,17 +55752,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java/Lombok", - "index": 78, + "index": 86, "toolComponent": { "name": "QDJVM" } @@ -59501,7 +55780,7 @@ }, { "name": "com.intellij.javaee.web", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "MimeType", @@ -59516,17 +55795,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java EE", - "index": 70, + "index": 78, "toolComponent": { "name": "QDJVM" } @@ -59550,17 +55826,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Java EE", - "index": 70, + "index": 78, "toolComponent": { "name": "QDJVM" } @@ -59584,17 +55857,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java EE", - "index": 70, + "index": 78, "toolComponent": { "name": "QDJVM" } @@ -59618,17 +55888,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Java EE", - "index": 70, + "index": 78, "toolComponent": { "name": "QDJVM" } @@ -59649,7 +55916,7 @@ }, { "name": "com.intellij.uiDesigner", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "InvalidPropertyKeyForm", @@ -59664,17 +55931,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59698,17 +55962,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59732,17 +55993,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59766,17 +56024,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59800,17 +56055,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59834,17 +56086,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59868,17 +56117,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59902,17 +56148,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59936,17 +56179,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -59970,17 +56210,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "UI form", - "index": 81, + "index": 89, "toolComponent": { "name": "QDJVM" } @@ -60000,8 +56237,8 @@ "isComprehensive": false }, { - "name": "org.intellij.plugins.staticAnalysis", - "version": "222.4502", + "name": "org.intellij.qodana", + "version": "223.8394", "rules": [ { "id": "JavaAnnotator", @@ -60016,17 +56253,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -60050,17 +56284,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -60084,17 +56315,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "General", - "index": 38, + "index": 41, "toolComponent": { "name": "QDJVM" } @@ -60115,7 +56343,7 @@ }, { "name": "AntSupport", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "AntMissingPropertiesFileInspection", @@ -60130,17 +56358,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Ant", - "index": 89, + "index": 97, "toolComponent": { "name": "QDJVM" } @@ -60164,17 +56389,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Ant", - "index": 89, + "index": 97, "toolComponent": { "name": "QDJVM" } @@ -60198,17 +56420,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Ant", - "index": 89, + "index": 97, "toolComponent": { "name": "QDJVM" } @@ -60228,33 +56447,30 @@ "isComprehensive": false }, { - "name": "com.jetbrains.jax.ws", - "version": "222.4502", + "name": "com.jetbrains.restWebServices", + "version": "223.8394", "rules": [ { - "id": "ValidExternallyBoundObject", + "id": "WadlDomInspection", "shortDescription": { - "text": "Valid externally bound object" + "text": "Incorrect WADL configuration" }, "fullDescription": { - "text": "Reports incorrect Java web service classes and their members. Some possible issues are: Non-public default constructor Non-public web methods Missing field setters For the full list of requirements, see Creating a Simple Web Service and Client with JAX-WS.", - "markdown": "Reports incorrect Java web service classes and their members.\n\nSome possible issues are:\n\n* Non-public default constructor\n* Non-public web methods\n* Missing field setters\n\nFor the full list of requirements, see\n[Creating a Simple Web Service and Client with JAX-WS](https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXWS3.html)." + "text": "Reports configuration errors in WADL files.", + "markdown": "Reports configuration errors in WADL files." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Web services", - "index": 93, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60266,29 +56482,26 @@ ] }, { - "id": "OneWayWebMethod", + "id": "RestParamTypeInspection", "shortDescription": { - "text": "'@Oneway' methods should not return anything" + "text": "Incorrect parameter type of resource method" }, "fullDescription": { - "text": "Reports Java web service methods annotated with '@javax.jws.Oneway' that have a non-void return type. There are two possible quick-fixes: either remove the '@Oneway' annotation from the method or change the return type to 'void'.", - "markdown": "Reports Java web service methods annotated with `@javax.jws.Oneway` that have a non-void return type.\n\nThere are two possible quick-fixes: either remove the `@Oneway` annotation from the method or change the return type to `void`." + "text": "Reports resource method parameters (annotated with '@PathParam', '@QueryParam', and so on) with unsupported types. The type of the annotated parameter, field, or property must meet one of the following requirements: Be a primitive type Have a constructor that accepts a single 'String' argument Have a static method named 'valueOf()' or 'fromString()' that accepts a single 'String' argument, for example, 'Integer.valueOf(String)'. Have a registered implementation of 'ParamConverterProvider' JAX-RS extension SPI that returns a 'ParamConverter' instance capable of converting a string to a particular type. Be 'List<T>', 'Set<T>', or 'SortedSet<T>', where T satisfies 2, 3, or 4 above. The resulting collection is read-only.", + "markdown": "Reports resource method parameters (annotated with `@PathParam`, `@QueryParam`, and so on) with unsupported types.\n\nThe type of the annotated parameter, field, or property must meet one of the following requirements:\n\n1. Be a primitive type\n2. Have a constructor that accepts a single `String` argument\n3. Have a static method named `valueOf()` or `fromString()` that accepts a single `String` argument, for example, `Integer.valueOf(String)`.\n4. Have a registered implementation of `ParamConverterProvider` JAX-RS extension SPI that returns a `ParamConverter` instance capable of converting a string to a particular type.\n5. Be `List<T>`, `Set<T>`, or `SortedSet<T>`, where T satisfies 2, 3, or 4 above. The resulting collection is read-only." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Web services", - "index": 93, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60300,29 +56513,26 @@ ] }, { - "id": "NonJaxWsWebServices", + "id": "MultipleMethodDesignatorsInspection", "shortDescription": { - "text": "JAX-WS service not annotated with `@WebService`" + "text": "Resource method with multiple HTTP method annotations" }, "fullDescription": { - "text": "Reports exposed Java web services that do not have the '@javax.jws.WebService' annotation. The quick-fix adds the '@WebService' annotation to the class.", - "markdown": "Reports exposed Java web services that do not have the `@javax.jws.WebService` annotation.\n\nThe quick-fix adds the `@WebService` annotation to the class." + "text": "Reports resource methods with multiple HTTP method annotations ('@GET', '@POST', '@PUT', and so on).", + "markdown": "Reports resource methods with multiple HTTP method annotations (`@GET`, `@POST`, `@PUT`, and so on)." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Web services", - "index": 93, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60334,29 +56544,26 @@ ] }, { - "id": "ImplicitlyExposedWebServiceMethods", + "id": "PathAnnotation", "shortDescription": { - "text": "Implicitly exposed web service method" + "text": "Incorrect @Path URI template" }, "fullDescription": { - "text": "Reports implicitly exposed Java web service methods not annotated with '@javax.jws.WebMethod'. The quick-fix adds the '@WebMethod' annotation to the highlighted method.", - "markdown": "Reports implicitly exposed Java web service methods not annotated with `@javax.jws.WebMethod`.\n\nThe quick-fix adds the `@WebMethod` annotation to the highlighted method." + "text": "Reports syntax errors and unused URI templates inside '@Path' annotations. Example: '@GET\n @Path(\"/{unused}\") // Template 'unused' is never used\n public String get() {\n return \"\";\n }'", + "markdown": "Reports syntax errors and unused URI templates inside `@Path` annotations.\n\n**Example:**\n\n\n @GET\n @Path(\"/{unused}\") // Template 'unused' is never used\n public String get() {\n return \"\";\n }\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "ideaSeverity": "INFO", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Web services", - "index": 93, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60368,29 +56575,26 @@ ] }, { - "id": "WsdlHighlightingInspection", + "id": "RestResourceMethodInspection", "shortDescription": { - "text": "Invalid content" + "text": "@Path class without resource methods" }, "fullDescription": { - "text": "Reports general WSDL parsing errors like missing required values, duplications, and so on. For the full list of requirements, see the WSDL specification.", - "markdown": "Reports general WSDL parsing errors like missing required values, duplications, and so on.\n\nFor the full list of requirements, see the [WSDL specification](https://www.w3.org/TR/wsdl20/)." + "text": "Reports classes annotated with '@Path' that have no resource methods. The root resource class must have at least one resource method annotated with '@Path' or with any of '@HttpMethod' annotations ('@GET', '@POST', and so on).", + "markdown": "Reports classes annotated with `@Path` that have no resource methods.\nThe root resource class must have at least one resource method annotated with `@Path`\nor with any of `@HttpMethod` annotations (`@GET`, `@POST`, and so on)." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "WSDL", - "index": 148, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60402,29 +56606,26 @@ ] }, { - "id": "WSReferenceInspection", + "id": "RestWrongDefaultValueInspection", "shortDescription": { - "text": "Unresolved reference from '@XmlType' attributes" + "text": "Incorrect value of @DefaultValue parameter" }, "fullDescription": { - "text": "Reports JAXB '@XmlType' property references that cannot be resolved to fields and methods.", - "markdown": "Reports JAXB `@XmlType` property references that cannot be resolved to fields and methods." + "text": "Reports the value of '@DefaultValue' if it cannot be converted to the specified type of parameter. Example: '@GET\n @Path(\"/{n}\")\n public String get(@PathParam(\"n\") @DefaultValue(\"III\") int n) { // Error: Cannot convert 'III' to int\n }'", + "markdown": "Reports the value of `@DefaultValue` if it cannot be converted to the specified type of parameter.\n\n**Example:**\n\n\n @GET\n @Path(\"/{n}\")\n public String get(@PathParam(\"n\") @DefaultValue(\"III\") int n) { // Error: Cannot convert 'III' to int\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Web services", - "index": 93, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60436,29 +56637,57 @@ ] }, { - "id": "EmptyWebServiceClass", + "id": "VoidMethodAnnotatedWithGET", "shortDescription": { - "text": "Web service class has no methods" + "text": "@GET annotated method returns void value" }, "fullDescription": { - "text": "Reports Java web service classes annotated with '@WebService' that do not have any methods.", - "markdown": "Reports Java web service classes annotated with `@WebService` that do not have any methods." + "text": "Reports methods annotated with '@GET' that do not return anything. Methods annotated with '@GET' must have a non-void return type.", + "markdown": "Reports methods annotated with `@GET` that do not return anything.\nMethods annotated with `@GET` must have a non-void return type." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" + "ideaSeverity": "WARNING" + } + }, + "relationships": [ + { + "target": { + "id": "RESTful Web Service (JAX-RS)", + "index": 103, + "toolComponent": { + "name": "QDJVM" + } + }, + "kinds": [ + "superset" ] } + ] + }, + { + "id": "UnresolvedRestParam", + "shortDescription": { + "text": "Unresolved @PathParam reference" + }, + "fullDescription": { + "text": "Reports '@PathParam' parameters that are declared in a method signature and missing in the URL path or visa versa. Example: '@Get(\"/path/{myVariable}/\")\n public String handler(@PathParam(\"name_is_not_equal_to_myVariable\") String myVariable) { // Error\n return \"...\";\n }'", + "markdown": "Reports `@PathParam` parameters that are declared in a method signature and missing in the URL path or visa versa.\n\n**Example:**\n\n\n @Get(\"/path/{myVariable}/\")\n public String handler(@PathParam(\"name_is_not_equal_to_myVariable\") String myVariable) { // Error\n return \"...\";\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR" + } }, "relationships": [ { "target": { - "id": "Web services", - "index": 93, + "id": "RESTful Web Service (JAX-RS)", + "index": 103, "toolComponent": { "name": "QDJVM" } @@ -60479,7 +56708,7 @@ }, { "name": "HtmlTools", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "HtmlDeprecatedTag", @@ -60494,17 +56723,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -60528,17 +56754,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "HTML/Accessibility", - "index": 110, + "index": 120, "toolComponent": { "name": "QDJVM" } @@ -60562,17 +56785,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -60596,17 +56816,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML/Accessibility", - "index": 110, + "index": 120, "toolComponent": { "name": "QDJVM" } @@ -60630,17 +56847,14 @@ "enabled": false, "level": "note", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "INFORMATION" } }, "relationships": [ { "target": { "id": "HTML/Accessibility", - "index": 110, + "index": 120, "toolComponent": { "name": "QDJVM" } @@ -60664,17 +56878,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML/Accessibility", - "index": 110, + "index": 120, "toolComponent": { "name": "QDJVM" } @@ -60698,17 +56909,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -60732,17 +56940,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML/Accessibility", - "index": 110, + "index": 120, "toolComponent": { "name": "QDJVM" } @@ -60766,17 +56971,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -60800,17 +57002,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML/Accessibility", - "index": 110, + "index": 120, "toolComponent": { "name": "QDJVM" } @@ -60834,17 +57033,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "HTML", - "index": 30, + "index": 31, "toolComponent": { "name": "QDJVM" } @@ -60865,7 +57061,7 @@ }, { "name": "com.intellij.aop", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "DeclareParentsInspection", @@ -60880,17 +57076,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "AOP", - "index": 114, + "index": 124, "toolComponent": { "name": "QDJVM" } @@ -60914,17 +57107,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "AOP", - "index": 114, + "index": 124, "toolComponent": { "name": "QDJVM" } @@ -60948,17 +57138,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "AOP", - "index": 114, + "index": 124, "toolComponent": { "name": "QDJVM" } @@ -60982,17 +57169,14 @@ "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "AOP", - "index": 114, + "index": 124, "toolComponent": { "name": "QDJVM" } @@ -61016,17 +57200,14 @@ "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "AOP", - "index": 114, + "index": 124, "toolComponent": { "name": "QDJVM" } @@ -61047,7 +57228,7 @@ }, { "name": "com.intellij.beanValidation", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "BvConfigDomInspection", @@ -61062,17 +57243,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Bean Validation", - "index": 115, + "index": 125, "toolComponent": { "name": "QDJVM" } @@ -61096,17 +57274,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Bean Validation", - "index": 115, + "index": 125, "toolComponent": { "name": "QDJVM" } @@ -61130,63 +57305,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Bean Validation", - "index": 115, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "com.intellij.spring.websocket", - "version": "222.4502", - "rules": [ - { - "id": "SpringWebSocketConfigurationInspection", - "shortDescription": { - "text": "Incorrect Spring WebSocket XML-based application context" - }, - "fullDescription": { - "text": "Reports issues with the Spring Websocket XML-based application context: Unresolved bean references Missing required tags or attributes Incorrect property types Inconsistent 'enum' properties Incorrect types of referenced beans Example: '<beans ... >\n \n <bean id=\"dummyBean\" class=\"java.lang.String\"/>\n \n <websocket:message-broker application-destination-prefix=\"/app\"> <!-- Exactly one of <simple-broker> or <stomp-broker-relay> is required -->\n <websocket:stomp-endpoint path=\"/hello\" >\n <websocket:sockjs>\n <websocket:transport-handlers>\n <ref bean=\"dummyBean\"/> <!-- Bean must be of 'org.springframework.web.socket.sockjs.transport.TransportHandler' type -->\n <bean class=\"java.lang.String\"/> <!-- java.lang.String' is not assignable to 'org.springframework.web.socket.sockjs.transport.TransportHandler -->\n </websocket:transport-handlers>\n </websocket:sockjs>\n </websocket:stomp-endpoint>\n <websocket:stomp-broker-relay/>\n <websocket:simple-broker prefix=\"/topic\"/>\n <websocket:broker-channel>\n <websocket:executor keep-alive-seconds=\"10\"/>\n <websocket:interceptors>\n <ref bean=\"dummyBean\"/> <!-- Bean must be of 'org.springframework.messaging.support.ChannelInterceptor' type -->\n <bean class=\"java.lang.String\"/> <!-- java.lang.String' is not assignable to 'org.springframework.messaging.support.ChannelInterceptor' -->\n </websocket:interceptors>\n </websocket:broker-channel>\n </websocket:message-broker>\n</beans>'", - "markdown": "Reports issues with the Spring Websocket XML-based application context:\n\n* Unresolved bean references\n* Missing required tags or attributes\n* Incorrect property types\n* Inconsistent `enum` properties\n* Incorrect types of referenced beans\n\n**Example:**\n\n\n <beans ... >\n \n <bean id=\"dummyBean\" class=\"java.lang.String\"/>\n \n <websocket:message-brokerapplication-destination-prefix=\"/app\"> <!-- Exactly one of <simple-broker> or <stomp-broker-relay> is required -->\n <websocket:stomp-endpoint path=\"/hello\" >\n <websocket:sockjs>\n <websocket:transport-handlers>\n <ref bean=\"dummyBean\"/> <!-- Bean must be of 'org.springframework.web.socket.sockjs.transport.TransportHandler' type -->\n <bean class=\"java.lang.String\"/> <!-- java.lang.String' is not assignable to 'org.springframework.web.socket.sockjs.transport.TransportHandler -->\n </websocket:transport-handlers>\n </websocket:sockjs>\n </websocket:stomp-endpoint>\n <websocket:stomp-broker-relay/>\n <websocket:simple-broker prefix=\"/topic\"/>\n <websocket:broker-channel>\n <websocket:executor keep-alive-seconds=\"10\"/>\n <websocket:interceptors>\n <ref bean=\"dummyBean\"/> <!-- Bean must be of 'org.springframework.messaging.support.ChannelInterceptor' type -->\n <bean class=\"java.lang.String\"/> <!-- java.lang.String' is not assignable to 'org.springframework.messaging.support.ChannelInterceptor' -->\n </websocket:interceptors>\n </websocket:broker-channel>\n </websocket:message-broker>\n </beans>\n" - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Spring/Spring WebSocket", - "index": 119, + "index": 125, "toolComponent": { "name": "QDJVM" } @@ -61207,7 +57333,7 @@ }, { "name": "com.intellij.spring.security", - "version": "222.4502", + "version": "223.8394", "rules": [ { "id": "SpringSecurityModelInspection", @@ -61222,17 +57348,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Security", - "index": 128, + "index": 139, "toolComponent": { "name": "QDJVM" } @@ -61256,17 +57379,14 @@ "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { "id": "Spring/Spring Security", - "index": 128, + "index": 139, "toolComponent": { "name": "QDJVM" } @@ -61290,17 +57410,14 @@ "enabled": true, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { "id": "Spring/Spring Security", - "index": 128, + "index": 139, "toolComponent": { "name": "QDJVM" } @@ -61320,33 +57437,30 @@ "isComprehensive": false }, { - "name": "org.jetbrains.plugins.fus-test", - "version": "1.0.0", + "name": "com.intellij.spring.boot", + "version": "223.8394", "rules": [ { - "id": "WhitelistPresence", + "id": "SpringBootApplicationYaml", "shortDescription": { - "text": "Not whitelisted usage collector" + "text": "Invalid YAML configuration" }, "fullDescription": { - "text": "All feature usage groups should be whitelisted. To whitelist the group: Create an issue with group id, version and type (i.e. state or counter); Write group description as it should be shown in analytics UI; Describe all possible event ids with their meaning and event data (i.e. FeatureUsageData); Set issue state to Implemented;", - "markdown": "All feature usage groups should be whitelisted. \n\nTo whitelist the group:\n\n1. Create an [issue](https://youtrack.jetbrains.com/issues/FUS) with group id, version and type (i.e. state or counter);\n2. Write group description as it should be shown in analytics UI;\n3. Describe all possible event ids with their meaning and event data (i.e. FeatureUsageData);\n4. Set issue state to *Implemented*;" + "text": "Reports unresolved and deprecated configuration keys and invalid values in Spring Boot application '.yaml' configuration files, which can lead to runtime errors. Example: 'server:\n port: invalid # Reports 'Cannot convert 'invalid' to java.lang.Integer'' If a deprecated configuration key has a replacement key, you can apply the 'Use replacement key' quick-fix. Example: 'logging:\n path: ${path} # Reports 'Deprecated configuration property 'logging.path''' After the quick-fix is applied: 'logging:\n file:\n path: ${path}' If a configuration key is not defined in 'spring-configuration-metadata.json', you can apply the 'Define configuration key' quick-fix that creates the 'META-INF/spring-additional-configuration-metadata.json' file and defines the necessary key. Example: 'new:\n key: value # Reports 'Cannot resolve configuration property 'new.key''' After the quick-fix is applied, the following is added to 'META-INF/spring-additional-configuration-metadata.json': '{\n \"properties\": [\n {\n \"name\": \"new.key\",\n \"type\": \"java.lang.String\",\n \"description\": \"Description for new.key.\"\n }\n] }' Use the Replacement tokens option to define tokens used for value placeholders in configuration files. These tokens are specified in the form 'beginToken*endToken'. Without the '*', the token is assumed to be the same for start and end. For example, the default is '@' for both start and end token, which enables you to define placeholders, such as 'some.property=@another.property@'. Values inside the replacement token ('@property.key@') will not be highlighted.", + "markdown": "Reports unresolved and deprecated configuration keys and invalid values in Spring Boot application `.yaml` configuration files,\nwhich can lead to runtime errors.\n\n**Example:**\n\n\n server:\n port: invalid # Reports 'Cannot convert 'invalid' to java.lang.Integer'\n\nIf a deprecated configuration key has a replacement key, you can apply the 'Use replacement key' quick-fix.\n\n**Example:**\n\n\n logging:\n path: ${path} # Reports 'Deprecated configuration property 'logging.path''\n\nAfter the quick-fix is applied:\n\n\n logging:\n file:\n path: ${path}\n\n\nIf a configuration key is not defined in `spring-configuration-metadata.json`, you can apply the 'Define configuration key' quick-fix\nthat creates the `META-INF/spring-additional-configuration-metadata.json` file and defines the necessary key.\n\n**Example:**\n\n\n new:\n key: value # Reports 'Cannot resolve configuration property 'new.key''\n\nAfter the quick-fix is applied, the following is added to `META-INF/spring-additional-configuration-metadata.json`:\n\n\n {\n \"properties\": [\n {\n \"name\": \"new.key\",\n \"type\": \"java.lang.String\",\n \"description\": \"Description for new.key.\"\n }\n ] }\n\n\nUse the **Replacement tokens** option to define tokens used for value placeholders in configuration files.\nThese tokens are specified in the form `beginToken*endToken`.\nWithout the `*`, the token is assumed to be the same for start and end.\n\n\nFor example, the default is `@` for both start and end token,\nwhich enables you to define placeholders, such as `some.property=@another.property@`.\n\nValues inside the replacement token (`@property.key@`) will not be highlighted." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Feature usage statistics", - "index": 130, + "id": "Spring/Spring Boot", + "index": 141, "toolComponent": { "name": "QDJVM" } @@ -61358,29 +57472,26 @@ ] }, { - "id": "CollectorDetection", + "id": "SpringBootApplicationSetup", "shortDescription": { - "text": "Statistics collectors detection" + "text": "Invalid Spring Boot application setup" }, "fullDescription": { - "text": "This inspections detects statistics collectors.", - "markdown": "This inspections detects statistics collectors." + "text": "Reports '@SpringBootApplication' in the default package and redundant '@EnableAutoConfiguration' or '@ComponentScan' annotations. The quick-fix removes the redundant annotations. Example: '@SpringBootApplication\n@ComponentScan // Reports 'Redundant declaration: @SpringBootApplication already implies @ComponentScan'\npublic class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n}' After the quick-fix is applied: '@SpringBootApplication\n public class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n }' New in 2018.2", + "markdown": "Reports `@SpringBootApplication` in the default package and redundant `@EnableAutoConfiguration` or `@ComponentScan` annotations.\n\nThe quick-fix removes the redundant annotations.\n\n**Example:**\n\n\n @SpringBootApplication\n @ComponentScan // Reports 'Redundant declaration: @SpringBootApplication already implies @ComponentScan'\n public class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n @SpringBootApplication\n public class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n }\n\nNew in 2018.2" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "error", "parameters": { - "ideaSeverity": "INFORMATION", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Feature usage statistics", - "index": 130, + "id": "Spring/Spring Boot", + "index": 141, "toolComponent": { "name": "QDJVM" } @@ -61390,43 +57501,28 @@ ] } ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "com.intellij.spring.data", - "version": "222.4502", - "rules": [ + }, { - "id": "SpringDataMethodInconsistencyInspection", + "id": "SpringBootAdditionalConfig", "shortDescription": { - "text": "Spring Data repository method errors" + "text": "Invalid additional-spring-configuration-metadata.json" }, "fullDescription": { - "text": "Reports Spring Data CRUD repository methods for which the Spring Data Query builder cannot generate the corresponding query. Example: 'interface PersonRepository extends Repository<Person, Long> {\n List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);\n List<Person> findByEmailUnknownAndLastname(EmailAddress emailAddress, String lastname); // Cannot resolve property 'Unknown'\n List<Person> findByAndLastname(EmailAddress emailAddress, String lastname); // Missing property name\n\n List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);\n List<Person> findPeopleDistinctByUnknownOrFirstname(String lastname, String firstname); // Cannot resolve property 'Unknown'\n\n List<Person> findByLastnameOrderByFirstnameAsc(String lastname);\n List<Person> findByLastnameOrderByUnknownDesc(String lastname); // Cannot resolve property 'Unknown'\n}'", - "markdown": "Reports Spring Data CRUD repository methods for which the\n[Spring Data Query](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation)\nbuilder cannot generate the corresponding query.\n\n**Example:**\n\n\n interface PersonRepository extends Repository<Person, Long> {\n List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);\n List<Person> findByEmailUnknownAndLastname(EmailAddress emailAddress, String lastname); // Cannot resolve property 'Unknown'\n List<Person> findByAndLastname(EmailAddress emailAddress, String lastname); // Missing property name\n\n List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);\n List<Person> findPeopleDistinctByUnknownOrFirstname(String lastname, String firstname); // Cannot resolve property 'Unknown'\n\n List<Person> findByLastnameOrderByFirstnameAsc(String lastname);\n List<Person> findByLastnameOrderByUnknownDesc(String lastname); // Cannot resolve property 'Unknown'\n }\n" + "text": "Reports missing and deprecated properties, unresolved references, and invalid values in the 'additional-spring-configuration-metadata.json' configuration file. Example: '{\n \"properties\": [\n {\n \"name\": \"old.key\",\n \"type\": \"com.Unknown\", // Reports 'Cannot resolve class 'Unknown''\n \"description\": \"Description for old.key\", // Reports 'Text should end with '.''\n \"deprecation\": {\n \"replacement\": \"new.key\", // Reports 'Cannot resolve configuration key reference 'new.key''\n \"reason\": \"Reason\", // Reports 'Text should end with '.''\n \"level\": \"warning\"\n }\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n // Reports 'Missing required 'name''\n \"type\": \"java.lang.String\"\n }\n ]\n }'", + "markdown": "Reports missing and deprecated properties, unresolved references, and invalid values\nin the `additional-spring-configuration-metadata.json` configuration file.\n\n**Example:**\n\n\n {\n \"properties\": [\n {\n \"name\": \"old.key\",\n \"type\": \"com.Unknown\", // Reports 'Cannot resolve class 'Unknown''\n \"description\": \"Description for old.key\", // Reports 'Text should end with '.''\n \"deprecation\": {\n \"replacement\": \"new.key\", // Reports 'Cannot resolve configuration key reference 'new.key''\n \"reason\": \"Reason\", // Reports 'Text should end with '.''\n \"level\": \"warning\"\n }\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n // Reports 'Missing required 'name''\n \"type\": \"java.lang.String\"\n }\n ]\n }\n" }, "defaultConfiguration": { "enabled": true, - "level": "warning", + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Spring/Spring Data", - "index": 131, + "id": "Spring/Spring Boot", + "index": 141, "toolComponent": { "name": "QDJVM" } @@ -61438,29 +57534,26 @@ ] }, { - "id": "SpringDataRepositoryMethodParametersInspection", + "id": "SpringBootReactorHooksOnDebug", "shortDescription": { - "text": "Spring Data repository method parameters errors" + "text": "Suspicious Hooks.onOperatorDebug() usage" }, "fullDescription": { - "text": "Reports Spring Data CRUD repository method parameters with incorrect types. Example: 'public class Person {\n private int id;\n private String lastname;\n private Address address;\n }\n\n public class Address {\n private int zipCode;\n }\n\n public interface CustomerRepository extends CrudRepository<Person, Integer> {\n List<Person> findByAddress(String lastname); // 'Address' type expected\n List<Person> findByAddressZipCode(String str); // 'int' type expected\n }'", - "markdown": "Reports Spring Data CRUD repository method parameters with incorrect types.\n\n**Example:**\n\n\n public class Person {\n private int id;\n private String lastname;\n private Address address;\n }\n\n public class Address {\n private int zipCode;\n }\n\n public interface CustomerRepository extends CrudRepository<Person, Integer> {\n List<Person> findByAddress(String lastname); // 'Address' type expected\n List<Person> findByAddressZipCode(String str); // 'int' type expected\n }\n" + "text": "Reports the usage of 'Hooks.onOperatorDebug()' when 'ReactorDebugAgent.init()' is called. If 'ReactorDebugAgent' is in the classpath, and 'spring.reactor.debug-agent.enabled' is 'true' (default value), 'ReactorDebugAgent.init()' is called automatically at startup. Using both 'Hooks.onOperatorDebug()' and 'ReactorDebugAgent.init()' cause doubled debugging stack frames generated by Reactor. Also, 'Hooks.onOperatorDebug()' can cause performance overhead. The quick-fix removes the invocation of 'Hooks.onOperatorDebug()'. Example: 'public void hook() {\n Hooks.onOperatorDebug(); // Reports 'Call Hooks.onOperatorDebug() while ReactorDebugAgent is initialized'\n }' After the quick-fix is applied: 'public void hook() {\n }' This inspection only triggers when Spring Boot version for the project or module is 2.2.0 or higher.", + "markdown": "Reports the usage of `Hooks.onOperatorDebug()` when `ReactorDebugAgent.init()` is called.\n\n\nIf `ReactorDebugAgent` is in the classpath, and `spring.reactor.debug-agent.enabled`\nis `true` (default value), `ReactorDebugAgent.init()` is called automatically at startup.\nUsing both `Hooks.onOperatorDebug()` and `ReactorDebugAgent.init()` cause doubled debugging stack frames generated by Reactor.\nAlso, `Hooks.onOperatorDebug()` can cause performance overhead.\n\nThe quick-fix removes the invocation of `Hooks.onOperatorDebug()`.\n\n**Example:**\n\n\n public void hook() {\n Hooks.onOperatorDebug(); // Reports 'Call Hooks.onOperatorDebug() while ReactorDebugAgent is initialized'\n }\n\nAfter the quick-fix is applied:\n\n\n public void hook() {\n }\n\nThis inspection only triggers when Spring Boot version for the project or module is 2.2.0 or higher." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Data", - "index": 131, + "id": "Spring/Spring Boot", + "index": 141, "toolComponent": { "name": "QDJVM" } @@ -61472,29 +57565,26 @@ ] }, { - "id": "SpringDataRepositoryMethodReturnTypeInspection", + "id": "ConfigurationProperties", "shortDescription": { - "text": "Spring Data repository method return type errors" + "text": "Invalid @ConfigurationProperties" }, "fullDescription": { - "text": "Reports Spring Data CRUD repository methods with incorrect return types. The following return types are supported: 'void' Primitive types Wrapper types 'T' when the query method is expected to return one result at most. Returns 'null' if there are no results and throws 'IncorrectResultSizeDataAccessException' if there is more than one result. 'java.util.List' or any common 'Iterable' type 'java.util.stream.Stream' 'java.util.Optional' or 'scala.Option' when the query method is expected to return one result at most. Returns 'Optional.empty()' or 'Optional.absent()' if there are no results and throws 'IncorrectResultSizeDataAccessException' if there is more than one result. 'io.micronaut.data.model.Page' 'io.micronaut.data.model.Slice' 'java.util.concurrent.Future', 'java.util.concurrent.CompletableFuture', or 'ListenableFuture' if the method is annotated with '@Async' and Spring asynchronous method execution is enabled 'GeoResults<T>', 'GeoResult<T>', or 'GeoPage<T>'", - "markdown": "Reports Spring Data CRUD repository methods with incorrect return types.\n\nThe following return types are supported:\n* `void`\n* Primitive types\n* Wrapper types\n* `T` when the query method is expected to return one result at most. Returns `null` if there are no results and throws `IncorrectResultSizeDataAccessException` if there is more than one result.\n* `java.util.List` or any common `Iterable` type\n* `java.util.stream.Stream`\n* `java.util.Optional` or `scala.Option` when the query method is expected to return one result at most. Returns `Optional.empty()` or `Optional.absent()` if there are no results and throws `IncorrectResultSizeDataAccessException` if there is more than one result.\n* `io.micronaut.data.model.Page`\n* `io.micronaut.data.model.Slice`\n* `java.util.concurrent.Future`, `java.util.concurrent.CompletableFuture`, or `ListenableFuture` if the method is annotated with `@Async` and Spring asynchronous method execution is enabled\n* `GeoResults<T>`, `GeoResult<T>`, or `GeoPage<T>`" + "text": "Reports invalid prefixes defined in the '@ConfigurationProperties' annotations: Missing prefix Empty prefix Duplicate prefix Prefix in notation other than kebab-case The inspection triggers in classes that are annotated with '@ConfigurationProperties' and not registered via '@EnableConfigurationProperties', marked as Spring component, or scanned via '@ConfigurationPropertiesScan'. This inspection only triggers in classes annotated with '@ConfigurationProperties' that are not scanned via '@ConfigurationPropertiesScan' when the Spring Boot version for the project or module is set to 2.2.0 or later. New in 2018.3", + "markdown": "Reports invalid prefixes defined in the `@ConfigurationProperties` annotations:\n\n* Missing prefix\n* Empty prefix\n* Duplicate prefix\n* Prefix in notation other than kebab-case\n\n\nThe inspection triggers in classes that are annotated with `@ConfigurationProperties` and not registered via `@EnableConfigurationProperties`,\nmarked as Spring component, or scanned via `@ConfigurationPropertiesScan`.\n\n\nThis inspection only triggers in classes annotated with `@ConfigurationProperties` that are not scanned via `@ConfigurationPropertiesScan`\nwhen the Spring Boot version for the project or module is set to 2.2.0 or later.\n\nNew in 2018.3" }, "defaultConfiguration": { "enabled": true, - "level": "warning", + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Spring/Spring Data", - "index": 131, + "id": "Spring/Spring Boot", + "index": 141, "toolComponent": { "name": "QDJVM" } @@ -61504,43 +57594,28 @@ ] } ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "W3Validators", - "version": "222.4502", - "rules": [ + }, { - "id": "W3CssValidation", + "id": "SpringBootApplicationProperties", "shortDescription": { - "text": "W3C CSS validator" + "text": "Invalid properties configuration" }, "fullDescription": { - "text": "Reports a discrepancy detected by the W3C CSS Validator.", - "markdown": "Reports a discrepancy detected by the [W3C CSS Validator](https://jigsaw.w3.org/css-validator/)." + "text": "Reports unresolved and deprecated configuration keys and invalid values in Spring Boot application '.properties' configuration files, which can lead to runtime errors. Example: 'server.port=invalid # Reports 'Cannot convert 'invalid' to java.lang.Integer'' If a deprecated configuration key has a replacement key, you can apply the 'Use replacement key' quick-fix. Example: 'logging.path=${path} # Reports 'Deprecated configuration property 'logging.path''' After the quick-fix is applied: 'logging.file.path=${path}' If a configuration key is not defined in 'spring-configuration-metadata.json', you can apply the 'Define configuration key' quick-fix that creates the 'META-INF/spring-additional-configuration-metadata.json' file and defines the necessary key. Example: 'new.key=value #Reports 'Cannot resolve configuration property 'new.key''' After the quick-fix is applied, the following is added to 'META-INF/spring-additional-configuration-metadata.json': '{\n \"properties\": [\n {\n \"name\": \"new.key\",\n \"type\": \"java.lang.String\",\n \"description\": \"Description for new.key.\"\n }\n] }' The inspection also highlights index notation errors in list and map configuration keys. Example: 'spring.datasource.schema[]=${schema} #Reports 'Missing index value'' Use the Replacement tokens option to define tokens used for value placeholders in configuration files. These tokens are specified in the form 'beginToken*endToken'. Without the '*', the token is assumed to be the same for start and end. For example, the default is '@' for both start and end token, which enables you to define placeholders, such as 'some.property=@another.property@'. Values inside the replacement token ('@property.key@') will not be highlighted.", + "markdown": "Reports unresolved and deprecated configuration keys and invalid values in Spring Boot application `.properties` configuration files,\nwhich can lead to runtime errors.\n\n**Example:**\n\n\n server.port=invalid # Reports 'Cannot convert 'invalid' to java.lang.Integer'\n\nIf a deprecated configuration key has a replacement key, you can apply the 'Use replacement key' quick-fix.\n\n**Example:**\n\n\n logging.path=${path} # Reports 'Deprecated configuration property 'logging.path''\n\nAfter the quick-fix is applied:\n\n\n logging.file.path=${path}\n\n\nIf a configuration key is not defined in `spring-configuration-metadata.json`, you can apply the 'Define configuration key' quick-fix\nthat creates the `META-INF/spring-additional-configuration-metadata.json` file and defines the necessary key.\n\n**Example:**\n\n\n new.key=value #Reports 'Cannot resolve configuration property 'new.key''\n\nAfter the quick-fix is applied, the following is added to `META-INF/spring-additional-configuration-metadata.json`:\n\n\n {\n \"properties\": [\n {\n \"name\": \"new.key\",\n \"type\": \"java.lang.String\",\n \"description\": \"Description for new.key.\"\n }\n ] }\n\nThe inspection also highlights index notation errors in list and map configuration keys.\n\n**Example:**\n\n\n spring.datasource.schema[]=${schema} #Reports 'Missing index value'\n\n\nUse the **Replacement tokens** option to define tokens used for value placeholders in configuration files.\nThese tokens are specified in the form `beginToken*endToken`.\nWithout the `*`, the token is assumed to be the same for start and end.\n\n\nFor example, the default is `@` for both start and end token,\nwhich enables you to define placeholders, such as `some.property=@another.property@`.\n\nValues inside the replacement token (`@property.key@`) will not be highlighted." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "CSS/Code quality tools", - "index": 134, + "id": "Spring/Spring Boot", + "index": 141, "toolComponent": { "name": "QDJVM" } @@ -61560,67 +57635,30 @@ "isComprehensive": false }, { - "name": "org.jetbrains.plugins.gradle", - "version": "222.4502", + "name": "com.intellij.microservices.jvm", + "version": "223.8394", "rules": [ { - "id": "MultipleRepositoryUrls", - "shortDescription": { - "text": "Multiple repository urls" - }, - "fullDescription": { - "text": "Reports the usage of multiple URLs per repository (maven or ivy) block. The problem is that only one URL can be picked up for the repository, the other URLs will be ignored.", - "markdown": "Reports the usage of multiple URLs per repository (maven or ivy) block. The problem is that only one URL can be picked up for the repository, the other URLs will be ignored." - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Gradle/Probable bugs", - "index": 137, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "BintrayPublishingPlugin", + "id": "UastIncorrectMimeTypeInspection", "shortDescription": { - "text": "Bintray publishing plugin may stop working on May 1st, 2021" + "text": "Incorrect MIME Type declaration" }, "fullDescription": { - "text": "Detects usages of Gradle plugin 'com.jfrog.bintray'. The plugin is used for publishing build results to Bintray. Publishing to Bintray service is disabled.", - "markdown": "Detects usages of Gradle plugin `com.jfrog.bintray`.\nThe plugin is used for publishing build results to Bintray.\nPublishing to\n[Bintray](https://www.jfrog.com/confluence/display/BT/Welcome+to+JFrog+Bintray) service is disabled." + "text": "Reports incorrect MIME types (for example, in 'Content-Type' strings) for HTTP servers and clients.", + "markdown": "Reports incorrect MIME types (for example, in `Content-Type` strings) for HTTP servers and clients." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Gradle/Probable bugs", - "index": 137, + "id": "JVM languages", + "index": 1, "toolComponent": { "name": "QDJVM" } @@ -61632,29 +57670,26 @@ ] }, { - "id": "JCenterRepository", + "id": "UastIncorrectHttpHeaderInspection", "shortDescription": { - "text": "Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022" + "text": "Unknown HTTP header" }, "fullDescription": { - "text": "Detects usages of the JCenter repository to resolve dependencies. Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022.", - "markdown": "Detects usages of the JCenter repository to resolve dependencies. Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022." + "text": "Reports unknown HTTP headers that do not match any publicly known headers. The quick fix suggests adding the header to the list of custom headers to avoid triggering this inspection in the future. Custom HTTP headers are listed for the inspection with the same name in the HTTP Client group.", + "markdown": "Reports unknown HTTP headers that do not match any [publicly\nknown headers](https://www.iana.org/assignments/message-headers/message-headers.xml). The quick fix suggests adding the header to the list of custom headers to avoid triggering this inspection in the\nfuture.\n\nCustom HTTP headers are listed for the inspection with the same name in the HTTP Client group." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Gradle/Probable bugs", - "index": 137, + "id": "JVM languages", + "index": 1, "toolComponent": { "name": "QDJVM" } @@ -61674,33 +57709,30 @@ "isComprehensive": false }, { - "name": "com.intellij.spring.boot", - "version": "222.4502", + "name": "org.jetbrains.plugins.yaml", + "version": "223.8394", "rules": [ { - "id": "SpringBootApplicationSetup", + "id": "YAMLDuplicatedKeys", "shortDescription": { - "text": "Invalid Spring Boot application setup" + "text": "Duplicated YAML keys" }, "fullDescription": { - "text": "Reports '@SpringBootApplication' in the default package and redundant '@EnableAutoConfiguration' or '@ComponentScan' annotations. The quick-fix removes the redundant annotations. Example: '@SpringBootApplication\n@ComponentScan // Reports 'Redundant declaration: @SpringBootApplication already implies @ComponentScan'\npublic class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n}' After the quick-fix is applied: '@SpringBootApplication\n public class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n }' New in 2018.2", - "markdown": "Reports `@SpringBootApplication` in the default package and redundant `@EnableAutoConfiguration` or `@ComponentScan` annotations.\n\nThe quick-fix removes the redundant annotations.\n\n**Example:**\n\n\n @SpringBootApplication\n @ComponentScan // Reports 'Redundant declaration: @SpringBootApplication already implies @ComponentScan'\n public class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n @SpringBootApplication\n public class DemoApplication {\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n }\n\nNew in 2018.2" + "text": "Reports duplicated keys in YAML files. Example: 'same_key: some value\n same_key: another value'", + "markdown": "Reports duplicated keys in YAML files.\n\n**Example:**\n\n\n same_key: some value\n same_key: another value\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Spring/Spring Boot", - "index": 138, + "id": "YAML", + "index": 150, "toolComponent": { "name": "QDJVM" } @@ -61712,29 +57744,26 @@ ] }, { - "id": "SpringShellReferencesInspection", + "id": "YAMLSchemaValidation", "shortDescription": { - "text": "Invalid Spring Shell references" + "text": "Validation by JSON Schema" }, "fullDescription": { - "text": "Reports invalid references inside Spring Shell 'org.springframework.shell.standard.ShellMethodAvailability' annotations. Example: '@ShellComponent\npublic class MyCommands {\n\n @ShellMethod(\"sum\")\n @ShellMethodAvailability(\"sumAvailability\") // annotation value will be highlighted as unresolved symbol\n public int sum(int a, int b) {\n return a + b;\n }\n\n @ShellMethodAvailability(\"sumMethod\") // annotation value will be highlighted as unresolved symbol\n public Availability isSumAvailable() {\n return Availability.available();\n }\n}'", - "markdown": "Reports invalid references inside Spring Shell\n`org.springframework.shell.standard.ShellMethodAvailability` annotations.\n\nExample:\n\n\n @ShellComponent\n public class MyCommands {\n\n @ShellMethod(\"sum\")\n @ShellMethodAvailability(\"sumAvailability\") // annotation value will be highlighted as unresolved symbol\n public int sum(int a, int b) {\n return a + b;\n }\n\n @ShellMethodAvailability(\"sumMethod\") // annotation value will be highlighted as unresolved symbol\n public Availability isSumAvailable() {\n return Availability.available();\n }\n }\n" + "text": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified. Scheme example: '{\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeNumberProperty: hello world'", + "markdown": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified.\n\n**Scheme example:**\n\n\n {\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeNumberProperty: hello world\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Shell", - "index": 139, + "id": "YAML", + "index": 150, "toolComponent": { "name": "QDJVM" } @@ -61746,29 +57775,26 @@ ] }, { - "id": "SpringBootAdditionalConfig", + "id": "YAMLUnresolvedAlias", "shortDescription": { - "text": "Invalid additional-spring-configuration-metadata.json" + "text": "Unresolved alias" }, "fullDescription": { - "text": "Reports missing and deprecated properties, unresolved references, and invalid values in the 'additional-spring-configuration-metadata.json' configuration file. Example: '{\n \"properties\": [\n {\n \"name\": \"old.key\",\n \"type\": \"com.Unknown\", // Reports 'Cannot resolve class 'Unknown''\n \"description\": \"Description for old.key\", // Reports 'Text should end with '.''\n \"deprecation\": {\n \"replacement\": \"new.key\", // Reports 'Cannot resolve configuration key reference 'new.key''\n \"reason\": \"Reason\", // Reports 'Text should end with '.''\n \"level\": \"warning\"\n }\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n // Reports 'Missing required 'name''\n \"type\": \"java.lang.String\"\n }\n ]\n }'", - "markdown": "Reports missing and deprecated properties, unresolved references, and invalid values\nin the `additional-spring-configuration-metadata.json` configuration file.\n\n**Example:**\n\n\n {\n \"properties\": [\n {\n \"name\": \"old.key\",\n \"type\": \"com.Unknown\", // Reports 'Cannot resolve class 'Unknown''\n \"description\": \"Description for old.key\", // Reports 'Text should end with '.''\n \"deprecation\": {\n \"replacement\": \"new.key\", // Reports 'Cannot resolve configuration key reference 'new.key''\n \"reason\": \"Reason\", // Reports 'Text should end with '.''\n \"level\": \"warning\"\n }\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n \"name\": \"duplicate\", // Reports 'Duplicate entry for 'duplicate''\n \"type\": \"java.lang.String\"\n },\n {\n // Reports 'Missing required 'name''\n \"type\": \"java.lang.String\"\n }\n ]\n }\n" + "text": "Reports unresolved aliases in YAML files. Example: 'some_key: *unknown_alias'", + "markdown": "Reports unresolved aliases in YAML files.\n\n**Example:**\n\n\n some_key: *unknown_alias\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Spring/Spring Boot", - "index": 138, + "id": "YAML", + "index": 150, "toolComponent": { "name": "QDJVM" } @@ -61780,29 +57806,26 @@ ] }, { - "id": "SpringBootReactorHooksOnDebug", + "id": "YAMLSchemaDeprecation", "shortDescription": { - "text": "Suspicious Hooks.onOperatorDebug() usage" + "text": "Deprecated YAML key" }, "fullDescription": { - "text": "Reports the usage of 'Hooks.onOperatorDebug()' when 'ReactorDebugAgent.init()' is called. If 'ReactorDebugAgent' is in the classpath, and 'spring.reactor.debug-agent.enabled' is 'true' (default value), 'ReactorDebugAgent.init()' is called automatically at startup. Using both 'Hooks.onOperatorDebug()' and 'ReactorDebugAgent.init()' cause doubled debugging stack frames generated by Reactor. Also, 'Hooks.onOperatorDebug()' can cause performance overhead. The quick-fix removes the invocation of 'Hooks.onOperatorDebug()'. Example: 'public void hook() {\n Hooks.onOperatorDebug(); // Reports 'Call Hooks.onOperatorDebug() while ReactorDebugAgent is initialized'\n }' After the quick-fix is applied: 'public void hook() {\n }' This inspection only triggers when Spring Boot version for the project or module is 2.2.0 or higher.", - "markdown": "Reports the usage of `Hooks.onOperatorDebug()` when `ReactorDebugAgent.init()` is called.\n\n\nIf `ReactorDebugAgent` is in the classpath, and `spring.reactor.debug-agent.enabled`\nis `true` (default value), `ReactorDebugAgent.init()` is called automatically at startup.\nUsing both `Hooks.onOperatorDebug()` and `ReactorDebugAgent.init()` cause doubled debugging stack frames generated by Reactor.\nAlso, `Hooks.onOperatorDebug()` can cause performance overhead.\n\nThe quick-fix removes the invocation of `Hooks.onOperatorDebug()`.\n\n**Example:**\n\n\n public void hook() {\n Hooks.onOperatorDebug(); // Reports 'Call Hooks.onOperatorDebug() while ReactorDebugAgent is initialized'\n }\n\nAfter the quick-fix is applied:\n\n\n public void hook() {\n }\n\nThis inspection only triggers when Spring Boot version for the project or module is 2.2.0 or higher." + "text": "Reports deprecated keys in YAML files. Deprecation is checked only if there exists a JSON schema associated with the corresponding YAML file. Note that the deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard 'deprecationMessage' extension. Scheme deprecation example: '{\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeDeprecatedProperty: some value'", + "markdown": "Reports deprecated keys in YAML files.\n\nDeprecation is checked only if there exists a JSON schema associated with the corresponding YAML file.\n\nNote that the deprecation mechanism is not defined in the JSON Schema specification yet,\nand this inspection uses a non-standard `deprecationMessage` extension.\n\n**Scheme deprecation example:**\n\n\n {\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeDeprecatedProperty: some value\n" }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WEAK WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Boot", - "index": 138, + "id": "YAML", + "index": 150, "toolComponent": { "name": "QDJVM" } @@ -61814,63 +57837,26 @@ ] }, { - "id": "ConfigurationProperties", + "id": "YAMLRecursiveAlias", "shortDescription": { - "text": "Invalid @ConfigurationProperties" + "text": "Recursive alias" }, "fullDescription": { - "text": "Reports invalid prefixes defined in the '@ConfigurationProperties' annotations: Missing prefix Empty prefix Duplicate prefix Prefix in notation other than kebab-case The inspection triggers in classes that are annotated with '@ConfigurationProperties' and not registered via '@EnableConfigurationProperties', marked as Spring component, or scanned via '@ConfigurationPropertiesScan'. This inspection only triggers in classes annotated with '@ConfigurationProperties' that are not scanned via '@ConfigurationPropertiesScan' when the Spring Boot version for the project or module is set to 2.2.0 or later. New in 2018.3", - "markdown": "Reports invalid prefixes defined in the `@ConfigurationProperties` annotations:\n\n* Missing prefix\n* Empty prefix\n* Duplicate prefix\n* Prefix in notation other than kebab-case\n\n\nThe inspection triggers in classes that are annotated with `@ConfigurationProperties` and not registered via `@EnableConfigurationProperties`,\nmarked as Spring component, or scanned via `@ConfigurationPropertiesScan`.\n\n\nThis inspection only triggers in classes annotated with `@ConfigurationProperties` that are not scanned via `@ConfigurationPropertiesScan`\nwhen the Spring Boot version for the project or module is set to 2.2.0 or later.\n\nNew in 2018.3" + "text": "Reports recursion in YAML aliases. Alias can't be recursive and be used inside the data referenced by a corresponding anchor. Example: 'some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor'", + "markdown": "Reports recursion in YAML aliases.\n\nAlias can't be recursive and be used inside the data referenced by a corresponding anchor.\n\n**Example:**\n\n\n some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor\n" }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "error", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Spring/Spring Boot", - "index": 138, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "SpringBootApplicationProperties", - "shortDescription": { - "text": "Invalid properties configuration" - }, - "fullDescription": { - "text": "Reports unresolved and deprecated configuration keys and invalid values in Spring Boot application '.properties' configuration files, which can lead to runtime errors. Example: 'server.port=invalid # Reports 'Cannot convert 'invalid' to java.lang.Integer'' If a deprecated configuration key has a replacement key, you can apply the 'Use replacement key' quick-fix. Example: 'logging.path=${path} # Reports 'Deprecated configuration property 'logging.path''' After the quick-fix is applied: 'logging.file.path=${path}' If a configuration key is not defined in 'spring-configuration-metadata.json', you can apply the 'Define configuration key' quick-fix that creates the 'META-INF/spring-additional-configuration-metadata.json' file and defines the necessary key. Example: 'new.key=value #Reports 'Cannot resolve configuration property 'new.key''' After the quick-fix is applied, the following is added to 'META-INF/spring-additional-configuration-metadata.json': '{\n \"properties\": [\n {\n \"name\": \"new.key\",\n \"type\": \"java.lang.String\",\n \"description\": \"Description for new.key.\"\n }\n] }' The inspection also highlights index notation errors in list and map configuration keys. Example: 'spring.datasource.schema[]=${schema} #Reports 'Missing index value'' Use the Replacement tokens option to define tokens used for value placeholders in configuration files. These tokens are specified in the form 'beginToken*endToken'. Without the '*', the token is assumed to be the same for start and end. For example, the default is '@' for both start and end token, which enables you to define placeholders, such as 'some.property=@another.property@'. Values inside the replacement token ('@property.key@') will not be highlighted.", - "markdown": "Reports unresolved and deprecated configuration keys and invalid values in Spring Boot application `.properties` configuration files,\nwhich can lead to runtime errors.\n\n**Example:**\n\n\n server.port=invalid # Reports 'Cannot convert 'invalid' to java.lang.Integer'\n\nIf a deprecated configuration key has a replacement key, you can apply the 'Use replacement key' quick-fix.\n\n**Example:**\n\n\n logging.path=${path} # Reports 'Deprecated configuration property 'logging.path''\n\nAfter the quick-fix is applied:\n\n\n logging.file.path=${path}\n\n\nIf a configuration key is not defined in `spring-configuration-metadata.json`, you can apply the 'Define configuration key' quick-fix\nthat creates the `META-INF/spring-additional-configuration-metadata.json` file and defines the necessary key.\n\n**Example:**\n\n\n new.key=value #Reports 'Cannot resolve configuration property 'new.key''\n\nAfter the quick-fix is applied, the following is added to `META-INF/spring-additional-configuration-metadata.json`:\n\n\n {\n \"properties\": [\n {\n \"name\": \"new.key\",\n \"type\": \"java.lang.String\",\n \"description\": \"Description for new.key.\"\n }\n ] }\n\nThe inspection also highlights index notation errors in list and map configuration keys.\n\n**Example:**\n\n\n spring.datasource.schema[]=${schema} #Reports 'Missing index value'\n\n\nUse the **Replacement tokens** option to define tokens used for value placeholders in configuration files.\nThese tokens are specified in the form `beginToken*endToken`.\nWithout the `*`, the token is assumed to be the same for start and end.\n\n\nFor example, the default is `@` for both start and end token,\nwhich enables you to define placeholders, such as `some.property=@another.property@`.\n\nValues inside the replacement token (`@property.key@`) will not be highlighted." - }, - "defaultConfiguration": { - "enabled": true, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Spring/Spring Boot", - "index": 138, + "id": "YAML", + "index": 150, "toolComponent": { "name": "QDJVM" } @@ -61882,29 +57868,26 @@ ] }, { - "id": "SpringShellCommandInspection", + "id": "YAMLUnusedAnchor", "shortDescription": { - "text": "Incorrect Spring Shell command declarations" + "text": "Unused anchor" }, "fullDescription": { - "text": "Reports incorrect Spring Shell command declarations: Missing command description Command is not inside 'org.springframework.shell.standard.@ShellComponent' Example: '// all methods will be reported due to missing @ShellComponent\nclass MathCommands {\n\n @ShellMethod(\"\")\n public int sum(int a, int b) { // method will be reported due to empty description\n return a + b;\n }\n\n @ShellMethod\n public int mul(int a, int b) { // method will be reported due to missing description\n return a * b;\n }\n}'", - "markdown": "Reports incorrect Spring Shell command declarations:\n\n* Missing command description\n* Command is not inside `org.springframework.shell.standard.@ShellComponent`\n\nExample:\n\n\n // all methods will be reported due to missing @ShellComponent\n class MathCommands {\n\n @ShellMethod(\"\")\n public int sum(int a, int b) { // method will be reported due to empty description\n return a + b;\n }\n\n @ShellMethod\n public int mul(int a, int b) { // method will be reported due to missing description\n return a * b;\n }\n }\n" + "text": "Reports unused anchors. Example: 'some_key: &some_anchor\n key1: value1'", + "markdown": "Reports unused anchors.\n\n**Example:**\n\n\n some_key: &some_anchor\n key1: value1\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Shell", - "index": 139, + "id": "YAML", + "index": 150, "toolComponent": { "name": "QDJVM" } @@ -61924,33 +57907,30 @@ "isComprehensive": false }, { - "name": "com.intellij.microservices.jvm", - "version": "222.4502", + "name": "com.intellij.plugins.dependencyAnalysis", + "version": "223.8394", "rules": [ { - "id": "UastIncorrectMimeTypeInspection", + "id": "CheckDependencyLicenses", "shortDescription": { - "text": "Incorrect MIME Type declaration" + "text": "Check dependency licenses" }, "fullDescription": { - "text": "Reports incorrect MIME types (for example, in 'Content-Type' strings) for HTTP servers and clients.", - "markdown": "Reports incorrect MIME types (for example, in `Content-Type` strings) for HTTP servers and clients." + "text": "Check dependencies licenses for possible problems: missing or prohibited licenses, or other compliance issues", + "markdown": "Check dependencies licenses for possible problems: missing or prohibited licenses, or other compliance issues" }, "defaultConfiguration": { "enabled": false, - "level": "error", + "level": "warning", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "JVM languages", - "index": 1, + "id": "Dependency analysis", + "index": 151, "toolComponent": { "name": "QDJVM" } @@ -61962,75 +57942,26 @@ ] }, { - "id": "UastIncorrectHttpHeaderInspection", + "id": "CheckModuleLicenses", "shortDescription": { - "text": "Unknown HTTP header" + "text": "Check module licenses" }, "fullDescription": { - "text": "Reports unknown HTTP headers that do not match any publicly known headers. The quick fix suggests adding the header to the list of custom headers to avoid triggering this inspection in the future. Custom HTTP headers are listed for the inspection with the same name in the HTTP Client group.", - "markdown": "Reports unknown HTTP headers that do not match any [publicly\nknown headers](https://www.iana.org/assignments/message-headers/message-headers.xml). The quick fix suggests adding the header to the list of custom headers to avoid triggering this inspection in the\nfuture.\n\nCustom HTTP headers are listed for the inspection with the same name in the HTTP Client group." + "text": "Check module licenses for possible problems: missing licenses or other compliance issues", + "markdown": "Check module licenses for possible problems: missing licenses or other compliance issues" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "JVM languages", - "index": 1, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "com.intellij.spring.ws", - "version": "222.4502", - "rules": [ - { - "id": "SpringWebServiceAnnotationsInconsistencyInspection", - "shortDescription": { - "text": "Incorrect Spring Web Services endpoint annotation" - }, - "fullDescription": { - "text": "Reports incorrect Spring Web Services annotations. Example: '// 1. @PayloadRoot on non-endpoint classes\n public class HolidayEndpoint {\n\t@PayloadRoot(namespace = NAMESPACE_URI, localPart = \"HolidayRequest\") // @PayloadRoot is supported on @Endpoint classes\n\tpublic void handleHolidayRequest(@RequestPayload Element holidayRequest) throws Exception {\n ...\n }\n\n // 2. @XPathParam on @PayLoad methods\n @Endpoint\n public class AirlineEndpoint {\n\t @Namespace(prefix = \"m\", uri = MESSAGES_NAMESPACE) @ResponsePayload\n\t public GetFlightsResponse getFlights(@XPathParam(\"//m:sc\") String serviceClassString) {..} //@XPathParam is supported on @PayLoad methods\n }\n}'", - "markdown": "Reports incorrect [Spring Web Services](https://spring.io/projects/spring-ws) annotations.\n\n**Example:**\n\n\n // 1. @PayloadRoot on non-endpoint classes\n public class HolidayEndpoint {\n \t@PayloadRoot(namespace = NAMESPACE_URI, localPart = \"HolidayRequest\") // @PayloadRoot is supported on @Endpoint classes\n \tpublic void handleHolidayRequest(@RequestPayload Element holidayRequest) throws Exception {\n ...\n }\n\n // 2. @XPathParam on @PayLoad methods\n @Endpoint\n public class AirlineEndpoint {\n \t @Namespace(prefix = \"m\", uri = MESSAGES_NAMESPACE) @ResponsePayload\n \t public GetFlightsResponse getFlights(@XPathParam(\"//m:sc\") String serviceClassString) {..} //@XPathParam is supported on @PayLoad methods\n }\n }\n" - }, - "defaultConfiguration": { - "enabled": true, - "level": "warning", - "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Web Services", - "index": 143, + "id": "Dependency analysis", + "index": 151, "toolComponent": { "name": "QDJVM" } @@ -62042,29 +57973,26 @@ ] }, { - "id": "SpringMessageDispatcherWebXmlInspection", + "id": "IncorrectProjectDependenciesConfiguration", "shortDescription": { - "text": "Incorrect Spring Web Services servlet declaration in web.xml" + "text": "Check configuration of project dependencies" }, "fullDescription": { - "text": "Reports MessageDispatcherServlet servlets that are registered in 'web.xml' but there is no required XML application contexts in web roots. web.xml example: '<web-app>\n <servlet>\n <servlet-name>spring-ws</servlet-name> <!-- Cannot find application context WEB-INF/spring-ws-servlet.xml -->\n <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>\n <load-on-startup>1</load-on-startup>\n </servlet>\n</web-app>'", - "markdown": "Reports\n[MessageDispatcherServlet](https://docs.spring.io/spring-ws/sites/2.0/apidocs/org/springframework/ws/transport/http/MessageDispatcherServlet.html)\nservlets that are registered in `web.xml` but there is no required XML application contexts in web roots.\n\n**web.xml example:**\n\n\n <web-app>\n <servlet>\n <servlet-name>spring-ws</servlet-name> <!-- Cannot find application context WEB-INF/spring-ws-servlet.xml -->\n <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>\n <load-on-startup>1</load-on-startup>\n </servlet>\n </web-app>\n" + "text": "Checking configuration of project dependencies", + "markdown": "Checking configuration of project dependencies" }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "warning", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Web Services", - "index": 143, + "id": "Dependency analysis", + "index": 151, "toolComponent": { "name": "QDJVM" } @@ -62076,29 +58004,26 @@ ] }, { - "id": "SpringWebServicesConfigurationsInspection", + "id": "CheckThirdPartySoftwareList", "shortDescription": { - "text": "Incorrect Spring Web Services configurations in xml application contexts" + "text": "Check third party software list" }, "fullDescription": { - "text": "Reports incorrect Spring Web Services XML-based configuration. For example, if there are no configured beans of the following types in the Spring application context: SimpleHttpServerFactoryBean MailMessageReceiver AbstractJmsListeningContainer WebServiceMessageReceiverHandlerAdapter", - "markdown": "Reports incorrect [Spring Web Services](https://spring.io/projects/spring-ws) XML-based configuration.\nFor example, if there are no configured beans of the following types in the Spring application context:\n\n* [SimpleHttpServerFactoryBean](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/remoting/support/SimpleHttpServerFactoryBean.html)\n* [MailMessageReceiver](https://docs.spring.io/spring-ws/site/apidocs/org/springframework/ws/transport/mail/MailMessageReceiver.html)\n* [AbstractJmsListeningContainer](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jms/listener/AbstractJmsListeningContainer.html)\n* [WebServiceMessageReceiverHandlerAdapter](https://docs.spring.io/spring-ws/sites/2.0/apidocs/org/springframework/ws/transport/http/WebServiceMessageReceiverHandlerAdapter.html)" + "text": "Check project for possible problems: user's third party software list does not match the collected project metadata", + "markdown": "Check project for possible problems: user's third party software list does not match the collected project metadata" }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "warning", "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring Web Services", - "index": 143, + "id": "Dependency analysis", + "index": 151, "toolComponent": { "name": "QDJVM" } @@ -62118,33 +58043,30 @@ "isComprehensive": false }, { - "name": "com.intellij.plugins.dependencyAnalysis", - "version": "222.4502", + "name": "com.intellij.javaee.el", + "version": "223.8394", "rules": [ { - "id": "CheckDependencyLicenses", + "id": "ELValidationInspection", "shortDescription": { - "text": "Check dependency licenses" + "text": "EL validation" }, "fullDescription": { - "text": "Check dependencies licenses for possible problems: missing or prohibited licenses, or other compliance issues", - "markdown": "Check dependencies licenses for possible problems: missing or prohibited licenses, or other compliance issues" + "text": "Reports possible EL problems, such as unresolved references and invalid EL locations.", + "markdown": "Reports possible EL problems, such as unresolved references and invalid EL locations." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Dependency analysis", - "index": 146, + "id": "EL", + "index": 152, "toolComponent": { "name": "QDJVM" } @@ -62154,31 +58076,40 @@ ] } ] - }, + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.jetbrains.sh", + "version": "223.8394", + "rules": [ { - "id": "CheckModuleLicenses", + "id": "ShellCheck", "shortDescription": { - "text": "Check module licenses" + "text": "ShellCheck" }, "fullDescription": { - "text": "Check module licenses for possible problems: missing licenses or other compliance issues", - "markdown": "Check module licenses for possible problems: missing licenses or other compliance issues" + "text": "Reports shell script bugs detected by the integrated ShellCheck static analysis tool.", + "markdown": "Reports shell script bugs detected by the integrated [ShellCheck](https://github.com/koalaman/shellcheck) static analysis tool." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Dependency analysis", - "index": 146, + "id": "Shell script", + "index": 154, "toolComponent": { "name": "QDJVM" } @@ -62188,31 +58119,40 @@ ] } ] - }, + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij.spring.mvc", + "version": "223.8394", + "rules": [ { - "id": "IncorrectProjectDependenciesConfiguration", + "id": "SpringMVCViewInspection", "shortDescription": { - "text": "Check configuration of project dependencies" + "text": "Unresolved view reference" }, "fullDescription": { - "text": "Check project for possible problems: user's third party software list does not match the collected project metadata", - "markdown": "Check project for possible problems: user's third party software list does not match the collected project metadata" + "text": "Reports unresolved Spring MVC View references. Example @RequestMapping\n public String viewHandler() {\n return \"viewName\"; // will be highlighted if no view with \"viewName\" can be found\n }", + "markdown": "Reports unresolved Spring MVC View references.\n\nExample\n\n```\n @RequestMapping\n public String viewHandler() {\n return \"viewName\"; // will be highlighted if no view with \"viewName\" can be found\n }\n```" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Dependency analysis", - "index": 146, + "id": "Spring/Spring MVC", + "index": 156, "toolComponent": { "name": "QDJVM" } @@ -62224,29 +58164,26 @@ ] }, { - "id": "CheckThirdPartySoftwareList", + "id": "SpringMVCInitBinder", "shortDescription": { - "text": "Check third party software list" + "text": "Non-void @InitBinder method" }, "fullDescription": { - "text": "Check project for possible problems: user's third party software list does not match the collected project metadata", - "markdown": "Check project for possible problems: user's third party software list does not match the collected project metadata" + "text": "Reports Spring MVC Controller methods annotated with '@InitBinder' that are not declared as 'void'. According to the specification, init-binder methods should be declared as 'void'.", + "markdown": "Reports Spring MVC Controller methods annotated with `@InitBinder` that are not declared as `void`.\n\nAccording to the [specification](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/InitBinder.html),\ninit-binder methods should be declared as `void`." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "ERROR" } }, "relationships": [ { "target": { - "id": "Dependency analysis", - "index": 146, + "id": "Spring/Spring MVC", + "index": 156, "toolComponent": { "name": "QDJVM" } @@ -62256,43 +58193,28 @@ ] } ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "com.intellij.javaee.el", - "version": "222.4502", - "rules": [ + }, { - "id": "ELValidationInspection", + "id": "MVCPathVariableInspection", "shortDescription": { - "text": "EL validation" + "text": "Mismatch in @PathVariable declarations and usages" }, "fullDescription": { - "text": "Reports possible EL problems, such as unresolved references and invalid EL locations.", - "markdown": "Reports possible EL problems, such as unresolved references and invalid EL locations." + "text": "Reports '@PathVariable' parameters that are declared in the method signature but are absent in the URL path or vice versa. The quick-fix adds the missing parameter. Example: '@RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String name_is_not_equal_to_myVariable) {\n return \"...\";\n }' After the quick-fix is applied the result looks like: '@RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String myVariable) {\n return \"...\";\n }'", + "markdown": "Reports `@PathVariable` parameters that are declared in the method signature but are absent in the URL path or vice versa.\nThe quick-fix adds the missing parameter.\n\n**Example:**\n\n\n @RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String name_is_not_equal_to_myVariable) {\n return \"...\";\n }\n\nAfter the quick-fix is applied the result looks like:\n\n\n @RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String myVariable) {\n return \"...\";\n }\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "EL", - "index": 147, + "id": "Spring/Spring MVC", + "index": 156, "toolComponent": { "name": "QDJVM" } @@ -62312,67 +58234,30 @@ "isComprehensive": false }, { - "name": "com.intellij.spring.mvc", - "version": "222.4502", + "name": "tanvd.grazi", + "version": "223.8394", "rules": [ { - "id": "SpringMVCViewInspection", + "id": "LanguageDetectionInspection", "shortDescription": { - "text": "Unresolved view reference" + "text": "Natural language detection" }, "fullDescription": { - "text": "Reports unresolved Spring MVC View references. Example @RequestMapping\n public String viewHandler() {\n return \"viewName\"; // will be highlighted if no view with \"viewName\" can be found\n }", - "markdown": "Reports unresolved Spring MVC View references.\n\nExample\n\n```\n @RequestMapping\n public String viewHandler() {\n return \"viewName\"; // will be highlighted if no view with \"viewName\" can be found\n }\n```" + "text": "Detects natural languages and suggests enabling corresponding grammar and spelling checks.", + "markdown": "Detects natural languages and suggests enabling corresponding grammar and spelling checks." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - "relationships": [ - { - "target": { - "id": "Spring/Spring MVC", - "index": 150, - "toolComponent": { - "name": "QDJVM" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "SpringMVCInitBinder", - "shortDescription": { - "text": "Non-void @InitBinder method" - }, - "fullDescription": { - "text": "Reports Spring MVC Controller methods annotated with '@InitBinder' that are not declared as 'void'. According to the specification, init-binder methods should be declared as 'void'.", - "markdown": "Reports Spring MVC Controller methods annotated with `@InitBinder` that are not declared as `void`.\n\nAccording to the [specification](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/InitBinder.html),\ninit-binder methods should be declared as `void`." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "ideaSeverity": "ERROR", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "WARNING" } }, "relationships": [ { "target": { - "id": "Spring/Spring MVC", - "index": 150, + "id": "Proofreading", + "index": 92, "toolComponent": { "name": "QDJVM" } @@ -62384,29 +58269,26 @@ ] }, { - "id": "MVCPathVariableInspection", + "id": "GrazieInspection", "shortDescription": { - "text": "Mismatch in @PathVariable declarations and usages" + "text": "Grammar" }, "fullDescription": { - "text": "Reports '@PathVariable' parameters that are declared in the method signature but are absent in the URL path or vice versa. The quick-fix adds the missing parameter. Example: '@RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String name_is_not_equal_to_myVariable) {\n return \"...\";\n }' After the quick-fix is applied the result looks like: '@RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String myVariable) {\n return \"...\";\n }'", - "markdown": "Reports `@PathVariable` parameters that are declared in the method signature but are absent in the URL path or vice versa.\nThe quick-fix adds the missing parameter.\n\n**Example:**\n\n\n @RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String name_is_not_equal_to_myVariable) {\n return \"...\";\n }\n\nAfter the quick-fix is applied the result looks like:\n\n\n @RequestMapping(\"/path/{myVariable}/\")\n public String handler(@PathVariable String myVariable) {\n return \"...\";\n }\n" + "text": "Reports grammar mistakes in your text. You can configure the inspection in Settings | Editor | Natural Languages | Grammar.", + "markdown": "Reports grammar mistakes in your text. You can configure the inspection in [Settings \\| Editor \\| Natural Languages \\| Grammar](settings://reference.settingsdialog.project.grazie)." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] + "ideaSeverity": "TYPO" } }, "relationships": [ { "target": { - "id": "Spring/Spring MVC", - "index": 150, + "id": "Proofreading", + "index": 92, "toolComponent": { "name": "QDJVM" } @@ -62429,15 +58311,16 @@ }, "invocations": [ { - "exitCode": 0, + "exitCode": 255, "toolExecutionNotifications": [ { "message": { - "text": "Reporting from [\"Java annotator\", \"Kotlin annotator\"] 'sanity' inspections was suspended due to high problems count." + "text": "Reporting from [\"Kotlin annotator\"] 'sanity' inspections was suspended due to high problems count." }, "level": "error" } ], + "exitCodeDescription": "Qodana reached failThreshold", "executionSuccessful": true } ], @@ -62445,19 +58328,13 @@ "versionControlProvenance": [ { "repositoryUri": "https://github.com/Kotlin/dokka", - "revisionId": "b6da4e040142caa072b1fbec0e0c980b5da58a0e", - "branch": "update-qodana", + "revisionId": "b7a5eac3fc848501735b3520fc12f6f5d21b9bd4", + "branch": "master", "properties": { "repoUrl": "https://github.com/Kotlin/dokka", - "lastAuthorName": "IgnatBeresnev", + "lastAuthorName": "Vadim Mishenev", "vcsType": "Git", - "lastAuthorEmail": "ignat.beresnev@jetbrains.com", - "tags": [ - "repoUrl", - "lastAuthorEmail", - "lastAuthorName", - "vcsType" - ] + "lastAuthorEmail": "vad-mishenev@yandex.ru" } } ], @@ -62467,33 +58344,33 @@ "kind": "fail", "level": "warning", "message": { - "text": "Remove deprecated symbol import", - "markdown": "Remove deprecated symbol import" + "text": "No cast needed", + "markdown": "No cast needed" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt", + "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 9, - "startColumn": 1, - "charOffset": 297, - "charLength": 67, + "startLine": 1178, + "startColumn": 13, + "charOffset": 58330, + "charLength": 58, "snippet": { - "text": "import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName" + "text": "overriddenDescriptors.first().getConcreteDescriptor() as T" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 7, + "startLine": 1176, "startColumn": 1, - "charOffset": 206, - "charLength": 268, + "charOffset": 58261, + "charLength": 143, "snippet": { - "text": "import com.intellij.psi.javadoc.PsiDocTag\nimport org.jetbrains.dokka.utilities.DokkaLogger\nimport org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName\nimport org.jetbrains.kotlin.psi.KtElement\nimport org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull" + "text": " } else {\n @Suppress(\"UNCHECKED_CAST\")\n overriddenDescriptors.first().getConcreteDescriptor() as T\n }\n }" } } }, @@ -62506,224 +58383,229 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "1b2c64c75c66d200ac5d295a3d1fcc696adf61038a3a239b541187003687fa5b" + "equalIndicator/v1": "a87728ad62f5df8a1d4c90685e37df12badfce2c99c1f5e994d56ef7d867e228" }, + "baselineState": "new", "properties": { "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "PackageDirectoryMismatch", + "ruleId": "KotlinDeprecation", "kind": "fail", - "level": "error", + "level": "warning", "message": { - "text": "Package directive does not match the file location", - "markdown": "Package directive does not match the file location" + "text": "No cast needed", + "markdown": "No cast needed" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/context/MockContext.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DokkaResolutionFacade.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 1, - "charOffset": 0, - "charLength": 43, + "startLine": 80, + "startColumn": 78, + "charOffset": 3455, + "charLength": 15, "snippet": { - "text": "package org.jetbrains.dokka.testApi.context" + "text": "descriptor as V" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 78, "startColumn": 1, - "charOffset": 0, - "charLength": 90, + "charOffset": 3296, + "charLength": 350, "snippet": { - "text": "package org.jetbrains.dokka.testApi.context\n\nimport org.jetbrains.dokka.DokkaConfiguration" + "text": " @Suppress(\"UNCHECKED_CAST\")\n return when {\n slice == BindingContext.DECLARATION_TO_DESCRIPTOR -> descriptor as V\n slice == BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER && (element as KtParameter).hasValOrVar() -> descriptor as V\n else -> null" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "8d9d2b3dafc0f7f9046c878bada2df1ea02253ad1d3c02abd57cdea36b2ca35f" + "equalIndicator/v1": "902b9ec356ec6dc640d1c590da56610c8fd0fd227ad9a4b0abb09800bb5cdcc1" }, + "baselineState": "new", "properties": { - "ideaSeverity": "ERROR", + "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "PackageDirectoryMismatch", + "ruleId": "KotlinDeprecation", "kind": "fail", - "level": "error", + "level": "warning", "message": { - "text": "Package directive does not match the file location", - "markdown": "Package directive does not match the file location" + "text": "No cast needed", + "markdown": "No cast needed" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DokkaResolutionFacade.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 1, - "charOffset": 0, - "charLength": 42, + "startLine": 81, + "startColumn": 124, + "charOffset": 3594, + "charLength": 15, "snippet": { - "text": "package org.jetbrains.dokka.testApi.logger" + "text": "descriptor as V" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 79, "startColumn": 1, - "charOffset": 0, - "charLength": 92, + "charOffset": 3344, + "charLength": 324, "snippet": { - "text": "package org.jetbrains.dokka.testApi.logger\n\nimport org.jetbrains.dokka.utilities.DokkaLogger" + "text": " return when {\n slice == BindingContext.DECLARATION_TO_DESCRIPTOR -> descriptor as V\n slice == BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER && (element as KtParameter).hasValOrVar() -> descriptor as V\n else -> null\n }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "25bbec7ca8f95528b9ecffc2488c1a5231ec9f9672a672f12d414949c1a6c931" + "equalIndicator/v1": "12e5acf3b673f2b1b455201372cf96db924051a60643bdb6a8e65006eb7a10fd" }, + "baselineState": "new", "properties": { - "ideaSeverity": "ERROR", + "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "PackageDirectoryMismatch", + "ruleId": "UselessCallOnCollection", "kind": "fail", - "level": "error", + "level": "warning", "message": { - "text": "Package directive does not match the file location", - "markdown": "Package directive does not match the file location" + "text": "Call on collection type may be reduced", + "markdown": "Call on collection type may be reduced" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", + "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 1, - "charOffset": 0, - "charLength": 46, + "startLine": 595, + "startColumn": 62, + "charOffset": 30679, + "charLength": 11, "snippet": { - "text": "package org.jetbrains.dokka.testApi.testRunner" + "text": ".mapNotNull" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 593, "startColumn": 1, - "charOffset": 0, - "charLength": 99, + "charOffset": 30446, + "charLength": 358, "snippet": { - "text": "package org.jetbrains.dokka.testApi.testRunner\n\nimport com.intellij.openapi.application.PathManager" + "text": " private fun PsiTypeParameterListOwner.mapTypeParameters(dri: DRI): List<DTypeParameter> {\n fun mapBounds(bounds: Array<JvmReferenceType>): List<Bound> =\n if (bounds.isEmpty()) emptyList() else bounds.mapNotNull {\n (it as? PsiClassType)?.let { classType -> Nullable(getBound(classType)) }\n }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "d091bb5eb5d558992731ebba7999dda01ce1c9c952f5e9128f3565557c5572fe" + "equalIndicator/v1": "e14e8e6306459720051114fefcdd1e464add8a0ce33b5a343728624789466956" }, + "baselineState": "new", "properties": { - "ideaSeverity": "ERROR", + "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "PackageDirectoryMismatch", + "ruleId": "UselessCallOnCollection", "kind": "fail", - "level": "error", + "level": "warning", "message": { - "text": "Package directive does not match the file location", - "markdown": "Package directive does not match the file location" + "text": "Call on collection type may be reduced", + "markdown": "Call on collection type may be reduced" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 1, - "charOffset": 0, - "charLength": 18, + "startLine": 463, + "startColumn": 13, + "charOffset": 20756, + "charLength": 11, "snippet": { - "text": "package signatures" + "text": ".mapNotNull" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 461, "startColumn": 1, - "charOffset": 0, - "charLength": 42, + "charOffset": 20670, + "charLength": 270, "snippet": { - "text": "package signatures\n\nimport org.jsoup.Jsoup" + "text": " ): ResolverForProject<ModuleInfo> {\n val javaRoots = classpath\n .mapNotNull { file ->\n val rootFile = when (file.extension) {\n \"jar\" -> StandardFileSystems.jar().findFileByPath(\"${file.absolutePath}$JAR_SEPARATOR\")" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "74a48f0e72f0052655cb0015f90e066dd0812b06219fc5af2102f8b4eb0e4f63" + "equalIndicator/v1": "d099cb49fb98a569d05abade5958ddecdec4e84c41d6e6bcd41c08961aedaab9" }, + "baselineState": "new", "properties": { - "ideaSeverity": "ERROR", + "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -62739,16 +58621,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt", + "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 51, + "charLength": 42, "snippet": { - "text": "package org.jetbrains.dokka.base.testApi.testRunner" + "text": "package org.jetbrains.dokka.testApi.logger" }, "sourceLanguage": "kotlin" }, @@ -62756,27 +58638,28 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 94, + "charLength": 92, "snippet": { - "text": "package org.jetbrains.dokka.base.testApi.testRunner\n\nimport org.jetbrains.dokka.CoreExtensions" + "text": "package org.jetbrains.dokka.testApi.logger\n\nimport org.jetbrains.dokka.utilities.DokkaLogger" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "604c0d025faa8e4d4b0a912606f6083a790a6bf69a3fa07c47e933a05b62562c" + "equalIndicator/v1": "25bbec7ca8f95528b9ecffc2488c1a5231ec9f9672a672f12d414949c1a6c931" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -62792,16 +58675,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt", + "uri": "core/test-api/src/main/kotlin/testApi/context/MockContext.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 13, + "charLength": 43, "snippet": { - "text": "package utils" + "text": "package org.jetbrains.dokka.testApi.context" }, "sourceLanguage": "kotlin" }, @@ -62809,27 +58692,28 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 45, + "charLength": 90, "snippet": { - "text": "package utils\n\nimport org.jsoup.nodes.Element" + "text": "package org.jetbrains.dokka.testApi.context\n\nimport org.jetbrains.dokka.DokkaConfiguration" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "667d79296cf078b7d8bbdf6d9ef6cba42f7a795c031b3b635252e7d846dde270" + "equalIndicator/v1": "8d9d2b3dafc0f7f9046c878bada2df1ea02253ad1d3c02abd57cdea36b2ca35f" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -62845,16 +58729,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/Substitutor.kt", + "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 37, + "charLength": 46, "snippet": { - "text": "package org.jetbrains.dokka.templates" + "text": "package org.jetbrains.dokka.testApi.testRunner" }, "sourceLanguage": "kotlin" }, @@ -62862,27 +58746,28 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 101, + "charLength": 99, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.SubstitutionCommand" + "text": "package org.jetbrains.dokka.testApi.testRunner\n\nimport com.intellij.openapi.application.PathManager" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.templating.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "da7e88857d2f059ece7354cd5fa4dc0eb78e7247f067046c7f108315a587c1cb" + "equalIndicator/v1": "d091bb5eb5d558992731ebba7999dda01ce1c9c952f5e9128f3565557c5572fe" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -62898,16 +58783,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/CommandHandler.kt", + "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 37, + "charLength": 13, "snippet": { - "text": "package org.jetbrains.dokka.templates" + "text": "package utils" }, "sourceLanguage": "kotlin" }, @@ -62915,27 +58800,28 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 89, + "charLength": 45, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command" + "text": "package utils\n\nimport org.jsoup.nodes.Element" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.templating.main", + "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "6cbf48abc9e44118dfd217c0af11ab35537b0ba656c1e0eff4cb58aa940e96bc" + "equalIndicator/v1": "667d79296cf078b7d8bbdf6d9ef6cba42f7a795c031b3b635252e7d846dde270" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -62951,16 +58837,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/PackageListProcessingStrategy.kt", + "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 52, + "charLength": 18, "snippet": { - "text": "package org.jetbrains.dokka.allModulesPage.templates" + "text": "package signatures" }, "sourceLanguage": "kotlin" }, @@ -62968,27 +58854,28 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 122, + "charLength": 42, "snippet": { - "text": "package org.jetbrains.dokka.allModulesPage.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration.DokkaModuleDescription" + "text": "package signatures\n\nimport org.jsoup.Jsoup" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.templating.main", + "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "33ec89d00a0d7303c036c0f8d59ef58a08c235411eeb2725f16b8288472f44c6" + "equalIndicator/v1": "74a48f0e72f0052655cb0015f90e066dd0812b06219fc5af2102f8b4eb0e4f63" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63004,16 +58891,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/FallbackTemplateProcessingStrategy.kt", + "uri": "plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 37, + "charLength": 51, "snippet": { - "text": "package org.jetbrains.dokka.templates" + "text": "package org.jetbrains.dokka.base.testApi.testRunner" }, "sourceLanguage": "kotlin" }, @@ -63021,27 +58908,28 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 84, + "charLength": 94, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration" + "text": "package org.jetbrains.dokka.base.testApi.testRunner\n\nimport org.jetbrains.dokka.CoreExtensions" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.templating.main", + "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "7414f6addc1034c55f3181743344b725931bd320fa60011503374f0e81c738a3" + "equalIndicator/v1": "604c0d025faa8e4d4b0a912606f6083a790a6bf69a3fa07c47e933a05b62562c" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63057,16 +58945,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/AddToNavigationCommandHandler.kt", + "uri": "plugins/templating/src/main/kotlin/templates/PackageListProcessingStrategy.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 37, + "charLength": 52, "snippet": { - "text": "package org.jetbrains.dokka.templates" + "text": "package org.jetbrains.dokka.allModulesPage.templates" }, "sourceLanguage": "kotlin" }, @@ -63074,9 +58962,9 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 104, + "charLength": 122, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.AddToNavigationCommand" + "text": "package org.jetbrains.dokka.allModulesPage.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration.DokkaModuleDescription" } } }, @@ -63089,12 +58977,13 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "5ec10a3f393fa74e6d770dad433b2182e8d051230eab2391c3da78c837e5cba3" + "equalIndicator/v1": "33ec89d00a0d7303c036c0f8d59ef58a08c235411eeb2725f16b8288472f44c6" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63144,10 +59033,11 @@ "partialFingerprints": { "equalIndicator/v1": "fbcc107d4e3fe66c0484ee4367dbe4da67270a8327b8d00489cefe69ec1f61a8" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63163,7 +59053,7 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/TemplatingPlugin.kt", + "uri": "plugins/templating/src/main/kotlin/templates/AddToNavigationCommandHandler.kt", "uriBaseId": "SRCROOT" }, "region": { @@ -63180,9 +59070,9 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 120, + "charLength": 104, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.allModulesPage.templates.PackageListProcessingStrategy" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.AddToNavigationCommand" } } }, @@ -63195,12 +59085,13 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "c69de2c673d73426b3c1627ab6731d569067c9492a284f4bb6c766da6b789d68" + "equalIndicator/v1": "5ec10a3f393fa74e6d770dad433b2182e8d051230eab2391c3da78c837e5cba3" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63216,7 +59107,7 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/PathToRootSubstitutor.kt", + "uri": "plugins/templating/src/main/kotlin/templates/Substitutor.kt", "uriBaseId": "SRCROOT" }, "region": { @@ -63233,9 +59124,9 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 111, + "charLength": 101, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.PathToRootSubstitutionCommand" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.SubstitutionCommand" } } }, @@ -63248,12 +59139,13 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "84e8acb420595d1e882ba384b8d99bfa0a86e8b1ac83bb654f5b186d9f931c65" + "equalIndicator/v1": "da7e88857d2f059ece7354cd5fa4dc0eb78e7247f067046c7f108315a587c1cb" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63269,16 +59161,16 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/JsonElementBasedTemplateProcessingStrategy.kt", + "uri": "plugins/templating/src/main/kotlin/templates/CommandHandler.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 52, + "charLength": 37, "snippet": { - "text": "package org.jetbrains.dokka.allModulesPage.templates" + "text": "package org.jetbrains.dokka.templates" }, "sourceLanguage": "kotlin" }, @@ -63286,9 +59178,9 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 122, + "charLength": 89, "snippet": { - "text": "package org.jetbrains.dokka.allModulesPage.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration.DokkaModuleDescription" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command" } } }, @@ -63301,12 +59193,13 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "c6f09facbfc4caf11c0ff7b7977db2001d5749aa10e3819449335c935f319686" + "equalIndicator/v1": "6cbf48abc9e44118dfd217c0af11ab35537b0ba656c1e0eff4cb58aa940e96bc" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63322,7 +59215,7 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt", + "uri": "plugins/templating/src/main/kotlin/templates/DirectiveBasedTemplateProcessing.kt", "uriBaseId": "SRCROOT" }, "region": { @@ -63339,9 +59232,9 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 89, + "charLength": 84, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration" } } }, @@ -63354,12 +59247,13 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "0570c6420930cc39294dac42d814869da58d0d2a1e067731ad25fc3bc0f08950" + "equalIndicator/v1": "05bf222c7532688d38c0d402e5e9c0adb383d1377ca3e07d4ee5510f3b3d9978" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63375,7 +59269,7 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/templating/src/main/kotlin/templates/DirectiveBasedTemplateProcessing.kt", + "uri": "plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt", "uriBaseId": "SRCROOT" }, "region": { @@ -63392,9 +59286,9 @@ "startLine": 1, "startColumn": 1, "charOffset": 0, - "charLength": 84, + "charLength": 89, "snippet": { - "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command" } } }, @@ -63407,12 +59301,13 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "05bf222c7532688d38c0d402e5e9c0adb383d1377ca3e07d4ee5510f3b3d9978" + "equalIndicator/v1": "0570c6420930cc39294dac42d814869da58d0d2a1e067731ad25fc3bc0f08950" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63428,44 +59323,45 @@ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", + "uri": "plugins/templating/src/main/kotlin/templates/FallbackTemplateProcessingStrategy.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 17, + "startLine": 1, "startColumn": 1, - "charOffset": 602, - "charLength": 45, + "charOffset": 0, + "charLength": 37, "snippet": { - "text": "package org.jetbrains.kotlin.cli.jvm.compiler" + "text": "package org.jetbrains.dokka.templates" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 15, + "startLine": 1, "startColumn": 1, - "charOffset": 597, - "charLength": 96, + "charOffset": 0, + "charLength": 84, "snippet": { - "text": " */\n\npackage org.jetbrains.kotlin.cli.jvm.compiler\n\nimport com.intellij.core.CoreJavaFileManager" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.templating.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "34e5a7149e6dfa5a40b989fb9a44af3aff54d0927b7f64511af064bee0e686a9" + "equalIndicator/v1": "7414f6addc1034c55f3181743344b725931bd320fa60011503374f0e81c738a3" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, @@ -63481,1687 +59377,315 @@ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt", + "uri": "plugins/templating/src/main/kotlin/templates/TemplatingPlugin.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 17, + "startLine": 1, "startColumn": 1, - "charOffset": 602, - "charLength": 42, + "charOffset": 0, + "charLength": 37, "snippet": { - "text": "package org.jetbrains.kotlin.cli.jvm.index" + "text": "package org.jetbrains.dokka.templates" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 15, + "startLine": 1, "startColumn": 1, - "charOffset": 597, - "charLength": 102, + "charOffset": 0, + "charLength": 120, "snippet": { - "text": " */\n\npackage org.jetbrains.kotlin.cli.jvm.index\n\nimport com.intellij.ide.highlighter.JavaClassFileType" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.allModulesPage.templates.PackageListProcessingStrategy" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.templating.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "df1403c76ecfefe1138fd1936876493437cd3a8fc78cf3398733d3217ce659d5" + "equalIndicator/v1": "c69de2c673d73426b3c1627ab6731d569067c9492a284f4bb6c766da6b789d68" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "RegExpRedundantEscape", - "kind": "fail", - "level": "warning", - "message": { - "text": "Redundant character escape '\\/' in RegExp", - "markdown": "Redundant character escape `\\/` in RegExp" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 181, - "startColumn": 52, - "charOffset": 7052, - "charLength": 2, - "snippet": { - "text": "\\/" - }, - "sourceLanguage": "RegExp" - }, - "contextRegion": { - "startLine": 179, - "startColumn": 1, - "charOffset": 6977, - "charLength": 112, - "snippet": { - "text": "\n companion object {\n private val filePathRegex = Regex(\"\"\"[\\n^](\\/[\\w|\\-]+)+(\\.\\w+)?\\s*\\n\"\"\")\n }\n}" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.core.test-api.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "ebe15fbd33324037b337e29e7eca4a371dba74c16d61a4ac4cdab7d79156e929" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 469, - "startColumn": 62, - "charOffset": 23733, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 467, - "startColumn": 1, - "charOffset": 23594, - "charLength": 377, - "snippet": { - "text": "\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(\n ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "031f25438cca61ee94dd9fe5c100ccca6bdb36509969f4b1eebaa10c161caaae" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 469, - "startColumn": 74, - "charOffset": 23745, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 467, - "startColumn": 1, - "charOffset": 23594, - "charLength": 377, - "snippet": { - "text": "\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(\n ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "0a8f0c12162988484d52ad59c121762d38d64f8c487309215faabb23c1f482e4" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'STATIC' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'STATIC' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 469, - "startColumn": 86, - "charOffset": 23757, - "charLength": 6, - "snippet": { - "text": "STATIC" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 467, - "startColumn": 1, - "charOffset": 23594, - "charLength": 377, - "snippet": { - "text": "\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(\n ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "7366ad7198b3b1e7144fd43f13fc75ead4b791d2e3878d0eb9495be19d1a2841" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 470, - "startColumn": 62, - "charOffset": 23829, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 468, - "startColumn": 1, - "charOffset": 23595, - "charLength": 476, - "snippet": { - "text": " private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(\n ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "84bb97c83bec3964209e163620726fa5e10a8e4db6e0afaf439e67217f8d7ce8" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 470, - "startColumn": 74, - "charOffset": 23841, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 468, - "startColumn": 1, - "charOffset": 23595, - "charLength": 476, - "snippet": { - "text": " private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(\n ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "fa75be7e0561e0e968a898a8eede40fcee1ed85f5e9cf466a7ddf7aea5b508f0" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'NATIVE' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'NATIVE' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 470, - "startColumn": 86, - "charOffset": 23853, - "charLength": 6, - "snippet": { - "text": "NATIVE" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 468, - "startColumn": 1, - "charOffset": 23595, - "charLength": 476, - "snippet": { - "text": " private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(\n ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "9ab7b548f5b75f0eb59eb1a7d0288393dc9da68d65a41b1134974998e41e8e53" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 471, - "startColumn": 68, - "charOffset": 23931, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 469, - "startColumn": 1, - "charOffset": 23672, - "charLength": 501, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "191aad928f82fcb4f414d69b983008211c0f869cbd89204f29ecd468d4389a2f" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 471, - "startColumn": 80, - "charOffset": 23943, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 469, - "startColumn": 1, - "charOffset": 23672, - "charLength": 501, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "e57f684342da8ea545c7b129a466598b4e5d69765f9d317c9f41ad95933835c7" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'SYNCHRONIZED' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'SYNCHRONIZED' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 471, - "startColumn": 92, - "charOffset": 23955, - "charLength": 12, - "snippet": { - "text": "SYNCHRONIZED" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 469, - "startColumn": 1, - "charOffset": 23672, - "charLength": 501, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Static.takeIf { hasModifier(JvmModifier.STATIC) },\n ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "9c5a7a6211298a6c6eda55032a7128c8bb4c0809a0117a9e26602665bd749796" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 472, - "startColumn": 64, - "charOffset": 24035, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 470, - "startColumn": 1, - "charOffset": 23768, - "charLength": 505, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "848754dc1c32d29a9df487b2d88c8b6fce59b96038166880376f4c482ea2ab6c" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 472, - "startColumn": 76, - "charOffset": 24047, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 470, - "startColumn": 1, - "charOffset": 23768, - "charLength": 505, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "345349ab6998e746fd7b106946b88c35a9cd292ed8fa798aa0488030efd6b3f6" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'STRICTFP' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'STRICTFP' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 472, - "startColumn": 88, - "charOffset": 24059, - "charLength": 8, - "snippet": { - "text": "STRICTFP" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 470, - "startColumn": 1, - "charOffset": 23768, - "charLength": 505, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Native.takeIf { hasModifier(JvmModifier.NATIVE) },\n ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) }," - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "826e407ef59179d57e1d9c5a4900e021d0f63f59423cd435e545f504261a22c4" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 473, - "startColumn": 65, - "charOffset": 24136, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 471, - "startColumn": 1, - "charOffset": 23864, - "charLength": 512, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "2fc80d6459675358557a8c745922e5c1756b01f7968e48c1758bda82d5f35222" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 473, - "startColumn": 77, - "charOffset": 24148, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 471, - "startColumn": 1, - "charOffset": 23864, - "charLength": 512, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "dcc5467c7f0455cc1c376756c198ec9a5713fddf4162f49a08d1e8c310458e53" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'TRANSIENT' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'TRANSIENT' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 473, - "startColumn": 89, - "charOffset": 24160, - "charLength": 9, - "snippet": { - "text": "TRANSIENT" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 471, - "startColumn": 1, - "charOffset": 23864, - "charLength": 512, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Synchronized.takeIf { hasModifier(JvmModifier.SYNCHRONIZED) },\n ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "cd0f31c216ce51b0d6003ecf479e776d85ca79a4641e8c9b4bfc0e534ca178d4" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "UnstableApiUsage", + "ruleId": "PackageDirectoryMismatch", "kind": "fail", - "level": "warning", + "level": "error", "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" + "text": "Package directive does not match the file location", + "markdown": "Package directive does not match the file location" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/templating/src/main/kotlin/templates/PathToRootSubstitutor.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 474, - "startColumn": 64, - "charOffset": 24237, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 472, + "startLine": 1, "startColumn": 1, - "charOffset": 23972, - "charLength": 422, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }\n ).toSet()" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "8b3be4242904b153bbffc88b5f105c0dfe20e66894eee78cea940b30bbd026f5" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 474, - "startColumn": 76, - "charOffset": 24249, - "charLength": 11, + "charOffset": 0, + "charLength": 37, "snippet": { - "text": "JvmModifier" + "text": "package org.jetbrains.dokka.templates" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 472, + "startLine": 1, "startColumn": 1, - "charOffset": 23972, - "charLength": 422, + "charOffset": 0, + "charLength": 111, "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }\n ).toSet()" + "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.PathToRootSubstitutionCommand" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.templating.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "10305906bff7848d38de7beadf2efba96b336cd6a31e2dcdc00366c0147cb369" + "equalIndicator/v1": "84e8acb420595d1e882ba384b8d99bfa0a86e8b1ac83bb654f5b186d9f931c65" }, + "baselineState": "unchanged", "properties": { - "ideaSeverity": "WARNING", + "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "UnstableApiUsage", + "ruleId": "PackageDirectoryMismatch", "kind": "fail", - "level": "warning", + "level": "error", "message": { - "text": "'VOLATILE' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'VOLATILE' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" + "text": "Package directive does not match the file location", + "markdown": "Package directive does not match the file location" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/templating/src/main/kotlin/templates/JsonElementBasedTemplateProcessingStrategy.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 474, - "startColumn": 88, - "charOffset": 24261, - "charLength": 8, - "snippet": { - "text": "VOLATILE" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 472, + "startLine": 1, "startColumn": 1, - "charOffset": 23972, - "charLength": 422, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.StrictFP.takeIf { hasModifier(JvmModifier.STRICTFP) },\n ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }\n ).toSet()" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "02f85c0724c1579d3cf7ac6b5243c058c787b0df35e630769e3c7014a028bc30" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 475, - "startColumn": 66, - "charOffset": 24339, - "charLength": 11, + "charOffset": 0, + "charLength": 52, "snippet": { - "text": "hasModifier" + "text": "package org.jetbrains.dokka.allModulesPage.templates" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 473, + "startLine": 1, "startColumn": 1, - "charOffset": 24072, - "charLength": 323, + "charOffset": 0, + "charLength": 122, "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }\n ).toSet()\n" + "text": "package org.jetbrains.dokka.allModulesPage.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration.DokkaModuleDescription" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.templating.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "71fb30db4c46e28e0f833dd2990d9dd09f38b399ee9fc4945bdcd5f77f04f00b" + "equalIndicator/v1": "c6f09facbfc4caf11c0ff7b7977db2001d5749aa10e3819449335c935f319686" }, + "baselineState": "unchanged", "properties": { - "ideaSeverity": "WARNING", + "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "UnstableApiUsage", + "ruleId": "PackageDirectoryMismatch", "kind": "fail", - "level": "warning", + "level": "error", "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" + "text": "Package directive does not match the file location", + "markdown": "Package directive does not match the file location" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 475, - "startColumn": 78, - "charOffset": 24351, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 473, + "startLine": 17, "startColumn": 1, - "charOffset": 24072, - "charLength": 323, - "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }\n ).toSet()\n" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "ca927a3481fdeb1331d71912f87289e0f9d8eb33d44380ad71a5eb271303f298" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'TRANSITIVE' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'TRANSITIVE' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 475, - "startColumn": 90, - "charOffset": 24363, - "charLength": 10, + "charOffset": 602, + "charLength": 45, "snippet": { - "text": "TRANSITIVE" + "text": "package org.jetbrains.kotlin.cli.jvm.compiler" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 473, + "startLine": 15, "startColumn": 1, - "charOffset": 24072, - "charLength": 323, + "charOffset": 597, + "charLength": 96, "snippet": { - "text": " ExtraModifiers.JavaOnlyModifiers.Transient.takeIf { hasModifier(JvmModifier.TRANSIENT) },\n ExtraModifiers.JavaOnlyModifiers.Volatile.takeIf { hasModifier(JvmModifier.VOLATILE) },\n ExtraModifiers.JavaOnlyModifiers.Transitive.takeIf { hasModifier(JvmModifier.TRANSITIVE) }\n ).toSet()\n" + "text": " */\n\npackage org.jetbrains.kotlin.cli.jvm.compiler\n\nimport com.intellij.core.CoreJavaFileManager" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "21079e044e267cfcbe6df1ad3872fcf19c8acec582dc2eab815054965ddb4a26" + "equalIndicator/v1": "34e5a7149e6dfa5a40b989fb9a44af3aff54d0927b7f64511af064bee0e686a9" }, + "baselineState": "unchanged", "properties": { - "ideaSeverity": "WARNING", + "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "UnstableApiUsage", + "ruleId": "PackageDirectoryMismatch", "kind": "fail", - "level": "warning", + "level": "error", "message": { - "text": "'com.intellij.lang.jvm.types.JvmReferenceType' is declared in unstable package 'com.intellij.lang.jvm.types' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.types.JvmReferenceType' is declared in unstable package 'com.intellij.lang.jvm.types' marked with @ApiStatus.Experimental" + "text": "Package directive does not match the file location", + "markdown": "Package directive does not match the file location" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 594, - "startColumn": 41, - "charOffset": 30584, - "charLength": 16, - "snippet": { - "text": "JvmReferenceType" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 592, + "startLine": 17, "startColumn": 1, - "charOffset": 30445, - "charLength": 341, - "snippet": { - "text": "\n private fun PsiTypeParameterListOwner.mapTypeParameters(dri: DRI): List<DTypeParameter> {\n fun mapBounds(bounds: Array<JvmReferenceType>): List<Bound> =\n if (bounds.isEmpty()) emptyList() else bounds.mapNotNull {\n (it as? PsiClassType)?.let { classType -> Nullable(getBound(classType)) }" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "71ded31c85fecd79c7315ef2538a78f9bc7cca82d24c5f15de9f484c59f042ad" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'getBounds()' is unstable because its signature references unstable interface 'com.intellij.lang.jvm.types.JvmReferenceType' marked with @ApiStatus.Experimental", - "markdown": "'getBounds()' is unstable because its signature references unstable interface 'com.intellij.lang.jvm.types.JvmReferenceType' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 605, - "startColumn": 45, - "charOffset": 31237, - "charLength": 6, + "charOffset": 602, + "charLength": 42, "snippet": { - "text": "bounds" + "text": "package org.jetbrains.kotlin.cli.jvm.index" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 603, + "startLine": 15, "startColumn": 1, - "charOffset": 31047, - "charLength": 308, + "charOffset": 597, + "charLength": 102, "snippet": { - "text": " documentation = javadocParser.parseDocumentation(type).toSourceSetDependent(),\n expectPresentInSet = null,\n bounds = mapBounds(type.bounds),\n sourceSets = setOf(sourceSetData),\n extra = PropertyContainer.withAll(" + "text": " */\n\npackage org.jetbrains.kotlin.cli.jvm.index\n\nimport com.intellij.ide.highlighter.JavaClassFileType" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "681d66e991eb9c7e2d5c0dee08ad0eeb31d6bdc0aebf67b6e0f2592ee4fd625e" + "equalIndicator/v1": "df1403c76ecfefe1138fd1936876493437cd3a8fc78cf3398733d3217ce659d5" }, + "baselineState": "unchanged", "properties": { - "ideaSeverity": "WARNING", + "ideaSeverity": "ERROR", "tags": [ - "ideaSeverity" + "kotlin" ] } }, { - "ruleId": "UnstableApiUsage", + "ruleId": "RegExpRedundantEscape", "kind": "fail", "level": "warning", "message": { - "text": "'getField()' is unstable because its signature references unstable interface 'com.intellij.lang.jvm.JvmEnumField' marked with @ApiStatus.Experimental", - "markdown": "'getField()' is unstable because its signature references unstable interface 'com.intellij.lang.jvm.JvmEnumField' marked with @ApiStatus.Experimental" + "text": "Redundant character escape '\\/' in RegExp", + "markdown": "Redundant character escape `\\/` in RegExp" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 725, + "startLine": 184, "startColumn": 52, - "charOffset": 37032, - "charLength": 5, - "snippet": { - "text": "field" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 723, - "startColumn": 1, - "charOffset": 36861, - "charLength": 439, - "snippet": { - "text": " private fun JvmAnnotationAttributeValue.toValue(): AnnotationParameterValue? {\n return when (this) {\n is JvmAnnotationEnumFieldValue -> (field as? PsiElement)?.let { EnumValue(fieldName ?: \"\", DRI.from(it)) }\n // static import of a constant is resolved to constant value instead of a field/link\n is JvmAnnotationConstantValue -> this.constantValue?.toAnnotationLiteralValue()" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "16a2df2ffdab552bb1bafa091b3aea397a981c9a33956efd515c82e903c8ac6c" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 588, - "startColumn": 13, - "charOffset": 30272, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 586, - "startColumn": 1, - "charOffset": 30195, - "charLength": 239, - "snippet": { - "text": "\n private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "d1e82d8c68cc06335aef453628e300a0285d4ea17ccfbc3b26972d9482dba9dc" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 588, - "startColumn": 25, - "charOffset": 30284, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 586, - "startColumn": 1, - "charOffset": 30195, - "charLength": 239, - "snippet": { - "text": "\n private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "ef30e9ec6804362910695eeb087e8f2c441d238473f007954b7bb0e8599badec" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'ABSTRACT' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'ABSTRACT' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 588, - "startColumn": 37, - "charOffset": 30296, - "charLength": 8, - "snippet": { - "text": "ABSTRACT" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 586, - "startColumn": 1, - "charOffset": 30195, - "charLength": 239, - "snippet": { - "text": "\n private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "069110415ae1381118efd356d1ed3087f7c6b6ac2150754426917ac11e45ff49" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental", - "markdown": "'hasModifier(com.intellij.lang.jvm.@org.jetbrains.annotations.NotNull JvmModifier)' is unstable because its signature references unstable enum 'com.intellij.lang.jvm.JvmModifier' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 589, - "startColumn": 13, - "charOffset": 30343, - "charLength": 11, - "snippet": { - "text": "hasModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 587, - "startColumn": 1, - "charOffset": 30196, - "charLength": 248, - "snippet": { - "text": " private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty\n }" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "355925712d6f7f46a45008b17ac7b5403a5d9fb36c5708054dc0be5a6b3d77a2" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'com.intellij.lang.jvm.JvmModifier' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 589, - "startColumn": 25, - "charOffset": 30355, - "charLength": 11, - "snippet": { - "text": "JvmModifier" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 587, - "startColumn": 1, - "charOffset": 30196, - "charLength": 248, - "snippet": { - "text": " private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty\n }" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.base.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "011565068a9f3563113488815d46d74d203aac6074f77cf71cd217e211897bd3" - }, - "properties": { - "ideaSeverity": "WARNING", - "tags": [ - "ideaSeverity" - ] - } - }, - { - "ruleId": "UnstableApiUsage", - "kind": "fail", - "level": "warning", - "message": { - "text": "'FINAL' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental", - "markdown": "'FINAL' is declared in unstable package 'com.intellij.lang.jvm' marked with @ApiStatus.Experimental" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 589, - "startColumn": 37, - "charOffset": 30367, - "charLength": 5, + "charOffset": 7206, + "charLength": 2, "snippet": { - "text": "FINAL" + "text": "\\/" }, - "sourceLanguage": "kotlin" + "sourceLanguage": "RegExp" }, "contextRegion": { - "startLine": 587, + "startLine": 182, "startColumn": 1, - "charOffset": 30196, - "charLength": 248, + "charOffset": 7131, + "charLength": 112, "snippet": { - "text": " private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty\n }" + "text": "\n companion object {\n private val filePathRegex = Regex(\"\"\"[\\n^](\\/[\\w|\\-]+)+(\\.\\w+)?\\s*\\n\"\"\")\n }\n}" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "a4ffb87c85750f52bc94aacf5857d6e2054a3ab1c879e1327776b4560bcccbbc" + "equalIndicator/v1": "337d629f18c66b77a0bcfce6c56a982bf75a69a25fcb2627d8269a1dfc6713cf" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "RegExp" ] } }, @@ -65211,22 +59735,20 @@ "partialFingerprints": { "equalIndicator/v1": "186e7a5902a78a0e91105ac77dbe66f541d9b9f38f734913d702e5fecc78fc28" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WARNING", "tags": [ - "ideaSeverity" + "kotlin" ] } } ], "automationDetails": { - "id": "project/qodana/2022-11-25", - "guid": "ec0b9a45-c1a7-4e54-a20e-00b7bb4ab994", + "id": "dokka/qodana/2022-12-19", + "guid": "b6e681f4-dd5f-4332-9632-66e9609166ab", "properties": { - "jobUrl": "", - "tags": [ - "jobUrl" - ] + "jobUrl": "https://github.com/Kotlin/dokka/actions/runs/3708808908" } }, "newlineSequences": [ @@ -65240,96 +59762,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: MessageRenderer", - "markdown": "Unresolved reference: MessageRenderer" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/EnvironmentAndFacade.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 9, - "startColumn": 49, - "charOffset": 432, - "charLength": 15, - "snippet": { - "text": "MessageRenderer" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 7, - "startColumn": 1, - "charOffset": 241, - "charLength": 274, - "snippet": { - "text": "import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSourceLocation\nimport org.jetbrains.kotlin.cli.common.messages.MessageCollector\nimport org.jetbrains.kotlin.cli.common.messages.MessageRenderer\nimport org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment\n" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.kotlin-analysis.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "6f0b072910d25e7df8730327d61be01aa58a753d73441b050cbda0b4ef43de6e" - }, - "properties": { - "ideaSeverity": "ERROR" - } - }, - { - "ruleId": "KotlinAnnotator", - "kind": "fail", - "level": "error", - "message": { - "text": "Unresolved reference: KotlinCoreEnvironment", - "markdown": "Unresolved reference: KotlinCoreEnvironment" + "text": "Property delegate must have a 'getValue(AbstractTest, KProperty<*>)' method. None of the following functions is suitable: public inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): String? defined in kotlin", + "markdown": "Property delegate must have a 'getValue(AbstractTest, KProperty\\<\\*\\>)' method. None of the following functions is suitable: public inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty\\<\\*\\>): String? defined in kotlin" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/EnvironmentAndFacade.kt", + "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 10, - "startColumn": 46, - "charOffset": 493, - "charLength": 21, + "startLine": 166, + "startColumn": 44, + "charOffset": 6542, + "charLength": 4, "snippet": { - "text": "KotlinCoreEnvironment" + "text": "lazy" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 8, + "startLine": 164, "startColumn": 1, - "charOffset": 319, - "charLength": 237, + "charOffset": 6492, + "charLength": 133, "snippet": { - "text": "import org.jetbrains.kotlin.cli.common.messages.MessageCollector\nimport org.jetbrains.kotlin.cli.common.messages.MessageRenderer\nimport org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment\n\ninternal fun createEnvironmentAndFacade(" + "text": " }\n\n protected val jsStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Any::class.java, \"/kotlin/jquery\")\n }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "a0941fad9b15d975a3ad4662c7f79a4b91477b5278a1620282b4f18ecd6a44a3" + "equalIndicator/v1": "1fbb8fd9307b610044029f8160a3a53ac94a49700df66fa1125a1f569b9042c7" }, "properties": { "ideaSeverity": "ERROR" @@ -65340,46 +59812,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: MessageRenderer", - "markdown": "Unresolved reference: MessageRenderer" + "text": "Unresolved reference: PathManager", + "markdown": "Unresolved reference: PathManager" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/EnvironmentAndFacade.kt", + "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 47, - "startColumn": 21, - "charOffset": 1951, - "charLength": 15, + "startLine": 167, + "startColumn": 9, + "charOffset": 6557, + "charLength": 11, "snippet": { - "text": "MessageRenderer" + "text": "PathManager" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 45, + "startLine": 165, "startColumn": 1, - "charOffset": 1891, - "charLength": 136, + "charOffset": 6498, + "charLength": 128, "snippet": { - "text": " seenErrors = true\n }\n logger.info(MessageRenderer.PLAIN_FULL_PATHS.render(severity, message, location))\n }\n" + "text": "\n protected val jsStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Any::class.java, \"/kotlin/jquery\")\n }\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "7768a0e56da9ac53de65dc7262038c3af9fcba044b69a001e38a3343a3322f2d" + "equalIndicator/v1": "3e4b9b465c3e6b138f6ff3f16c89a59e975b6f1cd3ebd071172b554e770881de" }, "properties": { "ideaSeverity": "ERROR" @@ -65390,46 +59862,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: KotlinCoreEnvironment", - "markdown": "Unresolved reference: KotlinCoreEnvironment" + "text": "Property delegate must have a 'getValue(AbstractTest, KProperty<*>)' method. None of the following functions is suitable: public inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): String? defined in kotlin", + "markdown": "Property delegate must have a 'getValue(AbstractTest, KProperty\\<\\*\\>)' method. None of the following functions is suitable: public inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty\\<\\*\\>): String? defined in kotlin" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/EnvironmentAndFacade.kt", + "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 54, + "startLine": 162, "startColumn": 45, - "charOffset": 2167, - "charLength": 21, + "charOffset": 6397, + "charLength": 4, "snippet": { - "text": "KotlinCoreEnvironment" + "text": "lazy" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 52, + "startLine": 160, "startColumn": 1, - "charOffset": 2072, - "charLength": 237, + "charOffset": 6351, + "charLength": 146, "snippet": { - "text": "\n// It is not data class due to ill-defined equals\nclass EnvironmentAndFacade(val environment: KotlinCoreEnvironment, val facade: DokkaResolutionFacade) {\n operator fun component1() = environment\n operator fun component2() = facade" + "text": "\n\n protected val jvmStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Strictfp::class.java, \"/kotlin/jvm/Strictfp.class\")\n }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "aece801d4cbcccb600d1f02041f326afb5e54bc8c3a72f2489d8d7be2badd68f" + "equalIndicator/v1": "32db169b176bc5814603be584aab68268bb926438ac627859822511e54443401" }, "properties": { "ideaSeverity": "ERROR" @@ -65440,46 +59912,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Cannot infer a type for this parameter. Please specify it explicitly.", - "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." + "text": "Unresolved reference: PathManager", + "markdown": "Unresolved reference: PathManager" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", + "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 237, - "startColumn": 78, - "charOffset": 11511, - "charLength": 3, + "startLine": 163, + "startColumn": 9, + "charOffset": 6412, + "charLength": 11, "snippet": { - "text": "dir" + "text": "PathManager" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 235, + "startLine": 161, "startColumn": 1, - "charOffset": 11314, - "charLength": 355, + "charOffset": 6352, + "charLength": 146, "snippet": { - "text": " override fun knownClassNamesInPackage(packageFqName: FqName): Set<String> {\n val result = THashSet<String>()\n index.traverseDirectoriesInPackage(packageFqName, continueSearch = { dir, _ ->\n for (child in dir.children) {\n if (child.extension == \"class\" || child.extension == \"java\" || child.extension == \"sig\") {" + "text": "\n protected val jvmStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Strictfp::class.java, \"/kotlin/jvm/Strictfp.class\")\n }\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.core.test-api.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "66ede3ee70caf63596b69404d57ebcc40577ded691ce16472103622d44ebac2d" + "equalIndicator/v1": "df374a8a609db4ee0f736c8f605f9226c1f60810dcbb80d2e55696633a4b75db" }, "properties": { "ideaSeverity": "ERROR" @@ -65490,46 +59962,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Cannot infer a type for this parameter. Please specify it explicitly.", - "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." + "text": "Unresolved reference: intellij", + "markdown": "Unresolved reference: intellij" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", + "uri": "plugins/base/src/main/kotlin/DokkaBase.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 237, - "startColumn": 83, - "charOffset": 11516, - "charLength": 1, + "startLine": 288, + "startColumn": 17, + "charOffset": 11882, + "charLength": 8, "snippet": { - "text": "_" + "text": "intellij" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 235, + "startLine": 286, "startColumn": 1, - "charOffset": 11314, - "charLength": 355, + "charOffset": 11735, + "charLength": 237, "snippet": { - "text": " override fun knownClassNamesInPackage(packageFqName: FqName): Set<String> {\n val result = THashSet<String>()\n index.traverseDirectoriesInPackage(packageFqName, continueSearch = { dir, _ ->\n for (child in dir.children) {\n if (child.extension == \"class\" || child.extension == \"java\" || child.extension == \"sig\") {" + "text": " // Suppress messages emitted by the IntelliJ logger since\n // there's not much the end user can do about it\n com.intellij.openapi.diagnostic.Logger.setFactory(NoopIntellijLoggerFactory())\n }\n }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "1641a597aae5a4d61d3d171166fdbdd291855063f377f5b8f97d14f10628d296" + "equalIndicator/v1": "7d8c68c6168fc3f582e59c3b545e1958e5446717ba1c484c53d09b3b3cd0dccd" }, "properties": { "ideaSeverity": "ERROR" @@ -65540,46 +60012,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Cannot infer a type for this parameter. Please specify it explicitly.", - "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." + "text": "'error' overrides nothing", + "markdown": "'error' overrides nothing" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", + "uri": "plugins/base/src/main/kotlin/utils/NoopIntellijLogger.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 77, - "startColumn": 44, - "charOffset": 3999, - "charLength": 3, + "startLine": 35, + "startColumn": 5, + "charOffset": 1196, + "charLength": 8, "snippet": { - "text": "dir" + "text": "override" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 75, + "startLine": 33, "startColumn": 1, - "charOffset": 3781, - "charLength": 383, + "charOffset": 1152, + "charLength": 208, "snippet": { - "text": " synchronized(topLevelClassesCache) {\n return topLevelClassesCache.getOrPut(classId.packageFqName.child(classId.relativeClassName.pathSegments().first())) {\n index.findClass(classId) { dir, type ->\n findVirtualFileGivenPackage(dir, relativeClassName, type)\n } ?: singleJavaFileRootsIndex.findJavaSourceClass(classId)" + "text": " override fun warn(t: Throwable) {}\n\n override fun error(message: String?, t: Throwable?, vararg details: String?) {}\n override fun error(message: String?) {}\n override fun error(message: Any?) {}" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "aaca82e8c522b489b79cfa5bff6cfeaed93009a8071d65947a090d0dec9b5b4d" + "equalIndicator/v1": "1acca10c4abb37c7c93f5d29f0fa442ee5c50570b50808d5967f078b88da3053" }, "properties": { "ideaSeverity": "ERROR" @@ -65590,46 +60062,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Cannot infer a type for this parameter. Please specify it explicitly.", - "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." + "text": "'error' overrides nothing", + "markdown": "'error' overrides nothing" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", + "uri": "plugins/base/src/main/kotlin/utils/NoopIntellijLogger.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 77, - "startColumn": 49, - "charOffset": 4004, - "charLength": 4, + "startLine": 41, + "startColumn": 5, + "charOffset": 1603, + "charLength": 8, "snippet": { - "text": "type" + "text": "override" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 75, + "startLine": 39, "startColumn": 1, - "charOffset": 3781, - "charLength": 383, + "charOffset": 1438, + "charLength": 261, "snippet": { - "text": " synchronized(topLevelClassesCache) {\n return topLevelClassesCache.getOrPut(classId.packageFqName.child(classId.relativeClassName.pathSegments().first())) {\n index.findClass(classId) { dir, type ->\n findVirtualFileGivenPackage(dir, relativeClassName, type)\n } ?: singleJavaFileRootsIndex.findJavaSourceClass(classId)" + "text": " override fun error(message: String?, t: Throwable?, vararg attachments: Attachment?) {}\n override fun error(message: String?, vararg details: String?) {}\n override fun error(message: String?, t: Throwable?) {}\n override fun error(t: Throwable) {}\n}" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "4235702e3ecfa68b0a580c71dc99aa0e421d7d97ab16509edfdf527b3185b97f" + "equalIndicator/v1": "6451ed0bec49cf621f17569afc168d4e800a82a22280042de49d9ca3f6631878" }, "properties": { "ideaSeverity": "ERROR" @@ -65640,33 +60112,33 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: CLIConfigurationKeys", - "markdown": "Unresolved reference: CLIConfigurationKeys" + "text": "'error' overrides nothing", + "markdown": "'error' overrides nothing" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/base/src/main/kotlin/utils/NoopIntellijLogger.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 61, - "startColumn": 61, - "charOffset": 2984, - "charLength": 20, + "startLine": 37, + "startColumn": 5, + "charOffset": 1324, + "charLength": 8, "snippet": { - "text": "CLIConfigurationKeys" + "text": "override" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 59, + "startLine": 35, "startColumn": 1, - "charOffset": 2857, - "charLength": 286, + "charOffset": 1192, + "charLength": 337, "snippet": { - "text": " val (environment, facade) = kotlinAnalysis[sourceSet]\n\n val sourceRoots = environment.configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }" + "text": " override fun error(message: String?, t: Throwable?, vararg details: String?) {}\n override fun error(message: String?) {}\n override fun error(message: Any?) {}\n override fun error(message: String?, vararg attachments: Attachment?) {}\n override fun error(message: String?, t: Throwable?, vararg attachments: Attachment?) {}" } } }, @@ -65679,7 +60151,7 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "b703ad5363b71a6394b4c0def3da6f1fb62bdb2493194d915dc4209a2d53df54" + "equalIndicator/v1": "d15a20776b43d29984fb4cba795da6d49e0950662d7b3ec95cfa6f2f798612d4" }, "properties": { "ideaSeverity": "ERROR" @@ -65690,33 +60162,33 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: JavaSourceRoot", - "markdown": "Unresolved reference: JavaSourceRoot" + "text": "Unresolved reference: intellij", + "markdown": "Unresolved reference: intellij" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/base/src/main/kotlin/utils/NoopIntellijLogger.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 62, - "startColumn": 36, - "charOffset": 3055, - "charLength": 14, + "startLine": 3, + "startColumn": 12, + "charOffset": 51, + "charLength": 8, "snippet": { - "text": "JavaSourceRoot" + "text": "intellij" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 60, + "startLine": 1, "startColumn": 1, - "charOffset": 2923, - "charLength": 248, + "charOffset": 0, + "charLength": 188, "snippet": { - "text": "\n val sourceRoots = environment.configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }\n ?: listOf()" + "text": "package org.jetbrains.dokka.base.utils\n\nimport com.intellij.openapi.diagnostic.Attachment\nimport com.intellij.openapi.diagnostic.DefaultLogger\nimport com.intellij.openapi.diagnostic.Logger" } } }, @@ -65729,7 +60201,7 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "67e8dc1724cef4418f49962a50287d1ac064ed34fb71faf67120305958199343" + "equalIndicator/v1": "72bfa1ce1684a91c80ea96b57a99435eef63bc618a04b91ad335fcccdce1bd9b" }, "properties": { "ideaSeverity": "ERROR" @@ -65740,46 +60212,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: file", - "markdown": "Unresolved reference: file" + "text": "Unresolved reference: intellij", + "markdown": "Unresolved reference: intellij" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 63, - "startColumn": 35, - "charOffset": 3107, - "charLength": 4, + "startLine": 3, + "startColumn": 12, + "charOffset": 54, + "charLength": 8, "snippet": { - "text": "file" + "text": "intellij" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 61, + "startLine": 1, "startColumn": 1, - "charOffset": 2924, - "charLength": 336, + "charOffset": 0, + "charLength": 176, "snippet": { - "text": " val sourceRoots = environment.configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }\n ?: listOf()\n val localFileSystem = VirtualFileManager.getInstance().getFileSystem(\"file\")" + "text": "package org.jetbrains.dokka.javadoc.pages\n\nimport com.intellij.psi.PsiClass\nimport org.jetbrains.dokka.Platform\nimport org.jetbrains.dokka.analysis.DescriptorDocumentableSource" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.javadoc.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "0aee08482c4493c2310e34f276980b550df08821c749ee826edba2bf0922c345" + "equalIndicator/v1": "bede6628cdf351bdb90318a9df6d8042143eb0d2090108b2bb1efcf77439694b" }, "properties": { "ideaSeverity": "ERROR" @@ -65790,46 +60262,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Not enough information to infer type variable T", - "markdown": "Not enough information to infer type variable T" + "text": "Unresolved reference: ClassDescriptor", + "markdown": "Unresolved reference: ClassDescriptor" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 64, - "startColumn": 20, - "charOffset": 3163, - "charLength": 6, + "startLine": 14, + "startColumn": 41, + "charOffset": 602, + "charLength": 15, "snippet": { - "text": "listOf" + "text": "ClassDescriptor" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 62, + "startLine": 12, "startColumn": 1, - "charOffset": 3020, - "charLength": 241, + "charOffset": 463, + "charLength": 282, "snippet": { - "text": " ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }\n ?: listOf()\n val localFileSystem = VirtualFileManager.getInstance().getFileSystem(\"file\")\n" + "text": "import org.jetbrains.dokka.model.properties.WithExtraProperties\nimport org.jetbrains.dokka.pages.*\nimport org.jetbrains.kotlin.descriptors.ClassDescriptor\nimport org.jetbrains.kotlin.descriptors.ClassKind\nimport org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForType" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.javadoc.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "06dea3c1736a844e71cbdecff75076640c4b9375c00aca40740284fe51195f22" + "equalIndicator/v1": "a80febd69ffc2f9aacba225fd44f8ce21056424b125c2946cbf61b1d5180b276" }, "properties": { "ideaSeverity": "ERROR" @@ -65840,46 +60312,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: packageFqName", - "markdown": "Unresolved reference: packageFqName" + "text": "Unresolved reference: ClassKind", + "markdown": "Unresolved reference: ClassKind" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 96, - "startColumn": 23, - "charOffset": 5439, - "charLength": 13, + "startLine": 15, + "startColumn": 41, + "charOffset": 658, + "charLength": 9, "snippet": { - "text": "packageFqName" + "text": "ClassKind" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 94, + "startLine": 13, "startColumn": 1, - "charOffset": 5282, - "charLength": 269, + "charOffset": 527, + "charLength": 219, "snippet": { - "text": " val (environment, facade) = kotlinAnalysis[sourceSet]\n val packageFragments = environment.getSourceFiles().asSequence()\n .map { it.packageFqName }\n .distinct()\n .mapNotNull { facade.resolveSession.getPackageFragment(it) }" + "text": "import org.jetbrains.dokka.pages.*\nimport org.jetbrains.kotlin.descriptors.ClassDescriptor\nimport org.jetbrains.kotlin.descriptors.ClassKind\nimport org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForType\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.javadoc.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "0234b9c56231b7b7dc903de8b5dd4dff38e701eb7c590703c49f51f5bfb8c498" + "equalIndicator/v1": "e89a65f22f49f5c1e21060d4545c6732c4b69803644168e86bae35ec8fe4e453" }, "properties": { "ideaSeverity": "ERROR" @@ -65890,46 +60362,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Expression expected, but a package name found", - "markdown": "Expression expected, but a package name found" + "text": "Unresolved reference: DescriptorUtils", + "markdown": "Unresolved reference: DescriptorUtils" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 98, - "startColumn": 68, - "charOffset": 5546, - "charLength": 2, + "startLine": 16, + "startColumn": 37, + "charOffset": 704, + "charLength": 15, "snippet": { - "text": "it" + "text": "DescriptorUtils" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 96, + "startLine": 14, "startColumn": 1, - "charOffset": 5417, - "charLength": 157, + "charOffset": 562, + "charLength": 243, "snippet": { - "text": " .map { it.packageFqName }\n .distinct()\n .mapNotNull { facade.resolveSession.getPackageFragment(it) }\n .toList()\n" + "text": "import org.jetbrains.kotlin.descriptors.ClassDescriptor\nimport org.jetbrains.kotlin.descriptors.ClassKind\nimport org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForType\n\ninterface JavadocPageNode : ContentPage, WithDocumentables" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.javadoc.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "80fa3f557d69c11ff261106cdc880a31811aea58966b7b9e9327bed0f6661416" + "equalIndicator/v1": "b2967f43ab0efb813c1fb839a54a49ca9299c7043d5e5d0c3192ec9f4ddabfc6" }, "properties": { "ideaSeverity": "ERROR" @@ -65940,46 +60412,46 @@ "kind": "fail", "level": "error", "message": { - "text": "Unresolved reference: safeAs", - "markdown": "Unresolved reference: safeAs" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmStatic.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 102, - "startColumn": 46, - "charOffset": 5725, - "charLength": 6, + "startLine": 6, + "startColumn": 34, + "charOffset": 230, + "charLength": 18, "snippet": { - "text": "safeAs" + "text": "firstNotNullResult" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 100, + "startLine": 4, "startColumn": 1, - "charOffset": 5574, - "charLength": 273, + "charOffset": 87, + "charLength": 252, "snippet": { - "text": "\n return DokkaDescriptorVisitor(sourceSet, kotlinAnalysis[sourceSet].facade, context.logger).run {\n packageFragments.mapNotNull { it.safeAs<PackageFragmentDescriptor>() }.parallelMap {\n visitPackageFragmentDescriptor(\n it" + "text": "import org.jetbrains.dokka.model.Documentable\nimport org.jetbrains.dokka.model.properties.WithExtraProperties\nimport org.jetbrains.kotlin.util.firstNotNullResult\n\ninternal fun WithExtraProperties<out Documentable>.jvmStatic(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "4d3bda4e6c24b7ba682e033201b9b0f15e539c00d2e8c687c5d130268820ef08" + "equalIndicator/v1": "fa3838a15ecc94e5ec3ef2cd082b806f639dca64dae197e73461c0f283872455" }, "properties": { "ideaSeverity": "ERROR" @@ -65990,653 +60462,653 @@ "kind": "fail", "level": "error", "message": { - "text": "Suspension functions can be called only within coroutine body", - "markdown": "Suspension functions can be called only within coroutine body" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmStatic.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 103, - "startColumn": 17, - "charOffset": 5793, - "charLength": 30, + "startLine": 9, + "startColumn": 53, + "charOffset": 392, + "charLength": 18, "snippet": { - "text": "visitPackageFragmentDescriptor" + "text": "firstNotNullResult" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 101, + "startLine": 7, "startColumn": 1, - "charOffset": 5575, - "charLength": 290, + "charOffset": 249, + "charLength": 311, "snippet": { - "text": " return DokkaDescriptorVisitor(sourceSet, kotlinAnalysis[sourceSet].facade, context.logger).run {\n packageFragments.mapNotNull { it.safeAs<PackageFragmentDescriptor>() }.parallelMap {\n visitPackageFragmentDescriptor(\n it\n )" + "text": "\ninternal fun WithExtraProperties<out Documentable>.jvmStatic(): Annotations.Annotation? =\n extra[Annotations]?.directAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmStaticAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmStaticAnnotation(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "00e4f6b5c433e97baaa76beb30afa73006a802c1b8ffa9ed8de5af5793d96b62" + "equalIndicator/v1": "830840cd079665c884584b848888327c807d3e3ef55f68fe4695a9a6a842d317" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: d (U+0064)", - "markdown": "Illegal character: d (U+0064)" + "text": "Cannot infer a type for this parameter. Please specify it explicitly.", + "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmStatic.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 6, - "charOffset": 5, + "startLine": 9, + "startColumn": 74, + "charOffset": 413, "charLength": 1, "snippet": { - "text": "d" + "text": "(" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 7, "startColumn": 1, - "charOffset": 0, - "charLength": 56, + "charOffset": 249, + "charLength": 311, "snippet": { - "text": "{{## def.assignDefault:\n {{? it.compositeRule }}\n {{" + "text": "\ninternal fun WithExtraProperties<out Documentable>.jvmStatic(): Annotations.Annotation? =\n extra[Annotations]?.directAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmStaticAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmStaticAnnotation(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "a2f1f8c9c0c90eb12020ee0cfba62e8b21e08339604c5ab442131ed8f773921f" + "equalIndicator/v1": "a0573d3097d352d6bcdcd7f6eb366356ab1fc0c8cab062af99a40a7e01c74b1f" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: d (U+0064)", - "markdown": "Illegal character: d (U+0064)" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmName.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 6, - "charOffset": 5, - "charLength": 1, + "startLine": 8, + "startColumn": 34, + "charOffset": 318, + "charLength": 18, "snippet": { - "text": "d" + "text": "firstNotNullResult" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 6, "startColumn": 1, - "charOffset": 0, - "charLength": 63, + "charOffset": 178, + "charLength": 264, "snippet": { - "text": "{{## def.coerceType:\n {{\n var $dataType = 'dataType' + $lvl" + "text": "import org.jetbrains.dokka.model.isJvmName\nimport org.jetbrains.dokka.model.properties.WithExtraProperties\nimport org.jetbrains.kotlin.util.firstNotNullResult\n\ninternal fun WithExtraProperties<out Documentable>.directlyAnnotatedJvmName(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "22ba54b7591ef209377fb59d424ac96549f2b3a40e39c0c3daae0097b90b0460" + "equalIndicator/v1": "61ca66efc423b4c0beccf2bb439ac8007140fbb1a6c438813772cb73dce9f28f" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: $ (U+0024)", - "markdown": "Illegal character: $ (U+0024)" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmName.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 3, - "startColumn": 9, - "charOffset": 34, - "charLength": 1, + "startLine": 14, + "startColumn": 56, + "charOffset": 722, + "charLength": 18, "snippet": { - "text": "$" + "text": "firstNotNullResult" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 12, "startColumn": 1, - "charOffset": 0, - "charLength": 105, + "charOffset": 569, + "charLength": 317, "snippet": { - "text": "{{## def.coerceType:\n {{\n var $dataType = 'dataType' + $lvl\n , $coerced = 'coerced' + $lvl;\n }}" + "text": "\ninternal fun WithExtraProperties<out Documentable>.fileLevelJvmName(): Annotations.Annotation? =\n extra[Annotations]?.fileLevelAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmNameAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmNameAnnotation(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "e2a26ae81e6daf860f9da9fe85ac47b27004aaf830b9d7536293771655133311" + "equalIndicator/v1": "fb41067b1a88e2f5a2d7b008b8583a27a64fa9a93fbcc698b6b56991887e2507" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: i (U+0069)", - "markdown": "Illegal character: i (U+0069)" + "text": "Cannot infer a type for this parameter. Please specify it explicitly.", + "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmName.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 2, - "startColumn": 7, - "charOffset": 30, + "startLine": 14, + "startColumn": 77, + "charOffset": 743, "charLength": 1, "snippet": { - "text": "i" + "text": "(" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 12, "startColumn": 1, - "charOffset": 0, - "charLength": 92, + "charOffset": 569, + "charLength": 317, "snippet": { - "text": "{{## def.assignDefault:\n {{? it.compositeRule }}\n {{\n if (it.opts.strictDefaults) {" + "text": "\ninternal fun WithExtraProperties<out Documentable>.fileLevelJvmName(): Annotations.Annotation? =\n extra[Annotations]?.fileLevelAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmNameAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmNameAnnotation(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "004bf0684b6ca55fee7fb42375ec0c0c472bdc636866a0994a76e10262a4830f" + "equalIndicator/v1": "a6c7338d530c39dab58cd145420f61dd5926063ab33898effc82852fd2d3bc33" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: $ (U+0024)", - "markdown": "Illegal character: $ (U+0024)" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmName.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 4, - "startColumn": 9, - "charOffset": 72, - "charLength": 1, + "startLine": 11, + "startColumn": 53, + "charOffset": 495, + "charLength": 18, "snippet": { - "text": "$" + "text": "firstNotNullResult" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 2, + "startLine": 9, "startColumn": 1, - "charOffset": 21, - "charLength": 126, + "charOffset": 337, + "charLength": 329, "snippet": { - "text": " {{\n var $dataType = 'dataType' + $lvl\n , $coerced = 'coerced' + $lvl;\n }}\n var {{=$dataType}} = typeof {{=$data}};" + "text": "\ninternal fun WithExtraProperties<out Documentable>.directlyAnnotatedJvmName(): Annotations.Annotation? =\n extra[Annotations]?.directAnnotations?.entries?.firstNotNullResult { (_, annotations)-> annotations.jvmNameAnnotation() }\n\ninternal fun WithExtraProperties<out Documentable>.fileLevelJvmName(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "d0bb6ff065f9f03b2ff7d36d16db3e58282e58304362666d3b97976a726343d9" + "equalIndicator/v1": "7435b79b1be2dc82eceb29e0f68d4bc0b388b7904e0133bf904cc732995df2bd" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: { (U+007B)", - "markdown": "Illegal character: { (U+007B)" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmField.kt", "uriBaseId": "SRCROOT" }, "region": { "startLine": 6, - "startColumn": 7, - "charOffset": 112, - "charLength": 1, + "startColumn": 34, + "charOffset": 230, + "charLength": 18, "snippet": { - "text": "{" + "text": "firstNotNullResult" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { "startLine": 4, "startColumn": 1, - "charOffset": 64, - "charLength": 117, + "charOffset": 87, + "charLength": 251, "snippet": { - "text": " , $coerced = 'coerced' + $lvl;\n }}\n var {{=$dataType}} = typeof {{=$data}};\n var {{=$coerced}} = undefined;\n" + "text": "import org.jetbrains.dokka.model.Documentable\nimport org.jetbrains.dokka.model.properties.WithExtraProperties\nimport org.jetbrains.kotlin.util.firstNotNullResult\n\ninternal fun WithExtraProperties<out Documentable>.jvmField(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "7259a717a8dcb67a2781e73c545b8a2172d8eb77f624da62619a3abba6eec477" + "equalIndicator/v1": "56d0b8729c27057de30dc7063fa9b403799026bf932795c5c5d7d7785c24e541" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: } (U+007D)", - "markdown": "Illegal character: } (U+007D)" + "text": "Unresolved reference: firstNotNullResult", + "markdown": "Unresolved reference: firstNotNullResult" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmField.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 2, - "startColumn": 24, - "charOffset": 47, - "charLength": 1, + "startLine": 9, + "startColumn": 53, + "charOffset": 391, + "charLength": 18, "snippet": { - "text": "}" + "text": "firstNotNullResult" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 7, "startColumn": 1, - "charOffset": 0, - "charLength": 92, + "charOffset": 249, + "charLength": 308, "snippet": { - "text": "{{## def.assignDefault:\n {{? it.compositeRule }}\n {{\n if (it.opts.strictDefaults) {" + "text": "\ninternal fun WithExtraProperties<out Documentable>.jvmField(): Annotations.Annotation? =\n extra[Annotations]?.directAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmFieldAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmFieldAnnotation(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "8115667a2465dd0fddfa5e911b5447970b8fe3f2634312461a45f6725744696e" + "equalIndicator/v1": "eba870496928dcd1458458c16badd4662837195b933ed7e7a44a8be51c52474a" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: ( (U+0028)", - "markdown": "Illegal character: ( (U+0028)" + "text": "Cannot infer a type for this parameter. Please specify it explicitly.", + "markdown": "Cannot infer a type for this parameter. Please specify it explicitly." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmField.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 4, - "startColumn": 10, - "charOffset": 66, + "startLine": 9, + "startColumn": 74, + "charOffset": 412, "charLength": 1, "snippet": { "text": "(" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 2, + "startLine": 7, "startColumn": 1, - "charOffset": 24, - "charLength": 209, + "charOffset": 249, + "charLength": 308, "snippet": { - "text": " {{? it.compositeRule }}\n {{\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);" + "text": "\ninternal fun WithExtraProperties<out Documentable>.jvmField(): Annotations.Annotation? =\n extra[Annotations]?.directAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmFieldAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmFieldAnnotation(): Annotations.Annotation? =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "c5ed3110556227ccc88ab1871ad725ed87c8165e8742e72fdad51ca32c08689e" + "equalIndicator/v1": "aec816787177a6bcb9d8b7d10958cdb728034dece08cb528732bf07292a37dfe" }, "properties": { "ideaSeverity": "ERROR" } }, { - "ruleId": "JavaAnnotator", + "ruleId": "KotlinAnnotator", "kind": "fail", "level": "error", "message": { - "text": "Illegal character: d (U+0064)", - "markdown": "Illegal character: d (U+0064)" + "text": "Unresolved reference: JavaToKotlinClassMap", + "markdown": "Unresolved reference: JavaToKotlinClassMap" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/errors.def", + "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1, - "startColumn": 5, - "charOffset": 4, - "charLength": 1, + "startLine": 12, + "startColumn": 42, + "charOffset": 549, + "charLength": 20, "snippet": { - "text": "d" + "text": "JavaToKotlinClassMap" }, - "sourceLanguage": "" + "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1, + "startLine": 10, "startColumn": 1, - "charOffset": 0, - "charLength": 46, + "charOffset": 411, + "charLength": 239, "snippet": { - "text": "{{# def.definitions }}\n\n{{## def._error:_rule:" + "text": "import org.jetbrains.dokka.model.*\nimport org.jetbrains.dokka.model.properties.PropertyContainer\nimport org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap\nimport org.jetbrains.kotlin.name.ClassId\nimport org.jetbrains.kotlin.name.FqName" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "675895587616228f2e24fdf0a2c260a403d2f781c6c4258447eb7445540be692" + "equalIndicator/v1": "78320436833cc2e9c8386a237a8558be2a67ecbb90cca93313e18b90c379c657" }, "properties": { "ideaSeverity": "ERROR" } - } - ], - "qodana.promo.results": [ + }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "KotlinAnnotator", "kind": "fail", - "level": "note", + "level": "error", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Unresolved reference: ClassId", + "markdown": "Unresolved reference: ClassId" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/transformers/pages/samples/SamplesTransformer.kt", + "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 40, - "startColumn": 88, - "charOffset": 1927, - "charLength": 2, + "startLine": 13, + "startColumn": 34, + "charOffset": 603, + "charLength": 7, "snippet": { - "text": "it" + "text": "ClassId" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 38, + "startLine": 11, "startColumn": 1, - "charOffset": 1699, - "charLength": 264, + "charOffset": 446, + "charLength": 261, "snippet": { - "text": " val samples = (page as? WithDocumentables)?.documentables?.flatMap {\n it.documentation.entries.flatMap { entry ->\n entry.value.children.filterIsInstance<Sample>().map { entry.key to it }\n }\n }" + "text": "import org.jetbrains.dokka.model.properties.PropertyContainer\nimport org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap\nimport org.jetbrains.kotlin.name.ClassId\nimport org.jetbrains.kotlin.name.FqName\nimport org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "5d92541f3f4d2bf9b3be18273d527f6a4c113b905320eb7949c3ae54764d2e19" + "equalIndicator/v1": "ca61da6bd7b4dae77cd9d91bfc2edabdd70552909f2bed40bae2bc7cccd938a4" }, "properties": { - "ideaSeverity": "WEAK WARNING" + "ideaSeverity": "ERROR" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "KotlinAnnotator", "kind": "fail", - "level": "note", + "level": "error", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Unresolved reference: FqName", + "markdown": "Unresolved reference: FqName" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/transformers/documentables/InheritorsExtractorTransformer.kt", + "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 66, - "startColumn": 56, - "charOffset": 3700, - "charLength": 2, + "startLine": 14, + "startColumn": 34, + "charOffset": 644, + "charLength": 6, "snippet": { - "text": "it" + "text": "FqName" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 64, + "startLine": 12, "startColumn": 1, - "charOffset": 3542, - "charLength": 212, + "charOffset": 508, + "charLength": 200, "snippet": { - "text": " private fun <T : Documentable> T.toInheritanceEntries() =\n (this as? WithSupertypes)?.let {\n it.supertypes.map { (k, v) -> k to v.map { it.typeConstructor.dri to dri } }\n }.orEmpty()\n" + "text": "import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap\nimport org.jetbrains.kotlin.name.ClassId\nimport org.jetbrains.kotlin.name.FqName\nimport org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "fe1edc7fd589ade3e56a5e4cebab8106779d0784747cc0ef6e0f558673855113" + "equalIndicator/v1": "e3d7372f5d8222559b6ce75e29b888b64ca4286145178c70a32a54f561968188" }, "properties": { - "ideaSeverity": "WEAK WARNING" + "ideaSeverity": "ERROR" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "KotlinAnnotator", "kind": "fail", - "level": "note", + "level": "error", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Unresolved reference: JvmPrimitiveType", + "markdown": "Unresolved reference: JvmPrimitiveType" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt", + "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 365, - "startColumn": 52, - "charOffset": 16310, - "charLength": 2, + "startLine": 15, + "startColumn": 41, + "charOffset": 691, + "charLength": 16, "snippet": { - "text": "it" + "text": "JvmPrimitiveType" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 363, + "startLine": 13, "startColumn": 1, - "charOffset": 16165, - "charLength": 270, + "charOffset": 570, + "charLength": 178, "snippet": { - "text": " t.sourceSets.map {\n contentBuilder.contentFor(t, sourceSets = setOf(it)) {\n t.underlyingType.entries.groupBy({ it.value }, { it.key }).map { (type, platforms) ->\n +contentBuilder.contentFor(\n t," + "text": "import org.jetbrains.kotlin.name.ClassId\nimport org.jetbrains.kotlin.name.FqName\nimport org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType\n\nval jvmNameProvider = JvmNameProvider()" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "a93942990340ab936decd1ac4fdb20eb5091038c24597f01a98b928524fd19b7" + "equalIndicator/v1": "b3a032a5cb501bc29c6f67c39a0c3c49c398189468d789b29157629887d62532" }, "properties": { - "ideaSeverity": "WEAK WARNING" + "ideaSeverity": "ERROR" } - }, + } + ], + "qodana.promo.results": [ { "ruleId": "NestedLambdaShadowedImplicitParameter", "kind": "fail", @@ -66649,13 +61121,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt", + "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 365, - "startColumn": 66, - "charOffset": 16324, + "startLine": 14, + "startColumn": 37, + "charOffset": 397, "charLength": 2, "snippet": { "text": "it" @@ -66663,25 +61135,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 363, + "startLine": 12, "startColumn": 1, - "charOffset": 16165, - "charLength": 270, + "charOffset": 319, + "charLength": 167, "snippet": { - "text": " t.sourceSets.map {\n contentBuilder.contentFor(t, sourceSets = setOf(it)) {\n t.underlyingType.entries.groupBy({ it.value }, { it.key }).map { (type, platforms) ->\n +contentBuilder.contentFor(\n t," + "text": " val options = it.subList(1, it.size)\n\n val deprecated = options.find { it.endsWith(\"skipDeprecated\") }?.startsWith(\"+\")\n ?: DokkaDefaults.skipDeprecated\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "ea94e9e75e89a1bbe39f2b16c2835e2bdf97203689f48d74258a9d21ec5ba682" + "equalIndicator/v1": "217d7f7ac8fda60dd6f83712b917da9c66fe51649b367a0a031ab69e845cbf60" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66699,13 +61171,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt", + "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 373, - "startColumn": 52, - "charOffset": 16706, + "startLine": 17, + "startColumn": 45, + "charOffset": 531, "charLength": 2, "snippet": { "text": "it" @@ -66713,25 +61185,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 371, + "startLine": 15, "startColumn": 1, - "charOffset": 16587, - "charLength": 273, + "charOffset": 446, + "charLength": 182, "snippet": { - "text": " ) {\n annotationsBlock(t)\n t.visibility[it]?.takeIf { it !in ignoredVisibilities }?.name?.let { keyword(\"$it \") }\n processExtraModifiers(t)\n keyword(\"typealias \")" + "text": " ?: DokkaDefaults.skipDeprecated\n\n val reportUndocumented = options.find { it.endsWith(\"reportUndocumented\") }?.startsWith(\"+\")\n ?: DokkaDefaults.reportUndocumented\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "c154591afc44355a3270f29f40a6b6b2f1b52c4e1acbaa9115545811b2685607" + "equalIndicator/v1": "1b25e0857e6516898b1cf2e693d32d2f77a09cd24419fb7eb0bcaba69678e65d" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66749,13 +61221,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt", + "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 373, - "startColumn": 104, - "charOffset": 16758, + "startLine": 20, + "startColumn": 37, + "charOffset": 665, "charLength": 2, "snippet": { "text": "it" @@ -66763,25 +61235,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 371, + "startLine": 18, "startColumn": 1, - "charOffset": 16587, - "charLength": 273, + "charOffset": 584, + "charLength": 174, "snippet": { - "text": " ) {\n annotationsBlock(t)\n t.visibility[it]?.takeIf { it !in ignoredVisibilities }?.name?.let { keyword(\"$it \") }\n processExtraModifiers(t)\n keyword(\"typealias \")" + "text": " ?: DokkaDefaults.reportUndocumented\n\n val privateApi = options.find { it.endsWith(\"includeNonPublic\") }?.startsWith(\"+\")\n ?: DokkaDefaults.includeNonPublic\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "dd01dcc63c4f841c46c186977d4dddca864427c22c832b95f1ff55f99553c232" + "equalIndicator/v1": "a914fd12c020ad484624684d97eda0c108c9503053e9919f0ab0a5c873df0419" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66799,13 +61271,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt", + "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 234, - "startColumn": 52, - "charOffset": 10534, + "startLine": 23, + "startColumn": 35, + "charOffset": 793, "charLength": 2, "snippet": { "text": "it" @@ -66813,25 +61285,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 232, + "startLine": 21, "startColumn": 1, - "charOffset": 10307, - "charLength": 278, + "charOffset": 716, + "charLength": 154, "snippet": { - "text": " separatorStyles = mainStyles + TokenStyle.Punctuation,\n surroundingCharactersStyle = mainStyles + TokenStyle.Operator) {\n signatureForProjection(it)\n }\n }" + "text": " ?: DokkaDefaults.includeNonPublic\n\n val suppress = options.find { it.endsWith(\"suppress\") }?.startsWith(\"+\")\n ?: DokkaDefaults.suppress\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "a0b3b11c879d589d7773dc676cd91154dc8bd4e08cd3707ddd9ad8c1839728cc" + "equalIndicator/v1": "6604cb933854bebcff32a3e4f7e191056f56da5075646cf1cf1afb6dca673a72" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66849,13 +61321,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 466, - "startColumn": 113, - "charOffset": 23586, + "startLine": 27, + "startColumn": 19, + "charOffset": 930, "charLength": 2, "snippet": { "text": "it" @@ -66863,25 +61335,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 464, + "startLine": 25, "startColumn": 1, - "charOffset": 23463, - "charLength": 208, + "charOffset": 870, + "charLength": 263, "snippet": { - "text": " }\n\n private fun PsiReferenceList.toDriList() = referenceElements.mapNotNull { it?.resolve()?.let { DRI.from(it) } }\n\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull(" + "text": "\n val documentedVisibilities = options\n .filter { it.matches(Regex(\"\\\\+visibility:.+\")) } // matches '+visibility:' with at least one symbol after the semicolon\n .map { DokkaConfiguration.Visibility.fromString(it.split(\":\")[1]) }\n .toSet()" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "43abdc783667215cd843e98409243d8b44f32eba0802c22d54b586149bfa3145" + "equalIndicator/v1": "0c866c2d05c71e97493c258cf83bcd48b701f2659af6678d1d3c0be896fabd4f" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66899,13 +61371,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 809, - "startColumn": 18, - "charOffset": 41128, + "startLine": 28, + "startColumn": 57, + "charOffset": 1097, "charLength": 2, "snippet": { "text": "it" @@ -66913,25 +61385,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 807, + "startLine": 26, "startColumn": 1, - "charOffset": 41066, - "charLength": 383, + "charOffset": 871, + "charLength": 320, "snippet": { - "text": " val ml = it.children.toList()\n when {\n ml.any { it.text == PsiKeyword.PUBLIC } || it.hasModifierProperty(\"public\") -> JavaVisibility.Public\n ml.any { it.text == PsiKeyword.PROTECTED } || it.hasModifierProperty(\"protected\") -> JavaVisibility.Protected\n ml.any { it.text == PsiKeyword.PRIVATE } || it.hasModifierProperty(\"private\") -> JavaVisibility.Private" + "text": " val documentedVisibilities = options\n .filter { it.matches(Regex(\"\\\\+visibility:.+\")) } // matches '+visibility:' with at least one symbol after the semicolon\n .map { DokkaConfiguration.Visibility.fromString(it.split(\":\")[1]) }\n .toSet()\n .ifEmpty { DokkaDefaults.documentedVisibilities }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "a32b4cc18854fc56349b24a79ae9b6fcd32453c6de5fb0f8dc54cc40b497d277" + "equalIndicator/v1": "ccb8483e8f64de6e959023a64bc2d9422e926ace1325a563bb8d7deac3bef5e7" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66949,13 +61421,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "core/src/main/kotlin/plugability/DokkaContext.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 810, - "startColumn": 18, - "charOffset": 41237, + "startLine": 130, + "startColumn": 95, + "charOffset": 5424, "charLength": 2, "snippet": { "text": "it" @@ -66963,25 +61435,25 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 808, + "startLine": 128, "startColumn": 1, - "charOffset": 41100, - "charLength": 388, + "charOffset": 5163, + "charLength": 416, "snippet": { - "text": " when {\n ml.any { it.text == PsiKeyword.PUBLIC } || it.hasModifierProperty(\"public\") -> JavaVisibility.Public\n ml.any { it.text == PsiKeyword.PROTECTED } || it.hasModifierProperty(\"protected\") -> JavaVisibility.Protected\n ml.any { it.text == PsiKeyword.PRIVATE } || it.hasModifierProperty(\"private\") -> JavaVisibility.Private\n else -> JavaVisibility.Default" + "text": " // suppressedExtensions can be polluted by suppressions that completely disables the extension, and would break dokka behaviour\n // if not filtered out\n val suppressedExtensionsByOverrides = suppressedExtensions.filterNot { it.value.any { it !is Suppression.ByExtension } }\n val filtered = bucket.filterNot { it in suppressedExtensionsByOverrides }\n return filtered.singleOrNull()" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "b5f141f52b1fc8e54a5ebae31ae1a2915b31ee2c84eefb6cbddcd2487a8a386e" + "equalIndicator/v1": "b0eda98a87a5c2e8ed8ced6d689aa394e9a0ac8e962ececb073d9f128ed11a01" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -66999,13 +61471,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/base/src/main/kotlin/transformers/pages/merger/PageMerger.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 811, - "startColumn": 18, - "charOffset": 41355, + "startLine": 19, + "startColumn": 28, + "charOffset": 859, "charLength": 2, "snippet": { "text": "it" @@ -67013,12 +61485,12 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 809, + "startLine": 17, "startColumn": 1, - "charOffset": 41111, - "charLength": 383, + "charOffset": 723, + "charLength": 328, "snippet": { - "text": " ml.any { it.text == PsiKeyword.PUBLIC } || it.hasModifierProperty(\"public\") -> JavaVisibility.Public\n ml.any { it.text == PsiKeyword.PROTECTED } || it.hasModifierProperty(\"protected\") -> JavaVisibility.Protected\n ml.any { it.text == PsiKeyword.PRIVATE } || it.hasModifierProperty(\"private\") -> JavaVisibility.Private\n else -> JavaVisibility.Default\n }" + "text": "\n private fun PageNode.mergeChildren(path: List<String>): PageNode = children.groupBy { it::class }.map {\n it.value.groupBy { it.name }.map { (n, v) -> mergePageNodes(v, path + n) }.map { it.assertSingle(path) }\n }.let { pages ->\n modified(children = pages.flatten().map { it.mergeChildren(path + it.name) })" } } }, @@ -67031,7 +61503,7 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "f0d5859f54d0fcb79e34f57f3affe51e9b042dec9951e7d7826d097c26ce26ca" + "equalIndicator/v1": "202a0d0b04a036d7d75f982684157be445407dbf0b95e2bdad4a58f22e18ceab" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -67049,13 +61521,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/base/src/main/kotlin/transformers/pages/merger/PageMerger.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 681, - "startColumn": 73, - "charOffset": 34908, + "startLine": 19, + "startColumn": 90, + "charOffset": 921, "charLength": 2, "snippet": { "text": "it" @@ -67063,12 +61535,12 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 679, + "startLine": 17, "startColumn": 1, - "charOffset": 34685, - "charLength": 330, + "charOffset": 723, + "charLength": 328, "snippet": { - "text": " it.toSourceSetDependent().toAdditionalModifiers(),\n annotations.toSourceSetDependent().toAnnotations(),\n psi.getConstantExpression()?.let { DefaultValue(it.toSourceSetDependent()) },\n takeIf { isVar }?.let { IsVar }\n )" + "text": "\n private fun PageNode.mergeChildren(path: List<String>): PageNode = children.groupBy { it::class }.map {\n it.value.groupBy { it.name }.map { (n, v) -> mergePageNodes(v, path + n) }.map { it.assertSingle(path) }\n }.let { pages ->\n modified(children = pages.flatten().map { it.mergeChildren(path + it.name) })" } } }, @@ -67081,7 +61553,7 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "a263034ca5e4f88c601fc620a6dca82239f3f2d985fce0ecb61d38bab46e2aa0" + "equalIndicator/v1": "0a3d26b76a1c1bcbecac1ffabd63126258801dda9de638f0040269168eb13e0b" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -67099,13 +61571,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/SearchScriptsCreator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 440, - "startColumn": 62, - "charOffset": 22241, + "startLine": 78, + "startColumn": 91, + "charOffset": 3459, "charLength": 2, "snippet": { "text": "it" @@ -67113,678 +61585,628 @@ "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 438, + "startLine": 76, "startColumn": 1, - "charOffset": 22080, - "charLength": 315, + "charOffset": 3234, + "charLength": 343, "snippet": { - "text": " extra = psi.additionalExtras().let {\n PropertyContainer.withAll(\n inheritedFrom?.let { InheritedMember(it.toSourceSetDependent()) },\n it.toSourceSetDependent().toAdditionalModifiers(),\n (psi.annotations.toList()" + "text": " c.children.filterIsInstance<JavadocClasslikePageNode>().flatMap { allClasses(it) } + c\n val types = input.flatMap {\n it.children.filterIsInstance<JavadocClasslikePageNode>().flatMap { allClasses(it) }.map { classlike -> it to classlike }\n }\n val updated = accumulator.copy(packageRecords = packages)" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.javadoc.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "e579a38a7c6913697c278bb028526d878dc96e2e1562e1a8f78b36fae49cc98d" + "equalIndicator/v1": "74fdad75c62caf401bf4c0425a84fc06a8328e67ddbe87c6509b34b2776ce563" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "PrivatePropertyName", "kind": "fail", "level": "note", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Private property name 'JVM_NAME_DOCUMENTABLE_TRANSFORMER' should not contain underscores in the middle or the end", + "markdown": "Private property name `JVM_NAME_DOCUMENTABLE_TRANSFORMER` should not contain underscores in the middle or the end" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/kotlin-as-java/src/main/kotlin/transformToJava.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 446, - "startColumn": 61, - "charOffset": 22683, - "charLength": 2, + "startLine": 11, + "startColumn": 13, + "charOffset": 421, + "charLength": 33, "snippet": { - "text": "it" + "text": "JVM_NAME_DOCUMENTABLE_TRANSFORMER" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 444, + "startLine": 9, "startColumn": 1, - "charOffset": 22498, - "charLength": 307, + "charOffset": 356, + "charLength": 147, "snippet": { - "text": " .toAnnotations(),\n ObviousMember.takeIf { psi.isObvious(inheritedFrom) },\n psi.throwsList.toDriList().takeIf { it.isNotEmpty() }\n ?.let { CheckedExceptions(it.toSourceSetDependent()) }\n )" + "text": "import org.jetbrains.dokka.plugability.DokkaContext\n\nprivate val JVM_NAME_DOCUMENTABLE_TRANSFORMER by lazy {\n JvmNameDocumentableTransformer()\n}" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "d20789272edb467fd289e706cf3c23f7fe423ca22e26349790cedabd3370095f" + "equalIndicator/v1": "0a28542441749f76c0c03f5ca4801e819e31684b2a8df34129396ab18ef509ee" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "LocalVariableName", "kind": "fail", "level": "note", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Local variable name 'jsoup_version' should not contain underscores", + "markdown": "Local variable name `jsoup_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "core/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 447, - "startColumn": 55, - "charOffset": 22755, - "charLength": 2, + "startLine": 12, + "startColumn": 9, + "charOffset": 224, + "charLength": 13, "snippet": { - "text": "it" + "text": "jsoup_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 445, + "startLine": 10, "startColumn": 1, - "charOffset": 22544, - "charLength": 279, + "charOffset": 177, + "charLength": 133, "snippet": { - "text": " ObviousMember.takeIf { psi.isObvious(inheritedFrom) },\n psi.throwsList.toDriList().takeIf { it.isNotEmpty() }\n ?.let { CheckedExceptions(it.toSourceSetDependent()) }\n )\n }" + "text": " implementation(kotlin(\"reflect\"))\n\n val jsoup_version: String by project\n implementation(\"org.jsoup:jsoup:$jsoup_version\")\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "f0cf498ffbbbb7d509d9b49386e5e87260025eeff308f81a525634c7ceec99a4" + "equalIndicator/v1": "f2b8d055d489161dc172e3b8186bd5073911a678e55c286076a2323545dfb28e" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "LocalVariableName", "kind": "fail", "level": "note", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Local variable name 'jackson_version' should not contain underscores", + "markdown": "Local variable name `jackson_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "core/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1215, - "startColumn": 25, - "charOffset": 60361, - "charLength": 2, + "startLine": 15, + "startColumn": 9, + "charOffset": 319, + "charLength": 15, "snippet": { - "text": "it" + "text": "jackson_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1213, + "startLine": 13, "startColumn": 1, - "charOffset": 60251, - "charLength": 186, + "charOffset": 257, + "charLength": 281, "snippet": { - "text": " it.typeConstructor.let {\n TypeConstructorWithKind(\n it,\n KotlinClassKindTypes.CLASS\n )" + "text": " implementation(\"org.jsoup:jsoup:$jsoup_version\")\n\n val jackson_version: String by project\n implementation(\"com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version\")\n implementation(\"com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jackson_version\")" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "5d3591ab9d4de29b884fc87fc91f0b987d4b06185dd45034045827a5b3ed0b68" + "equalIndicator/v1": "57968d0153cb976f3407a5e31270dbce99530d7db088754cb37422f035622f1d" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "LocalVariableName", "kind": "fail", "level": "note", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Local variable name 'jackson_databind_version' should not contain underscores", + "markdown": "Local variable name `jackson_databind_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "core/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1038, - "startColumn": 53, - "charOffset": 51621, - "charLength": 2, + "startLine": 18, + "startColumn": 9, + "charOffset": 547, + "charLength": 24, "snippet": { - "text": "it" + "text": "jackson_databind_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1036, + "startLine": 16, "startColumn": 1, - "charOffset": 51464, - "charLength": 286, + "charOffset": 354, + "charLength": 352, "snippet": { - "text": " fromSubjectOfTag = null,\n qualifiedName = link.split('.')\n ).firstOrNull()?.let { DRI.from(it) }\n } catch (e1: IllegalArgumentException) {\n logger.warn(\"Couldn't resolve link for $link\")" + "text": " implementation(\"com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version\")\n implementation(\"com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jackson_version\")\n val jackson_databind_version: String by project\n constraints {\n implementation(\"com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version\") {" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "e0c385fb24fbd8daa06a19912e5bc95f1a527e0695d8dc90d3b0b95f380f2223" + "equalIndicator/v1": "f4b90877fdfa5c4d8a8e5a6e101c22700bd7059ccd814db6d93ca9cdb89bc02f" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "LocalVariableName", "kind": "fail", "level": "note", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Local variable name 'coroutines_version' should not contain underscores", + "markdown": "Local variable name `coroutines_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "core/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1046, - "startColumn": 39, - "charOffset": 51973, - "charLength": 2, + "startLine": 25, + "startColumn": 9, + "charOffset": 770, + "charLength": 18, "snippet": { - "text": "it" + "text": "coroutines_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1044, + "startLine": 23, "startColumn": 1, - "charOffset": 51809, - "charLength": 213, + "charOffset": 755, + "charLength": 141, "snippet": { - "text": " kdocLocation = toSourceElement.containingFile.name?.let {\n val fqName = fqNameOrNull()?.asString()\n if (fqName != null) \"$it/$fqName\"\n else it\n }" + "text": " }\n\n val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "1ed2506b5f68c31f08c78d7e4277928fdd6286e1a77388ac2db19234502e5894" + "equalIndicator/v1": "d4d6f76acf51291bc8f0cdbc611ac91d36a99a0d4aef68277d2a49e041001512" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "NestedLambdaShadowedImplicitParameter", + "ruleId": "LocalVariableName", "kind": "fail", "level": "note", "message": { - "text": "Implicit parameter 'it' of enclosing lambda is shadowed", - "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed" + "text": "Local variable name 'coroutines_version' should not contain underscores", + "markdown": "Local variable name `coroutines_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt", + "uri": "integration-tests/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 1047, - "startColumn": 22, - "charOffset": 52006, - "charLength": 2, + "startLine": 62, + "startColumn": 9, + "charOffset": 1875, + "charLength": 18, "snippet": { - "text": "it" + "text": "coroutines_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 1045, + "startLine": 60, "startColumn": 1, - "charOffset": 51879, - "charLength": 153, + "charOffset": 1798, + "charLength": 243, "snippet": { - "text": " val fqName = fqNameOrNull()?.asString()\n if (fqName != null) \"$it/$fqName\"\n else it\n }\n )" + "text": " implementation(kotlin(\"stdlib\"))\n api(project(\":test-utils\"))\n val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n val jsoup_version: String by project" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.integration-tests", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "b0e541d707a8052cdc2237dbda8a44806736f0e67631731b749c307d217d84d8" + "equalIndicator/v1": "e4b5dbaa609fe753ba3ac7708b5944518ecedcb1457dfe4b364b9b19017c9088" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "PropertyName", + "ruleId": "LocalVariableName", "kind": "fail", "level": "note", "message": { - "text": "Property name 'dokka_version' should not contain underscores", - "markdown": "Property name `dokka_version` should not contain underscores" + "text": "Local variable name 'jsoup_version' should not contain underscores", + "markdown": "Local variable name `jsoup_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "build.gradle.kts", + "uri": "integration-tests/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 11, - "startColumn": 5, - "charOffset": 236, + "startLine": 64, + "startColumn": 9, + "charOffset": 2009, "charLength": 13, "snippet": { - "text": "dokka_version" + "text": "jsoup_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 9, + "startLine": 62, "startColumn": 1, - "charOffset": 229, - "charLength": 54, + "charOffset": 1867, + "charLength": 305, "snippet": { - "text": "}\n\nval dokka_version: String by project\n\nallprojects {" + "text": " val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n val jsoup_version: String by project\n implementation(\"org.jsoup:jsoup:$jsoup_version\")\n implementation(\"org.eclipse.jgit:org.eclipse.jgit:5.12.0.202106070339-r\")" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka", + "fullyQualifiedName": "dokka.integration-tests", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "bae7af824c4a6a55d42805405087c3230d4aab1c307661cf3e4c43b0b26466a9" + "equalIndicator/v1": "e272496a008934b2fd612c8900a77d33855d3cf7d90f18cf38ff803c34568444" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "KotlinUnusedImport", + "ruleId": "LocalVariableName", "kind": "fail", - "level": "warning", + "level": "note", "message": { - "text": "Unused import directive", - "markdown": "Unused import directive" + "text": "Local variable name 'jsoup_version' should not contain underscores", + "markdown": "Local variable name `jsoup_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsOrdering.kt", + "uri": "plugins/mathjax/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { "startLine": 6, - "startColumn": 1, - "charOffset": 207, - "charLength": 47, + "startColumn": 9, + "charOffset": 124, + "charLength": 13, "snippet": { - "text": "import org.jetbrains.dokka.versioning.VersionId" + "text": "jsoup_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { "startLine": 4, "startColumn": 1, - "charOffset": 102, - "charLength": 269, + "charOffset": 70, + "charLength": 208, "snippet": { - "text": "import org.jetbrains.dokka.plugability.DokkaContext\nimport org.jetbrains.dokka.plugability.configuration\nimport org.jetbrains.dokka.versioning.VersionId\nimport org.jetbrains.dokka.versioning.VersioningConfiguration\nimport org.jetbrains.dokka.versioning.VersioningPlugin" + "text": " implementation(project(\":plugins:base\"))\n\n val jsoup_version: String by project\n testImplementation(\"org.jsoup:jsoup:$jsoup_version\")\n testImplementation(project(\":plugins:base:base-test-utils\"))" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.versioning.main", + "fullyQualifiedName": "dokka.plugins.mathjax", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "e1962c2c6fc6817262f4be8ac314cc1faf275c8765074f429f418326f35dc3ea" + "equalIndicator/v1": "6d78728453b11e8159eff3e08b07ce68fbf3a8e60375f8f34f75a68a29cd71b1" }, "properties": { - "ideaSeverity": "WARNING" + "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "KotlinUnusedImport", + "ruleId": "LocalVariableName", "kind": "fail", - "level": "warning", + "level": "note", "message": { - "text": "Unused import directive", - "markdown": "Unused import directive" + "text": "Local variable name 'coroutines_version' should not contain underscores", + "markdown": "Local variable name `coroutines_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsOrdering.kt", + "uri": "plugins/templating/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 7, - "startColumn": 1, - "charOffset": 255, - "charLength": 61, + "startLine": 10, + "startColumn": 9, + "charOffset": 220, + "charLength": 18, "snippet": { - "text": "import org.jetbrains.dokka.versioning.VersioningConfiguration" + "text": "coroutines_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 5, - "startColumn": 1, - "charOffset": 154, - "charLength": 218, - "snippet": { - "text": "import org.jetbrains.dokka.plugability.configuration\nimport org.jetbrains.dokka.versioning.VersionId\nimport org.jetbrains.dokka.versioning.VersioningConfiguration\nimport org.jetbrains.dokka.versioning.VersioningPlugin\n" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.plugins.versioning.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "ec9b1fddca2e25c11c693bbb529ccb3ab74173657fa0f8d7743545b94db4c44b" - }, - "properties": { - "ideaSeverity": "WARNING" - } - }, - { - "ruleId": "KotlinUnusedImport", - "kind": "fail", - "level": "warning", - "message": { - "text": "Unused import directive", - "markdown": "Unused import directive" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsOrdering.kt", - "uriBaseId": "SRCROOT" - }, - "region": { "startLine": 8, "startColumn": 1, - "charOffset": 317, - "charLength": 54, - "snippet": { - "text": "import org.jetbrains.dokka.versioning.VersioningPlugin" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 6, - "startColumn": 1, - "charOffset": 207, - "charLength": 198, + "charOffset": 166, + "charLength": 222, "snippet": { - "text": "import org.jetbrains.dokka.versioning.VersionId\nimport org.jetbrains.dokka.versioning.VersioningConfiguration\nimport org.jetbrains.dokka.versioning.VersioningPlugin\n\nfun interface VersionsOrdering {" + "text": " implementation(project(\":plugins:base\"))\n\n val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n val jackson_version: String by project" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.versioning.main", + "fullyQualifiedName": "dokka.plugins.templating", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "3e40f0c648b9d58cd09142ce2ece4c8038ead67d334812136be456473868dab9" + "equalIndicator/v1": "a19b172ca77e544f778bba1408a481b24361b59c1fe039ec90c122f267af5855" }, "properties": { - "ideaSeverity": "WARNING" + "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "KotlinUnusedImport", + "ruleId": "LocalVariableName", "kind": "fail", - "level": "warning", + "level": "note", "message": { - "text": "Unused import directive", - "markdown": "Unused import directive" + "text": "Local variable name 'jackson_version' should not contain underscores", + "markdown": "Local variable name `jackson_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/all-modules-page/src/main/kotlin/ExternalModuleLinkResolver.kt", + "uri": "plugins/templating/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 8, - "startColumn": 1, - "charOffset": 376, - "charLength": 69, + "startLine": 12, + "startColumn": 9, + "charOffset": 354, + "charLength": 15, "snippet": { - "text": "import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat" + "text": "jackson_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 6, + "startLine": 10, "startColumn": 1, - "charOffset": 226, - "charLength": 308, + "charOffset": 212, + "charLength": 318, "snippet": { - "text": "import org.jetbrains.dokka.base.resolvers.shared.PackageList\nimport org.jetbrains.dokka.base.resolvers.shared.PackageList.Companion.PACKAGE_LIST_NAME\nimport org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat\nimport org.jetbrains.dokka.links.DRI\nimport org.jetbrains.dokka.plugability.DokkaContext" + "text": " val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n val jackson_version: String by project\n implementation(\"com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version\")\n val jackson_databind_version: String by project" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.all-modules-page.main", + "fullyQualifiedName": "dokka.plugins.templating", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "3ec9d828b88cdb9430d5e4f2c3c425a30a6b4939852396d658212407299891e8" + "equalIndicator/v1": "4200a7b0b306f49324fc4ed11c191046e281ac60519f626a11d38a79cd508af6" }, "properties": { - "ideaSeverity": "WARNING" + "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "KotlinUnusedImport", + "ruleId": "LocalVariableName", "kind": "fail", - "level": "warning", + "level": "note", "message": { - "text": "Unused import directive", - "markdown": "Unused import directive" + "text": "Local variable name 'jackson_databind_version' should not contain underscores", + "markdown": "Local variable name `jackson_databind_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaCommonKlibLibraryInfo.kt", + "uri": "plugins/templating/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 10, - "startColumn": 1, - "charOffset": 380, - "charLength": 51, + "startLine": 14, + "startColumn": 9, + "charOffset": 487, + "charLength": 24, "snippet": { - "text": "import org.jetbrains.kotlin.platform.js.JsPlatforms" + "text": "jackson_databind_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 8, + "startLine": 12, "startColumn": 1, - "charOffset": 275, - "charLength": 227, + "charOffset": 346, + "charLength": 300, "snippet": { - "text": "import org.jetbrains.kotlin.platform.CommonPlatforms\nimport org.jetbrains.kotlin.platform.TargetPlatform\nimport org.jetbrains.kotlin.platform.js.JsPlatforms\nimport org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices\n" + "text": " val jackson_version: String by project\n implementation(\"com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version\")\n val jackson_databind_version: String by project\n constraints {\n implementation(\"com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version\") {" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.templating", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "21bd4817cda0ed0d58def26905999e1b441826e0cd5bff85c550aa0170d1bccf" + "equalIndicator/v1": "c654d5de2ac395ca708a241129d8116002add20df0a6607af6be49eeaf2b0f62" }, "properties": { - "ideaSeverity": "WARNING" + "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "KotlinUnusedImport", + "ruleId": "LocalVariableName", "kind": "fail", - "level": "warning", + "level": "note", "message": { - "text": "Unused import directive", - "markdown": "Unused import directive" + "text": "Local variable name 'kotlinx_html_version' should not contain underscores", + "markdown": "Local variable name `kotlinx_html_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt", + "uri": "plugins/templating/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 19, - "startColumn": 1, - "charOffset": 870, - "charLength": 79, + "startLine": 20, + "startColumn": 9, + "charOffset": 709, + "charLength": 20, "snippet": { - "text": "import org.jetbrains.dokka.base.translators.psi.parsers.JavaDocumentationParser" + "text": "kotlinx_html_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 17, + "startLine": 18, "startColumn": 1, - "charOffset": 787, - "charLength": 308, + "charOffset": 685, + "charLength": 147, "snippet": { - "text": "import org.jetbrains.dokka.analysis.from\nimport org.jetbrains.dokka.base.DokkaBase\nimport org.jetbrains.dokka.base.translators.psi.parsers.JavaDocumentationParser\nimport org.jetbrains.dokka.base.translators.psi.parsers.JavadocParser\nimport org.jetbrains.dokka.base.translators.typeConstructorsBeingExceptions" + "text": " }\n }\n val kotlinx_html_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-html-jvm:$kotlinx_html_version\")\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.templating", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "9f3e93872bb4b0c6e92fb7d5ebfebae57fa7c39097f0e0f281155866df217f85" + "equalIndicator/v1": "2bfcf8e4786ee0ad9107cbdfb82fa028ee88cc169ab8d1e513b112cce5f1b720" }, "properties": { - "ideaSeverity": "WARNING" + "ideaSeverity": "WEAK WARNING" } }, { @@ -67792,46 +62214,46 @@ "kind": "fail", "level": "note", "message": { - "text": "Local variable name 'jackson_version' should not contain underscores", - "markdown": "Local variable name `jackson_version` should not contain underscores" + "text": "Local variable name 'jsoup_version' should not contain underscores", + "markdown": "Local variable name `jsoup_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/gfm/build.gradle.kts", + "uri": "plugins/templating/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 7, + "startLine": 23, "startColumn": 9, - "charOffset": 237, - "charLength": 15, + "charOffset": 841, + "charLength": 13, "snippet": { - "text": "jackson_version" + "text": "jsoup_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 5, + "startLine": 21, "startColumn": 1, - "charOffset": 115, - "charLength": 298, + "charOffset": 749, + "charLength": 242, "snippet": { - "text": " testImplementation(project(\":plugins:base\"))\n testImplementation(project(\":plugins:base:base-test-utils\"))\n val jackson_version: String by project\n implementation(\"com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version\")\n val jackson_databind_version: String by project" + "text": " implementation(\"org.jetbrains.kotlinx:kotlinx-html-jvm:$kotlinx_html_version\")\n\n val jsoup_version: String by project\n implementation(\"org.jsoup:jsoup:$jsoup_version\")\n testImplementation(project(\":plugins:base:base-test-utils\"))" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.gfm", + "fullyQualifiedName": "dokka.plugins.templating", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "752d02ca3e22cb754c1a5f800a8a30b304339e658e7ca1a67b443efeb39e3ff7" + "equalIndicator/v1": "df20bf86b092e86f16f37fb8493a6c522b82e9257121c2ba95ce538869f4f2e6" }, "properties": { "ideaSeverity": "WEAK WARNING" @@ -67842,299 +62264,199 @@ "kind": "fail", "level": "note", "message": { - "text": "Local variable name 'jackson_databind_version' should not contain underscores", - "markdown": "Local variable name `jackson_databind_version` should not contain underscores" + "text": "Local variable name 'coroutines_version' should not contain underscores", + "markdown": "Local variable name `coroutines_version` should not contain underscores" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/gfm/build.gradle.kts", + "uri": "plugins/gfm/gfm-template-processing/build.gradle.kts", "uriBaseId": "SRCROOT" }, "region": { "startLine": 9, "startColumn": 9, - "charOffset": 370, - "charLength": 24, + "charOffset": 276, + "charLength": 18, "snippet": { - "text": "jackson_databind_version" + "text": "coroutines_version" }, "sourceLanguage": "kotlin" }, "contextRegion": { "startLine": 7, "startColumn": 1, - "charOffset": 229, - "charLength": 300, + "charOffset": 216, + "charLength": 187, "snippet": { - "text": " val jackson_version: String by project\n implementation(\"com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version\")\n val jackson_databind_version: String by project\n constraints {\n implementation(\"com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version\") {" + "text": " implementation(project(\":plugins:templating\"))\n\n val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n}" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.gfm", + "fullyQualifiedName": "dokka.plugins.gfm.gfm-template-processing", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "2171da3a2a6be1dee5331d7a0b25c380bb59a3c4cc8592afff5be67e66721bc8" + "equalIndicator/v1": "bcc6bdd4e78cf56d36fa26cc6d03ad362aec4dbbfd6dc10b94c221b48cb60a10" }, "properties": { "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "KDocUnresolvedReference", + "ruleId": "RedundantNullableReturnType", "kind": "fail", "level": "warning", "message": { - "text": "Cannot resolve symbol 'NativeResolverForModuleFactory'", - "markdown": "Cannot resolve symbol 'NativeResolverForModuleFactory'" + "text": "'resolveToGetDri' always returns non-null type", + "markdown": "'resolveToGetDri' always returns non-null type" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaNativeResolverForModuleFactory.kt", + "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/exceptionTag.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 22, - "startColumn": 23, - "charOffset": 1208, - "charLength": 30, + "startLine": 13, + "startColumn": 54, + "charOffset": 535, + "charLength": 1, "snippet": { - "text": "NativeResolverForModuleFactory" + "text": "?" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 20, + "startLine": 11, "startColumn": 1, - "charOffset": 1097, - "charLength": 272, + "charOffset": 465, + "charLength": 98, "snippet": { - "text": "import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService\n\n/** TODO: replace by [NativeResolverForModuleFactory] after fix of KT-40734 */\ninternal class DokkaNativeResolverForModuleFactory(\n private val targetEnvironment: TargetEnvironment" + "text": " } else this\n\ninternal fun PsiElement.resolveToGetDri(): PsiElement? =\n reference?.resolve()" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "7f0a92d536cc49fdf8959543883c796af470414436a8c09eb7adfde4e860e05e" + "equalIndicator/v1": "fcc649a170956a52025e9790f881b75b9bff096dad40ad707be3b1ceca7da094" }, "properties": { "ideaSeverity": "WARNING" } }, { - "ruleId": "MemberVisibilityCanBePrivate", - "kind": "fail", - "level": "note", - "message": { - "text": "Property 'moduleVersion' could be private", - "markdown": "Property 'moduleVersion' could be private" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 28, - "startColumn": 9, - "charOffset": 925, - "charLength": 13, - "snippet": { - "text": "moduleVersion" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 26, - "startColumn": 1, - "charOffset": 881, - "charLength": 152, - "snippet": { - "text": " field = value\n }\n var moduleVersion: String = \"1.0-SNAPSHOT\"\n var outputDir: File = File(\"out\")\n var format: String = \"html\"" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.core.test-api.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "2ed12efd77110917144fd0245c27866f9ab5e10adb3dea1fcf5cffc7e255c01b" - }, - "properties": { - "ideaSeverity": "INFO" - } - }, - { - "ruleId": "MemberVisibilityCanBePrivate", + "ruleId": "KDocUnresolvedReference", "kind": "fail", - "level": "note", + "level": "warning", "message": { - "text": "Property 'cacheRoot' could be private", - "markdown": "Property 'cacheRoot' could be private" + "text": "Cannot resolve symbol 'KDocLexer'", + "markdown": "Cannot resolve symbol 'KDocLexer'" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", + "uri": "plugins/base/src/main/kotlin/parsers/Parser.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 32, - "startColumn": 9, - "charOffset": 1079, + "startLine": 55, + "startColumn": 65, + "charOffset": 2309, "charLength": 9, "snippet": { - "text": "cacheRoot" - }, - "sourceLanguage": "kotlin" - }, - "contextRegion": { - "startLine": 30, - "startColumn": 1, - "charOffset": 1002, - "charLength": 239, - "snippet": { - "text": " var format: String = \"html\"\n var offlineMode: Boolean = false\n var cacheRoot: String? = null\n var pluginsClasspath: List<File> = emptyList()\n var pluginsConfigurations: MutableList<PluginConfigurationImpl> = mutableListOf()" - } - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "dokka.core.test-api.main", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "ddd69de23e0a12f93a856afda6ac0a1c86c29dbe81c2b9600920ade66708e545" - }, - "properties": { - "ideaSeverity": "INFO" - } - }, - { - "ruleId": "MemberVisibilityCanBePrivate", - "kind": "fail", - "level": "note", - "message": { - "text": "Property 'jdkVersion' could be private", - "markdown": "Property 'jdkVersion' could be private" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 98, - "startColumn": 9, - "charOffset": 4120, - "charLength": 10, - "snippet": { - "text": "jdkVersion" + "text": "KDocLexer" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 96, + "startLine": 53, "startColumn": 1, - "charOffset": 4027, - "charLength": 190, + "charOffset": 2138, + "charLength": 328, "snippet": { - "text": " var skipEmptyPackages: Boolean = false,\n var skipDeprecated: Boolean = false,\n var jdkVersion: Int = 8,\n var languageVersion: String? = null,\n var apiVersion: String? = null," + "text": " * KDoc parser from Kotlin compiler relies on a comment asterisk\n * So there is a mini parser here\n * TODO: at least to adapt [org.jetbrains.kotlin.kdoc.lexer.KDocLexer] to analyze KDoc without the asterisks and use it here\n */\n private fun extractTagsToListOfPairs(text: String): List<Pair<String, String>> =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "7ce57899855adba4e0fea797a53303a0c2e1b430e001209a34e1dd8aa37c47ce" + "equalIndicator/v1": "f7bee5d1f8931a6101b64c79e60727411d4f4f6be961ad3edb49e2a3e22d3f2b" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WARNING" } }, { - "ruleId": "MemberVisibilityCanBePrivate", + "ruleId": "KDocUnresolvedReference", "kind": "fail", - "level": "note", + "level": "warning", "message": { - "text": "Property 'apiVersion' could be private", - "markdown": "Property 'apiVersion' could be private" + "text": "Cannot resolve symbol 'KDocSection'", + "markdown": "Cannot resolve symbol 'KDocSection'" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", + "uri": "plugins/base/src/main/kotlin/parsers/Parser.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 100, - "startColumn": 9, - "charOffset": 4190, - "charLength": 10, + "startLine": 68, + "startColumn": 48, + "charOffset": 2861, + "charLength": 11, "snippet": { - "text": "apiVersion" + "text": "KDocSection" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 98, + "startLine": 66, "startColumn": 1, - "charOffset": 4112, - "charLength": 180, + "charOffset": 2753, + "charLength": 219, "snippet": { - "text": " var jdkVersion: Int = 8,\n var languageVersion: String? = null,\n var apiVersion: String? = null,\n var noStdlibLink: Boolean = false,\n var noJdkLink: Boolean = false," + "text": " /**\n * Ignore a doc tag inside code spans and blocks\n * @see org.jetbrains.kotlin.kdoc.psi.impl.KDocSection\n */\n private fun CharSequence.extractKDocSections(delimiter: String = \"\\n@\"): List<String> {" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "66f7cc7964dfa6780451eb24b6ea0defe96cbbb95fbd37c9af701ec9314791d5" + "equalIndicator/v1": "e43de250aac56ad60b5222fd791ed4413c144be85fe61735187c287d4a019840" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WARNING" } }, { @@ -68142,49 +62464,49 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'noStdlibLink' could be private", - "markdown": "Property 'noStdlibLink' could be private" + "text": "Property 'context' could be private", + "markdown": "Property 'context' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", + "uri": "plugins/gfm/gfm-template-processing/src/main/kotlin/org/jetbrains/dokka/gfm/templateProcessing/GfmTemplateProcessingStrategy.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 101, - "startColumn": 9, - "charOffset": 4226, - "charLength": 12, + "startLine": 19, + "startColumn": 41, + "charOffset": 841, + "charLength": 7, "snippet": { - "text": "noStdlibLink" + "text": "context" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 99, + "startLine": 17, "startColumn": 1, - "charOffset": 4141, - "charLength": 204, + "charOffset": 780, + "charLength": 160, "snippet": { - "text": " var languageVersion: String? = null,\n var apiVersion: String? = null,\n var noStdlibLink: Boolean = false,\n var noJdkLink: Boolean = false,\n var suppressedFiles: List<String> = emptyList()," + "text": "import java.io.File\n\nclass GfmTemplateProcessingStrategy(val context: DokkaContext) : TemplateProcessingStrategy {\n\n private val externalModuleLinkResolver =" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.gfm.gfm-template-processing.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "6c00be28afea4d5e04d1bf9b4ea8af8fbb4092857b7baa3507b1ac52bd6ccb93" + "equalIndicator/v1": "015f81a1a6abf1ac0ce839d32ec9218bac444c6dd7f06e4d3c7f47c367b120eb" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { @@ -68192,49 +62514,49 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'noJdkLink' could be private", - "markdown": "Property 'noJdkLink' could be private" + "text": "Property 'separateInheritedMembers' could be private", + "markdown": "Property 'separateInheritedMembers' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", + "uri": "plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 102, - "startColumn": 9, - "charOffset": 4265, + "startLine": 45, + "startColumn": 5, + "charOffset": 2217, "charLength": 9, "snippet": { - "text": "noJdkLink" + "text": "protected" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 100, + "startLine": 43, "startColumn": 1, - "charOffset": 4182, - "charLength": 205, + "charOffset": 2129, + "charLength": 235, "snippet": { - "text": " var apiVersion: String? = null,\n var noStdlibLink: Boolean = false,\n var noJdkLink: Boolean = false,\n var suppressedFiles: List<String> = emptyList(),\n var analysisPlatform: String = \"jvm\"," + "text": " ?: DokkaBaseConfiguration.mergeImplicitExpectActualDeclarationsDefault\n\n protected val separateInheritedMembers =\n configuration?.separateInheritedMembers ?: DokkaBaseConfiguration.separateInheritedMembersDefault\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "09eda6d6b00aba160809a0ff2e562988f221b51e8d389b0d8ca1f0f30a6bf686" + "equalIndicator/v1": "5b7a28236b19491da033f07a4a726e9a9948ce15468374ce2726b7b65cd5f26a" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { @@ -68242,49 +62564,49 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'pluginsClasspath' could be private", - "markdown": "Property 'pluginsClasspath' could be private" + "text": "Property 'mergeImplicitExpectActualDeclarations' could be private", + "markdown": "Property 'mergeImplicitExpectActualDeclarations' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", + "uri": "plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 33, - "startColumn": 9, - "charOffset": 1113, - "charLength": 16, + "startLine": 41, + "startColumn": 5, + "charOffset": 2014, + "charLength": 9, "snippet": { - "text": "pluginsClasspath" + "text": "protected" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 31, + "startLine": 39, "startColumn": 1, - "charOffset": 1034, - "charLength": 246, + "charOffset": 1895, + "charLength": 316, "snippet": { - "text": " var offlineMode: Boolean = false\n var cacheRoot: String? = null\n var pluginsClasspath: List<File> = emptyList()\n var pluginsConfigurations: MutableList<PluginConfigurationImpl> = mutableListOf()\n var failOnWarning: Boolean = false" + "text": " protected open val contentBuilder = PageContentBuilder(commentsToContentConverter, signatureProvider, logger)\n\n protected val mergeImplicitExpectActualDeclarations =\n configuration?.mergeImplicitExpectActualDeclarations\n ?: DokkaBaseConfiguration.mergeImplicitExpectActualDeclarationsDefault" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "e9c21222bb635ed09b222914e17350ebab2b73c96b5ddb5423b67960cb04ba26" + "equalIndicator/v1": "87db3bfbfcc4fdfdeac8ad37d8bbff555fcc16cfaef8bede75d706d6c77670a4" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { @@ -68292,49 +62614,49 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'offlineMode' could be private", - "markdown": "Property 'offlineMode' could be private" + "text": "Function 'htmlForText' could be private", + "markdown": "Function 'htmlForText' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt", + "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/JavadocContentToHtmlTranslator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 31, + "startLine": 30, "startColumn": 9, - "charOffset": 1042, + "charOffset": 1290, "charLength": 11, "snippet": { - "text": "offlineMode" + "text": "htmlForText" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 29, + "startLine": 28, "startColumn": 1, - "charOffset": 964, - "charLength": 191, + "charOffset": 1271, + "charLength": 130, "snippet": { - "text": " var outputDir: File = File(\"out\")\n var format: String = \"html\"\n var offlineMode: Boolean = false\n var cacheRoot: String? = null\n var pluginsClasspath: List<File> = emptyList()" + "text": " }\n\n fun htmlForText(node: ContentText): String {\n val escapedText = node.text.htmlEscape()\n return when {" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.javadoc.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "99f9567b8d592931345980dfc78f5a4c2c789e471d38fa46247ad945598df7da" + "equalIndicator/v1": "34ef0806bf15b939bdb2748039d0e0e55d400d55cdbfefe5baeca3b980bcd99c" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { @@ -68342,49 +62664,49 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'packagesIndex' could be private", - "markdown": "Property 'packagesIndex' could be private" + "text": "Property 'dokkaContext' could be private", + "markdown": "Property 'dokkaContext' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt", + "uri": "plugins/templating/src/main/kotlin/templates/JsonElementBasedTemplateProcessingStrategy.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 41, - "startColumn": 5, - "charOffset": 2103, - "charLength": 9, + "startLine": 56, + "startColumn": 39, + "charOffset": 2392, + "charLength": 12, "snippet": { - "text": "protected" + "text": "dokkaContext" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 39, + "startLine": 54, "startColumn": 1, - "charOffset": 2084, - "charLength": 187, + "charOffset": 2351, + "charLength": 205, "snippet": { - "text": " }\n\n protected val packagesIndex: Map<String, ExternalLocationProvider?> =\n externalLocationProviders\n .flatMap { (extDocInfo, externalLocationProvider) ->" + "text": "}\n\nclass PagesSearchTemplateStrategy(val dokkaContext: DokkaContext) :\n BaseJsonNavigationTemplateProcessingStrategy(dokkaContext) {\n override val navigationFileNameWithoutExtension: String = \"pages\"" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.templating.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "35ccae1c0db8fe872340fd4d69de459cb76af564d6e3b09c23e7dcf3e08f079d" + "equalIndicator/v1": "159dfe0cd0fb2084e24e32ec014a145705dbc6f6f5879cb22582622fc62f2701" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { @@ -68392,49 +62714,49 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'locationsIndex' could be private", - "markdown": "Property 'locationsIndex' could be private" + "text": "Property 'context' could be private", + "markdown": "Property 'context' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt", + "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersioningStorage.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 53, - "startColumn": 5, - "charOffset": 2674, - "charLength": 9, + "startLine": 21, + "startColumn": 36, + "charOffset": 655, + "charLength": 7, "snippet": { - "text": "protected" + "text": "context" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 51, + "startLine": 19, "startColumn": 1, - "charOffset": 2668, - "charLength": 278, + "charOffset": 590, + "charLength": 150, "snippet": { - "text": "\n\n protected val locationsIndex: Map<String, ExternalLocationProvider?> = externalLocationProviders\n .flatMap { (extDocInfo, externalLocationProvider) ->\n extDocInfo.packageList.locations.keys.map { relocatedDri -> relocatedDri to externalLocationProvider }" + "text": "typealias VersionId = String\n\nclass DefaultVersioningStorage(val context: DokkaContext) : VersioningStorage {\n\n private val mapper = ObjectMapper()" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.plugins.versioning.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "be8220e6f554fe43bc4d34091701e0f616c05a912546c2c8f95c877e0db42778" + "equalIndicator/v1": "df4f9930fe3980abb0534b1971bea0309bd5ddbd90791dfc1c0d3fc56d114e4c" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { @@ -68442,196 +62764,196 @@ "kind": "fail", "level": "note", "message": { - "text": "Property 'externalLocationProviders' could be private", - "markdown": "Property 'externalLocationProviders' could be private" + "text": "Function 'registerLibraries' could be private", + "markdown": "Function 'registerLibraries' could be private" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 25, - "startColumn": 5, - "charOffset": 1223, - "charLength": 9, + "startLine": 308, + "startColumn": 35, + "charOffset": 14106, + "charLength": 17, "snippet": { - "text": "protected" + "text": "registerLibraries" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 23, + "startLine": 306, "startColumn": 1, - "charOffset": 1135, - "charLength": 248, + "charOffset": 14065, + "charLength": 263, "snippet": { - "text": " dokkaContext.plugin<DokkaBase>().query { externalLocationProviderFactory }\n\n protected val externalLocationProviders: Map<ExternalDocumentation, ExternalLocationProvider?> = dokkaContext\n .configuration\n .sourceSets" + "text": " }\n\n fun Collection<KotlinLibrary>.registerLibraries(): List<DokkaKlibLibraryInfo> {\n if (analysisPlatform != Platform.native && analysisPlatform != Platform.js) return emptyList()\n val dependencyResolver = DokkaKlibLibraryDependencyResolver()" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "9d0aeadc4f1b5cfe0817539e034a3707bca3fd8935806098076b18b278c26f9a" + "equalIndicator/v1": "e1d3d7f43fc0dfea2c1e66ebc7ac8837e578b5b1a3d802f237aa75c24dbdb03b" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WEAK WARNING" } }, { - "ruleId": "MemberVisibilityCanBePrivate", + "ruleId": "UnusedSymbol", "kind": "fail", - "level": "note", + "level": "warning", "message": { - "text": "Property 'externalLocationProviderFactories' could be private", - "markdown": "Property 'externalLocationProviderFactories' could be private" + "text": "Function \"allServices\" is never used", + "markdown": "Function \"allServices\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt", + "uri": "core/src/main/kotlin/utilities/ServiceLocator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 22, - "startColumn": 5, - "charOffset": 1085, - "charLength": 9, + "startLine": 61, + "startColumn": 9, + "charOffset": 2421, + "charLength": 11, "snippet": { - "text": "protected" + "text": "allServices" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 20, + "startLine": 59, "startColumn": 1, - "charOffset": 1013, - "charLength": 205, + "charOffset": 2406, + "charLength": 178, "snippet": { - "text": " protected val dokkaContext: DokkaContext\n) : LocationProvider {\n protected val externalLocationProviderFactories =\n dokkaContext.plugin<DokkaBase>().query { externalLocationProviderFactory }\n" + "text": " }\n\n fun allServices(category: String): List<ServiceDescriptor> {\n val entries = this.javaClass.classLoader.getResources(\"dokka/$category\")?.toList() ?: emptyList()\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.base.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "ba570312ff5b8f9d7288a668786acb8a083505cf3e796a9d6c33a94ae8280df5" + "equalIndicator/v1": "b7e725247fcf0ca53268e3e34650428c054ecd075630bceeda842db031ece3cd" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WARNING" } }, { - "ruleId": "MemberVisibilityCanBePrivate", + "ruleId": "UnusedSymbol", "kind": "fail", - "level": "note", + "level": "warning", "message": { - "text": "Property 'configuration' could be private", - "markdown": "Property 'configuration' could be private" + "text": "Function \"lookup\" is never used", + "markdown": "Function \"lookup\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/kotlin-as-java/src/test/kotlin/JvmFieldTest.kt", + "uri": "core/src/main/kotlin/utilities/ServiceLocator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 14, - "startColumn": 9, - "charOffset": 455, - "charLength": 13, + "startLine": 85, + "startColumn": 45, + "charOffset": 3736, + "charLength": 6, "snippet": { - "text": "configuration" + "text": "lookup" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 12, + "startLine": 83, "startColumn": 1, - "charOffset": 404, - "charLength": 132, + "charOffset": 3537, + "charLength": 302, "snippet": { - "text": "\nclass JvmFieldTest : BaseAbstractTest() {\n val configuration = dokkaConfiguration {\n sourceSets {\n sourceSet {" + "text": "\ninline fun <reified T : Any> ServiceLocator.lookup(category: String, implementationName: String): T = lookup(T::class.java, category, implementationName)\ninline fun <reified T : Any> ServiceLocator.lookup(desc: ServiceDescriptor): T = lookup(T::class.java, desc)\n\nprivate val ZipEntry.fileName: String" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.kotlin-as-java.test", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "40e0237c5d903a0ee7a5a92d974d972a511f20fc44495e9df0bb59a4b9d9a41d" + "equalIndicator/v1": "9851c5f9a2b89dab53ab2b88ff92204f815cff4d31380f9ac11eb08bfb8bafa0" }, "properties": { - "ideaSeverity": "INFO" + "ideaSeverity": "WARNING" } }, { - "ruleId": "IncompleteDestructuring", + "ruleId": "UnusedSymbol", "kind": "fail", "level": "warning", "message": { - "text": "Incomplete destructuring declaration", - "markdown": "Incomplete destructuring declaration" + "text": "Function \"lookup\" is never used", + "markdown": "Function \"lookup\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaCommonResolverForModuleFactory.kt", + "uri": "core/src/main/kotlin/utilities/ServiceLocator.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 104, - "startColumn": 25, - "charOffset": 5105, - "charLength": 31, + "startLine": 84, + "startColumn": 45, + "charOffset": 3582, + "charLength": 6, "snippet": { - "text": "(header, packageFragmentProtos)" + "text": "lookup" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 102, + "startLine": 82, "startColumn": 1, - "charOffset": 4992, - "charLength": 322, + "charOffset": 3535, + "charLength": 266, "snippet": { - "text": " .filter { it.version.isCompatible() }\n .map { metadata ->\n val (header, packageFragmentProtos) =\n KotlinJavascriptSerializationUtil.readModuleAsProto(metadata.body, metadata.version)\n createKotlinJavascriptPackageFragmentProvider(" + "text": "}\n\ninline fun <reified T : Any> ServiceLocator.lookup(category: String, implementationName: String): T = lookup(T::class.java, category, implementationName)\ninline fun <reified T : Any> ServiceLocator.lookup(desc: ServiceDescriptor): T = lookup(T::class.java, desc)\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.kotlin-analysis.main", + "fullyQualifiedName": "dokka.core.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "6f211874efd1486d4f952d3cfc4c8b6324ec79ef65bacd6ad7b22f47b32df917" + "equalIndicator/v1": "14d12d6a3b3ad922ff3c52d44c9c0b7c8a33903029139147b8b3fd4d929c6143" }, "properties": { "ideaSeverity": "WARNING" @@ -68642,46 +62964,46 @@ "kind": "fail", "level": "warning", "message": { - "text": "Function \"relativeTo\" is never used", - "markdown": "Function \"relativeTo\" is never used" + "text": "Property \"gfmTemplateProcessingStrategy\" is never used", + "markdown": "Property \"gfmTemplateProcessingStrategy\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/src/main/kotlin/utilities/Uri.kt", + "uri": "plugins/gfm/gfm-template-processing/src/main/kotlin/org/jetbrains/dokka/gfm/templateProcessing/GfmTemplateProcessingPlugin.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 6, + "startLine": 20, "startColumn": 9, - "charOffset": 69, - "charLength": 10, + "charOffset": 778, + "charLength": 29, "snippet": { - "text": "relativeTo" + "text": "gfmTemplateProcessingStrategy" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 4, + "startLine": 18, "startColumn": 1, - "charOffset": 59, - "charLength": 119, + "charOffset": 712, + "charLength": 229, "snippet": { - "text": "\n\nfun URI.relativeTo(uri: URI): URI {\n // Normalize paths to remove . and .. segments\n val base = uri.normalize()" + "text": " private val dokkaBase by lazy { plugin<DokkaBase>()}\n\n val gfmTemplateProcessingStrategy by extending {\n (templateProcessingPlugin.templateProcessingStrategy\n providing ::GfmTemplateProcessingStrategy" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.main", + "fullyQualifiedName": "dokka.plugins.gfm.gfm-template-processing.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "2e18575adb917ecdf8945e8f4be11571f8ef0899f27c1d84178abdc51a217721" + "equalIndicator/v1": "800d15eebc34c6af222fa70366876c9f6c7b0db7a9b8c8c4ba8d03858d8b413b" }, "properties": { "ideaSeverity": "WARNING" @@ -68692,46 +63014,46 @@ "kind": "fail", "level": "warning", "message": { - "text": "Property \"infoMessages\" is never used", - "markdown": "Property \"infoMessages\" is never used" + "text": "Class \"HIDE\" is never used", + "markdown": "Class \"HIDE\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt", + "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocTag.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 13, - "startColumn": 9, - "charOffset": 469, - "charLength": 12, + "startLine": 4, + "startColumn": 64, + "charOffset": 154, + "charLength": 4, "snippet": { - "text": "infoMessages" + "text": "HIDE" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 11, + "startLine": 2, "startColumn": 1, - "charOffset": 404, - "charLength": 183, + "charOffset": 57, + "charLength": 111, "snippet": { - "text": "\n private var _infoMessages = mutableListOf<String>()\n val infoMessages: List<String> get() = _infoMessages.toList()\n\n private var _progressMessages = mutableListOf<String>()" + "text": "\ninternal enum class JavadocTag {\n PARAM, THROWS, RETURN, AUTHOR, SEE, DEPRECATED, EXCEPTION, HIDE,\n\n /**" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.plugins.base.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "923f622560b8ab2e5183def7c724f89f84260826df8e241f35ec445e48a88f05" + "equalIndicator/v1": "389520680c92f30cb0eedcf61b6568d507c0dc25228346a656e9f16d1ba8b902" }, "properties": { "ideaSeverity": "WARNING" @@ -68742,46 +63064,46 @@ "kind": "fail", "level": "warning", "message": { - "text": "Property \"debugMessages\" is never used", - "markdown": "Property \"debugMessages\" is never used" + "text": "Property \"helpSourceSet\" is never used", + "markdown": "Property \"helpSourceSet\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt", + "uri": "runners/cli/src/main/kotlin/org/jetbrains/dokka/main.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 10, + "startLine": 108, "startColumn": 9, - "charOffset": 344, + "charOffset": 4104, "charLength": 13, "snippet": { - "text": "debugMessages" + "text": "helpSourceSet" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 8, + "startLine": 106, "startColumn": 1, - "charOffset": 278, - "charLength": 182, + "charOffset": 4074, + "charLength": 162, "snippet": { - "text": "\n private var _debugMessages = mutableListOf<String>()\n val debugMessages: List<String> get() = _debugMessages.toList()\n\n private var _infoMessages = mutableListOf<String>()" + "text": " ).delimiter(\";\")\n\n val helpSourceSet by parser.option(\n ArgTypeHelpSourceSet(_moduleName),\n description = \"Prints help for single -sourceSet\"" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.runners.cli.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "4284139e36354ab80f9238676b0fa507fe2164c073890d7cc4be7c0696aa2245" + "equalIndicator/v1": "4e82d3cd436cf0400b8da678b7528af01caa0635d959a3f26758841488c8b945" }, "properties": { "ideaSeverity": "WARNING" @@ -68792,133 +63114,133 @@ "kind": "fail", "level": "warning", "message": { - "text": "Property \"errorMessages\" is never used", - "markdown": "Property \"errorMessages\" is never used" + "text": "Function \"dependsOn\" is never used", + "markdown": "Function \"dependsOn\" is never used" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt", + "uri": "runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 22, + "startLine": 128, "startColumn": 9, - "charOffset": 851, - "charLength": 13, + "charOffset": 4398, + "charLength": 9, "snippet": { - "text": "errorMessages" + "text": "dependsOn" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 20, + "startLine": 126, "startColumn": 1, - "charOffset": 785, - "charLength": 168, + "charOffset": 4280, + "charLength": 209, "snippet": { - "text": "\n private var _errorMessages = mutableListOf<String>()\n val errorMessages: List<String> get() = _errorMessages.toList()\n\n override fun debug(message: String) {" + "text": " fun DokkaSourceSetID(sourceSetName: String): DokkaSourceSetID = sourceSetIdFactory.create(sourceSetName)\n\n fun dependsOn(sourceSet: SourceSet) {\n dependsOn(DokkaSourceSetID(sourceSet.name))\n }" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.core.test-api.main", + "fullyQualifiedName": "dokka.runners.gradle-plugin.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "fc9ca4e611a28748095ebdf51d713aa298556a5da832a52ea23856ebcff48df8" + "equalIndicator/v1": "daa793824119be5f7a35c4535775b98b57955720c4f67dc6758115cf482773fb" }, "properties": { "ideaSeverity": "WARNING" } }, { - "ruleId": "UnusedSymbol", + "ruleId": "KotlinRedundantDiagnosticSuppress", "kind": "fail", "level": "warning", "message": { - "text": "Property \"suppressedByHideTagDocumentableFilter\" is never used", - "markdown": "Property \"suppressedByHideTagDocumentableFilter\" is never used" + "text": "Redundant suppression", + "markdown": "Redundant suppression" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 10, - "startColumn": 9, - "charOffset": 323, - "charLength": 37, + "startLine": 115, + "startColumn": 20, + "charOffset": 5815, + "charLength": 11, "snippet": { - "text": "suppressedByHideTagDocumentableFilter" + "text": "DEPRECATION" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 8, + "startLine": 113, "startColumn": 1, - "charOffset": 256, - "charLength": 261, + "charOffset": 5785, + "charLength": 97, "snippet": { - "text": " private val dokkaBase by lazy { plugin<DokkaBase>() }\n\n val suppressedByHideTagDocumentableFilter by extending {\n dokkaBase.preMergeDocumentableTransformer providing ::HideTagDocumentableFilter order { before(dokkaBase.emptyPackagesFilter) }\n }" + "text": " )\n\n @Suppress(\"DEPRECATION\")\n val extensionArea = Extensions.getRootArea()\n" } } }, "logicalLocations": [ { - "fullyQualifiedName": "dokka.plugins.android-documentation.main", + "fullyQualifiedName": "dokka.kotlin-analysis.main", "kind": "module" } ] } ], "partialFingerprints": { - "equalIndicator/v1": "7c45cf2c79658466e7e29400819dbb3f3b946e31b5f1039c2eeede902453a83a" + "equalIndicator/v1": "f2f1268d6f2ea4e6acf97c9d93280cf62f64d55ef92ca137d662a642c7fa6a84" }, "properties": { "ideaSeverity": "WARNING" } }, { - "ruleId": "UnusedSymbol", + "ruleId": "KotlinRedundantDiagnosticSuppress", "kind": "fail", "level": "warning", "message": { - "text": "Class \"KotlinCliJavaFileManagerImpl\" is never used", - "markdown": "Class \"KotlinCliJavaFileManagerImpl\" is never used" + "text": "Redundant suppression", + "markdown": "Redundant suppression" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt", + "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 48, - "startColumn": 7, - "charOffset": 2288, - "charLength": 28, + "startLine": 605, + "startColumn": 24, + "charOffset": 26397, + "charLength": 11, "snippet": { - "text": "KotlinCliJavaFileManagerImpl" + "text": "DEPRECATION" }, "sourceLanguage": "kotlin" }, "contextRegion": { - "startLine": 46, + "startLine": 603, "startColumn": 1, - "charOffset": 2102, - "charLength": 444, + "charOffset": 26327, + "charLength": 141, "snippet": { - "text": "// Currently, the only relevant usage of this class as CoreJavaFileManager is at CoreJavaDirectoryService.getPackage,\n// which is indirectly invoked from PsiPackage.getSubPackages\nclass KotlinCliJavaFileManagerImpl(private val myPsiManager: PsiManager) : CoreJavaFileManager(myPsiManager), KotlinCliJavaFileManager {\n private val perfCounter = PerformanceCounter.create(\"Find Java class\")\n private lateinit var index: JvmDependenciesIndex" + "text": " disposable: Disposable\n ) {\n @Suppress(\"DEPRECATION\")\n val extensionArea = Extensions.getRootArea()\n" } } }, @@ -68931,19 +63253,15 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "dd97a0bac4528b6b1a12c082f9b4e90f1e564ea184bfd7806b7fb603c23576e8" + "equalIndicator/v1": "874dfffd584a8338943c15945b57b59200a62bdab67be5c6add90fa926fffc49" }, "properties": { "ideaSeverity": "WARNING" } } ], - "deviceId": "200820300000000-005a-73c6-f58c-38b256355e99", - "tags": [ - "qodana.sanity.results", - "qodana.promo.results", - "deviceId" - ] + "configProfile": "absent", + "deviceId": "200820300000000-005a-73c6-f58c-38b256355e99" } } ] |