aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/qodana.yml20
-rw-r--r--qodana.sarif.json24812
2 files changed, 6817 insertions, 18015 deletions
diff --git a/.github/workflows/qodana.yml b/.github/workflows/qodana.yml
index 2c1f87f4..b77719ea 100644
--- a/.github/workflows/qodana.yml
+++ b/.github/workflows/qodana.yml
@@ -6,22 +6,20 @@ on:
push:
branches:
- master
+
jobs:
inspection:
runs-on: ubuntu-latest
steps:
- - name: Checkout
- uses: actions/checkout@v3
- - name: Qodana - Code Inspection
- id: qodana
- uses: JetBrains/qodana-action@v2022.2.1
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - name: 'Qodana Scan'
+ uses: JetBrains/qodana-action@v2022.2.3
with:
args: --baseline,qodana.sarif.json,--fail-threshold,0,--linter,jetbrains/qodana-jvm
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
- clone-finder:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Qodana - Clone Finder
- uses: JetBrains/qodana-clone-finder-action@v2.0-eap
+ - uses: github/codeql-action/upload-sarif@v2
+ with:
+ sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json
diff --git a/qodana.sarif.json b/qodana.sarif.json
index 0a919343..0abbf5c9 100644
--- a/qodana.sarif.json
+++ b/qodana.sarif.json
@@ -7,7 +7,7 @@
"driver": {
"name": "QDJVM",
"fullName": "Qodana for JVM",
- "version": "213.7162.133",
+ "version": "222.4502.199",
"rules": [],
"taxa": [
{
@@ -211,13 +211,13 @@
]
},
{
- "id": "Java/Probable bugs",
- "name": "Probable bugs",
+ "id": "Kotlin/Migration",
+ "name": "Migration",
"relationships": [
{
"target": {
- "id": "Java",
- "index": 5,
+ "id": "Kotlin",
+ "index": 2,
"toolComponent": {
"name": "QDJVM"
}
@@ -229,13 +229,13 @@
]
},
{
- "id": "Spring/Spring Cloud",
- "name": "Spring Cloud",
+ "id": "Java/Probable bugs",
+ "name": "Probable bugs",
"relationships": [
{
"target": {
- "id": "Spring",
- "index": 7,
+ "id": "Java",
+ "index": 5,
"toolComponent": {
"name": "QDJVM"
}
@@ -247,8 +247,8 @@
]
},
{
- "id": "Java/Serialization issues",
- "name": "Serialization issues",
+ "id": "Java/Class structure",
+ "name": "Class structure",
"relationships": [
{
"target": {
@@ -265,8 +265,8 @@
]
},
{
- "id": "Java/Class structure",
- "name": "Class structure",
+ "id": "Java/Serialization issues",
+ "name": "Serialization issues",
"relationships": [
{
"target": {
@@ -367,8 +367,8 @@
]
},
{
- "id": "Java/Control flow issues",
- "name": "Control flow issues",
+ "id": "Java/Numeric issues",
+ "name": "Numeric issues",
"relationships": [
{
"target": {
@@ -385,8 +385,8 @@
]
},
{
- "id": "Java/Numeric issues",
- "name": "Numeric issues",
+ "id": "Java/Control flow issues",
+ "name": "Control flow issues",
"relationships": [
{
"target": {
@@ -523,6 +523,24 @@
]
},
{
+ "id": "Java/Verbose or redundant code constructs",
+ "name": "Verbose or redundant code constructs",
+ "relationships": [
+ {
+ "target": {
+ "id": "Java",
+ "index": 5,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "General",
"name": "General"
},
@@ -647,7 +665,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -773,7 +791,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -817,7 +835,7 @@
{
"target": {
"id": "Plugin DevKit",
- "index": 59,
+ "index": 60,
"toolComponent": {
"name": "QDJVM"
}
@@ -937,50 +955,10 @@
]
},
{
- "id": "Plugin DevKit/Code",
- "name": "Code",
- "relationships": [
- {
- "target": {
- "id": "Plugin DevKit",
- "index": 59,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "Java/Verbose or redundant code constructs",
- "name": "Verbose or redundant code constructs",
- "relationships": [
- {
- "target": {
- "id": "Java",
- "index": 5,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
"id": "XSLT",
"name": "XSLT"
},
{
- "id": "JUnit",
- "name": "JUnit"
- },
- {
"id": "Groovy/Style",
"name": "Style",
"relationships": [
@@ -1039,6 +1017,24 @@
]
},
{
+ "id": "Plugin DevKit/Code",
+ "name": "Code",
+ "relationships": [
+ {
+ "target": {
+ "id": "Plugin DevKit",
+ "index": 60,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "JSP",
"name": "JSP"
},
@@ -1085,7 +1081,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -1121,7 +1117,7 @@
{
"target": {
"id": "Java/Lombok",
- "index": 79,
+ "index": 78,
"toolComponent": {
"name": "QDJVM"
}
@@ -1147,7 +1143,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -1455,7 +1451,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -1473,7 +1469,7 @@
{
"target": {
"id": "Plugin DevKit",
- "index": 59,
+ "index": 60,
"toolComponent": {
"name": "QDJVM"
}
@@ -1617,31 +1613,13 @@
"name": "Oracle"
},
{
- "id": "Kotlin/Migration",
- "name": "Migration",
- "relationships": [
- {
- "target": {
- "id": "Kotlin",
- "index": 2,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
"id": "Kotlin/Migration/Maven",
"name": "Maven",
"relationships": [
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -1743,7 +1721,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -1841,7 +1819,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -1857,17 +1835,13 @@
"name": "RELAX NG"
},
{
- "id": "Application servers",
- "name": "Application servers"
- },
- {
"id": "CSS/Code quality tools",
"name": "Code quality tools",
"relationships": [
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -1907,7 +1881,7 @@
{
"target": {
"id": "Gradle",
- "index": 139,
+ "index": 136,
"toolComponent": {
"name": "QDJVM"
}
@@ -1919,8 +1893,8 @@
]
},
{
- "id": "Spring/Spring Cloud Stream",
- "name": "Spring Cloud Stream",
+ "id": "Spring/Spring Boot",
+ "name": "Spring Boot",
"relationships": [
{
"target": {
@@ -1937,8 +1911,8 @@
]
},
{
- "id": "Spring/Spring Boot",
- "name": "Spring Boot",
+ "id": "Spring/Spring Shell",
+ "name": "Spring Shell",
"relationships": [
{
"target": {
@@ -1973,6 +1947,24 @@
]
},
{
+ "id": "JVM languages/Test frameworks",
+ "name": "Test frameworks",
+ "relationships": [
+ {
+ "target": {
+ "id": "JVM languages",
+ "index": 1,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "PostgreSQL",
"name": "PostgreSQL"
},
@@ -2017,22 +2009,8 @@
]
},
{
- "id": "Kotlin/Other problems",
- "name": "Other problems",
- "relationships": [
- {
- "target": {
- "id": "Kotlin",
- "index": 2,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
+ "id": "Dependency analysis",
+ "name": "Dependency analysis"
},
{
"id": "EL",
@@ -2049,7 +2027,7 @@
{
"target": {
"id": "Java/Lombok",
- "index": 79,
+ "index": 78,
"toolComponent": {
"name": "QDJVM"
}
@@ -2085,7 +2063,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -2097,13 +2075,31 @@
]
},
{
- "id": "Spring/Spring Batch",
- "name": "Spring Batch",
+ "id": "Kotlin/Other problems",
+ "name": "Other problems",
"relationships": [
{
"target": {
- "id": "Spring",
- "index": 7,
+ "id": "Kotlin",
+ "index": 2,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "Plugin DevKit/Workspace model",
+ "name": "Workspace model",
+ "relationships": [
+ {
+ "target": {
+ "id": "Plugin DevKit",
+ "index": 60,
"toolComponent": {
"name": "QDJVM"
}
@@ -2233,7 +2229,7 @@
"extensions": [
{
"name": "org.intellij.intelliLang",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "InjectionNotApplicable",
@@ -2292,7 +2288,7 @@
{
"target": {
"id": "Pattern validation",
- "index": 107,
+ "index": 106,
"toolComponent": {
"name": "QDJVM"
}
@@ -2326,7 +2322,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -2360,7 +2356,7 @@
{
"target": {
"id": "Pattern validation",
- "index": 107,
+ "index": 106,
"toolComponent": {
"name": "QDJVM"
}
@@ -2428,7 +2424,7 @@
{
"target": {
"id": "Pattern validation",
- "index": 107,
+ "index": 106,
"toolComponent": {
"name": "QDJVM"
}
@@ -2483,7 +2479,7 @@
},
{
"name": "com.intellij.java",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "OverrideOnly",
@@ -2522,7 +2518,7 @@
{
"id": "CallToSuspiciousStringMethod",
"shortDescription": {
- "text": "Call to suspicious String method"
+ "text": "Call to suspicious 'String' method"
},
"fullDescription": {
"text": "Reports calls of: 'equals()' 'equalsIgnoreCase()' 'compareTo()' 'compareToIgnoreCase()' and 'trim()' on 'String' objects. Comparison of internationalized strings should probably use a 'java.text.Collator' instead. 'String.trim()' only removes control characters between 0x00 and 0x20. The 'String.strip()' method introduced in Java 11 is more Unicode aware and can be used as a replacement.",
@@ -2624,7 +2620,7 @@
{
"id": "UnusedReturnValue",
"shortDescription": {
- "text": "Method can be void"
+ "text": "Method can be made 'void'"
},
"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.",
@@ -2658,7 +2654,7 @@
{
"id": "UncheckedExceptionClass",
"shortDescription": {
- "text": "Unchecked exception class"
+ "text": "Unchecked 'Exception' class"
},
"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''",
@@ -2746,7 +2742,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -2758,13 +2754,13 @@
]
},
{
- "id": "ComparatorNotSerializable",
+ "id": "ClassWithOnlyPrivateConstructors",
"shortDescription": {
- "text": "Comparator class not declared Serializable"
+ "text": "Class with only 'private' constructors should be declared 'final'"
},
"fullDescription": {
- "text": "Reports classes that implement 'java.lang.Comparator', but do not implement 'java.io.Serializable'. If a non-serializable comparator is used to construct an ordered collection such as a 'java.util.TreeMap' or 'java.util.TreeSet', then the collection will also be non-serializable. This can result in unexpected and difficult-to-diagnose bugs. Since subclasses of 'java.lang.Comparator' are often stateless, simply marking them serializable is a small cost to avoid such issues. Example: 'class Foo implements Comparator { // warning\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }' After the quick-fix is applied: 'class Foo implements Comparator, Serializable { // no warning here\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }'",
- "markdown": "Reports classes that implement `java.lang.Comparator`, but do not implement `java.io.Serializable`.\n\n\nIf a non-serializable comparator is used to construct an ordered collection such\nas a `java.util.TreeMap` or `java.util.TreeSet`, then the\ncollection will also be non-serializable. This can result in unexpected and\ndifficult-to-diagnose bugs.\n\n\nSince subclasses of `java.lang.Comparator` are often stateless,\nsimply marking them serializable is a small cost to avoid such issues.\n\n**Example:**\n\n\n class Foo implements Comparator { // warning\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo implements Comparator, Serializable { // no warning here\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }\n"
+ "text": "Reports classes with only 'private' constructors. A class that only has 'private' constructors cannot be extended outside a file and should be declared as 'final'.",
+ "markdown": "Reports classes with only `private` constructors.\n\nA class that only has `private` constructors cannot be extended outside a file and should be declared as `final`."
},
"defaultConfiguration": {
"enabled": false,
@@ -2779,7 +2775,7 @@
"relationships": [
{
"target": {
- "id": "Java/Serialization issues",
+ "id": "Java/Class structure",
"index": 17,
"toolComponent": {
"name": "QDJVM"
@@ -2792,13 +2788,13 @@
]
},
{
- "id": "ClassWithOnlyPrivateConstructors",
+ "id": "ComparatorNotSerializable",
"shortDescription": {
- "text": "Class with only 'private' constructors should be declared 'final'"
+ "text": "'Comparator' class not declared 'Serializable'"
},
"fullDescription": {
- "text": "Reports classes with only 'private' constructors. A class that only has 'private' constructors cannot be extended outside a file and should be declared as 'final'.",
- "markdown": "Reports classes with only `private` constructors.\n\nA class that only has `private` constructors cannot be extended outside a file and should be declared as `final`."
+ "text": "Reports classes that implement 'java.lang.Comparator', but do not implement 'java.io.Serializable'. If a non-serializable comparator is used to construct an ordered collection such as a 'java.util.TreeMap' or 'java.util.TreeSet', then the collection will also be non-serializable. This can result in unexpected and difficult-to-diagnose bugs. Since subclasses of 'java.lang.Comparator' are often stateless, simply marking them serializable is a small cost to avoid such issues. Example: 'class Foo implements Comparator { // warning\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }' After the quick-fix is applied: 'class Foo implements Comparator, Serializable { // no warning here\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }'",
+ "markdown": "Reports classes that implement `java.lang.Comparator`, but do not implement `java.io.Serializable`.\n\n\nIf a non-serializable comparator is used to construct an ordered collection such\nas a `java.util.TreeMap` or `java.util.TreeSet`, then the\ncollection will also be non-serializable. This can result in unexpected and\ndifficult-to-diagnose bugs.\n\n\nSince subclasses of `java.lang.Comparator` are often stateless,\nsimply marking them serializable is a small cost to avoid such issues.\n\n**Example:**\n\n\n class Foo implements Comparator { // warning\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo implements Comparator, Serializable { // no warning here\n @Override\n public int compare(Object o1, Object o2) {\n /* ... */\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -2813,7 +2809,7 @@
"relationships": [
{
"target": {
- "id": "Java/Class structure",
+ "id": "Java/Serialization issues",
"index": 18,
"toolComponent": {
"name": "QDJVM"
@@ -2862,7 +2858,7 @@
{
"id": "FieldAccessedSynchronizedAndUnsynchronized",
"shortDescription": {
- "text": "Field accessed in both synchronized and unsynchronized contexts"
+ "text": "Field accessed in both 'synchronized' and unsynchronized contexts"
},
"fullDescription": {
"text": "Reports non-final fields that are accessed in both 'synchronized' and non-'synchronized' contexts. 'volatile' fields as well as accesses in constructors and initializers are ignored by this inspection. Such \"partially synchronized\" access is often the result of a coding oversight and may lead to unexpectedly inconsistent data structures. Example: 'public class Program {\n Console console; // warning: Field 'console' is accessed in both synchronized and unsynchronized contexts\n\n public synchronized void execute() {\n console.print(\"running\");\n }\n\n public void check() {\n console.check();\n }\n }'\n Use the option to specify if simple getters and setters are counted as accesses too.",
@@ -2894,19 +2890,19 @@
]
},
{
- "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",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -2915,7 +2911,7 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
+ "id": "Java/Numeric issues",
"index": 26,
"toolComponent": {
"name": "QDJVM"
@@ -2928,19 +2924,19 @@
]
},
{
- "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'. This inspection only reports if the language level of the project or module is 7 or higher. 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\nThis inspection only reports if the language level of the project or module is 7 or higher.\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",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -2949,7 +2945,7 @@
"relationships": [
{
"target": {
- "id": "Java/Numeric issues",
+ "id": "Java/Control flow issues",
"index": 27,
"toolComponent": {
"name": "QDJVM"
@@ -2984,7 +2980,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -3132,6 +3128,40 @@
]
},
{
+ "id": "DoubleNegation",
+ "shortDescription": {
+ "text": "Double negation"
+ },
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Control flow issues",
+ "index": 27,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "AssertionCanBeIf",
"shortDescription": {
"text": "Assertion can be replaced with 'if' statement"
@@ -3154,7 +3184,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -3166,16 +3196,16 @@
]
},
{
- "id": "DoubleNegation",
+ "id": "PackageWithTooFewClasses",
"shortDescription": {
- "text": "Double negation"
+ "text": "Package with too few classes"
},
"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 packages that contain fewer classes than the specified minimum. Packages which contain subpackages are not reported. Overly small packages may indicate a fragmented design. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Minimum number of classes field to specify the minimum allowed number of classes in a package.",
+ "markdown": "Reports packages that contain fewer classes than the specified minimum.\n\nPackages which contain subpackages are not reported. Overly small packages may indicate a fragmented design.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor.\n\nUse the **Minimum number of classes** field to specify the minimum allowed number of classes in a package."
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -3187,8 +3217,8 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
- "index": 26,
+ "id": "Java/Packaging issues",
+ "index": 36,
"toolComponent": {
"name": "QDJVM"
}
@@ -3200,16 +3230,16 @@
]
},
{
- "id": "PackageWithTooFewClasses",
+ "id": "ReplaceOnLiteralHasNoEffect",
"shortDescription": {
- "text": "Package with too few classes"
+ "text": "Replacement operation has no effect"
},
"fullDescription": {
- "text": "Reports packages that contain fewer classes than the specified minimum. Packages which contain subpackages are not reported. Overly small packages may indicate a fragmented design. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Minimum number of classes field to specify the minimum allowed number of classes in a package.",
- "markdown": "Reports packages that contain fewer classes than the specified minimum.\n\nPackages which contain subpackages are not reported. Overly small packages may indicate a fragmented design.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor.\n\nUse the **Minimum number of classes** field to specify the minimum allowed number of classes in a package."
+ "text": "Reports calls to the 'String' methods 'replace()', 'replaceAll()' or 'replaceFirst()' that have no effect. Such calls can be guaranteed to have no effect when the qualifier and search string are compile-time constants and the search string is not found in the qualifier. This is redundant and may indicate an error. Example: '// replacement does nothing\n \"hello\".replace(\"$value$\", value);' New in 2022.1",
+ "markdown": "Reports calls to the `String` methods `replace()`, `replaceAll()` or `replaceFirst()` that have no effect. Such calls can be guaranteed to have no effect when the qualifier and search string are compile-time constants and the search string is not found in the qualifier. This is redundant and may indicate an error.\n\n**Example:**\n\n\n // replacement does nothing\n \"hello\".replace(\"$value$\", value);\n\nNew in 2022.1"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -3221,8 +3251,8 @@
"relationships": [
{
"target": {
- "id": "Java/Packaging issues",
- "index": 36,
+ "id": "Java/Verbose or redundant code constructs",
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -3290,7 +3320,7 @@