aboutsummaryrefslogtreecommitdiff
path: root/qodana.sarif.json
diff options
context:
space:
mode:
Diffstat (limited to 'qodana.sarif.json')
-rw-r--r--qodana.sarif.json24812
1 files changed, 6808 insertions, 18004 deletions
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 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -3304,7 +3334,7 @@
{
"id": "SystemOutErr",
"shortDescription": {
- "text": "Use of System.out or System.err"
+ "text": "Use of 'System.out' or 'System.err'"
},
"fullDescription": {
"text": "Reports usages of 'System.out' or 'System.err'. Such statements are often used for temporary debugging and should be either removed from the production code, or replaced by a more robust logging facility.",
@@ -3324,7 +3354,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -3392,7 +3422,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -3426,7 +3456,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -3460,7 +3490,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -3528,7 +3558,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -3562,7 +3592,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -3596,7 +3626,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -3630,7 +3660,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -3698,7 +3728,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -3712,7 +3742,7 @@
{
"id": "TestCaseInProductCode",
"shortDescription": {
- "text": "JUnit TestCase in product source"
+ "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.",
@@ -3732,7 +3762,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -3766,7 +3796,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -3783,8 +3813,8 @@
"text": "'finalize()' should be protected, not public"
},
"fullDescription": {
- "text": "Reports any implementations of the 'Object.finalize()' method that are declared 'public'. According to the contract of the 'Object.finalize()', only the garbage collector calls this method. Making this method public may be confusing, because it means that the method can be used by users. The quick-fix makes the method protected to prevent it from being explicitly invoked by other classes. Example: 'class X {\n public void finalize() {\n /* ... */\n }\n }' After the quick-fix is applied: 'class X {\n protected void finalize() {\n /* ... */\n }\n }'",
- "markdown": "Reports any implementations of the `Object.finalize()` method that are declared `public`.\n\n\nAccording to the contract of the `Object.finalize()`, only the garbage\ncollector calls this method. Making this method public may be confusing, because it\nmeans that the method can be used by users.\n\n\nThe quick-fix makes the method protected to prevent it from being explicitly invoked\nby other classes.\n\n**Example:**\n\n\n class X {\n public void finalize() {\n /* ... */\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class X {\n protected void finalize() {\n /* ... */\n }\n }\n"
+ "text": "Reports any implementations of the 'Object.finalize()' method that are declared 'public'. According to the contract of the 'Object.finalize()', only the garbage collector calls this method. Making this method public may be confusing, because it means that the method can be used from other code. A quick-fix is provided to make the method 'protected', to prevent it from being invoked from other classes. Example: 'class X {\n public void finalize() {\n /* ... */\n }\n }' After the quick-fix is applied: 'class X {\n protected void finalize() {\n /* ... */\n }\n }'",
+ "markdown": "Reports any implementations of the `Object.finalize()` method that are declared `public`.\n\n\nAccording to the contract of the `Object.finalize()`, only the garbage\ncollector calls this method. Making this method public may be confusing, because it\nmeans that the method can be used from other code.\n\n\nA quick-fix is provided to make the method `protected`, to prevent it from being invoked\nfrom other classes.\n\n**Example:**\n\n\n class X {\n public void finalize() {\n /* ... */\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class X {\n protected void finalize() {\n /* ... */\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -3800,7 +3830,7 @@
{
"target": {
"id": "Java/Finalization",
- "index": 50,
+ "index": 51,
"toolComponent": {
"name": "QDJVM"
}
@@ -3834,7 +3864,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -3868,7 +3898,7 @@
{
"target": {
"id": "Java/Modularization issues",
- "index": 52,
+ "index": 53,
"toolComponent": {
"name": "QDJVM"
}
@@ -3902,7 +3932,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -3936,7 +3966,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -4004,7 +4034,7 @@
{
"target": {
"id": "Java/Naming conventions/Class",
- "index": 56,
+ "index": 57,
"toolComponent": {
"name": "QDJVM"
}
@@ -4086,7 +4116,7 @@
{
"id": "UnnecessaryTemporaryOnConversionFromString",
"shortDescription": {
- "text": "Unnecessary temporary object in conversion from String"
+ "text": "Unnecessary temporary object in conversion from 'String'"
},
"fullDescription": {
"text": "Reports unnecessary creation of temporary objects when converting from 'String' to primitive types. Example: 'new Integer(\"3\").intValue()' After the quick-fix is applied: 'Integer.valueOf(\"3\")'",
@@ -4140,7 +4170,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -4186,6 +4216,40 @@
]
},
{
+ "id": "IOStreamConstructor",
+ "shortDescription": {
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Performance",
+ "index": 10,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "AssignmentToForLoopParameter",
"shortDescription": {
"text": "Assignment to 'for' loop parameter"
@@ -4208,7 +4272,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -4242,7 +4306,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 9",
- "index": 63,
+ "index": 64,
"toolComponent": {
"name": "QDJVM"
}
@@ -4276,7 +4340,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -4310,7 +4374,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -4378,7 +4442,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -4412,7 +4476,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -4460,7 +4524,7 @@
{
"id": "SuspiciousInvocationHandlerImplementation",
"shortDescription": {
- "text": "Suspicious InvocationHandler implementation"
+ "text": "Suspicious 'InvocationHandler' implementation"
},
"fullDescription": {
"text": "Reports implementations of 'InvocationHandler' that do not proxy standard 'Object' methods like 'hashCode()', 'equals()', and 'toString()'. Failing to handle these methods might cause unexpected problems upon calling them on a proxy instance. Example: 'InvocationHandler myHandler = (proxy, method, params) -> {\n System.out.println(\"Hello World!\");\n return null;\n };\n Runnable myProxy = (Runnable) Proxy.newProxyInstance(\n Thread.currentThread().getContextClassLoader(),\n new Class[] {Runnable.class}, myHandler\n );' This code snippet is designed to only proxy the 'Runnable.run()' method. However, calls to any 'Object' methods, like 'hashCode()', are proxied as well. This can lead to problems like a 'NullPointerException', for example, when adding 'myProxy' to a 'HashSet'. New in 2020.2",
@@ -4480,7 +4544,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -4494,7 +4558,7 @@
{
"id": "HtmlTagCanBeJavadocTag",
"shortDescription": {
- "text": "<code>...</code> can be replaced with {@code ...}"
+ "text": "'<code>...</code>' can be replaced with '{@code ...}'"
},
"fullDescription": {
"text": "Reports usages of '<code>' tags in Javadoc comments. Since Java 5, these tags can be replaced with '{@code ...}' constructs. This allows using angle brackets '<' and '>' inside the comment instead of HTML character entities. Example: '/**\n * @return empty <code>ArrayList&lt;Integer&gt;</code>\n */\n List<Integer> getList(){ ... }' After the quick-fix is applied: '/**\n * @return empty {@code ArrayList<Integer>}\n */\n List<Integer> getList(){ ... }'",
@@ -4514,7 +4578,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -4528,7 +4592,7 @@
{
"id": "ClassEscapesItsScope",
"shortDescription": {
- "text": "Non-accessible 'class' is exposed"
+ "text": "Non-accessible class is exposed"
},
"fullDescription": {
"text": "Reports usages of classes in a field or method signature when a class in a signature is less visible than the member itself. While legal Java, such members are useless outside of the visibility scope. Example: 'public' method which returns a 'private' inner 'class'. 'protected' field whose type is a package-local 'class'. In Java 9, a module may hide some of its classes by excluding their packages from export. So, if the signature of exported API contains a non-exported class, such an API is useless outside of the module. Configure the inspection: Use the Module's API exposes not exported classes (Java 9+) option to report about the module API that exposes unexported classes. Note that the option works if the language level of the project or module is 9 or higher. Use the Public API exposes non-accessible classes option to report about a public API that exposes non-accessible classes. Use the Package-local API exposes private classes option to report about package-local API that exposes 'private' classes.",
@@ -4548,7 +4612,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -4582,7 +4646,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -4616,7 +4680,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -4633,8 +4697,8 @@
"text": "Auto-unboxing"
},
"fullDescription": {
- "text": "Reports expressions that are affected by unboxing conversion (automatic unwrapping of objects into primitive values). Try not to use objects instead of primitives. It might significantly affect the performance. Example: 'int x = new Integer(42);' The quick-fix makes the conversion explicit: 'int x = new Integer(42).intValue();' Autoboxing conversion is not supported in Java 1.4 and earlier JVM.",
- "markdown": "Reports expressions that are affected by unboxing conversion (automatic unwrapping of objects into primitive values). Try not to use objects instead of primitives. It might significantly affect the performance.\n\n**Example:**\n\n int x = new Integer(42);\n\nThe quick-fix makes the conversion explicit:\n\n int x = new Integer(42).intValue();\n\nAutoboxing conversion is not supported in Java 1.4 and earlier JVM."
+ "text": "Reports expressions that are affected by unboxing conversion (automatic unwrapping of objects into primitive values). Try not to use objects instead of primitives. It might significantly affect the performance. Example: 'int x = new Integer(42);' The quick-fix makes the conversion explicit: 'int x = new Integer(42).intValue();' AutoUnboxing appeared in Java 5. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports expressions that are affected by unboxing conversion (automatic unwrapping of objects into primitive values). Try not to use objects instead of primitives. It might significantly affect the performance.\n\n**Example:**\n\n int x = new Integer(42);\n\nThe quick-fix makes the conversion explicit:\n\n int x = new Integer(42).intValue();\n\n\n*AutoUnboxing* appeared in Java 5.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -4664,7 +4728,7 @@
{
"id": "NonFinalFieldInImmutable",
"shortDescription": {
- "text": "Non-final field in @Immutable class"
+ "text": "Non-final field in '@Immutable' class"
},
"fullDescription": {
"text": "Reports any non-final field in a class with the '@Immutable' annotation. This violates the contract of the '@Immutable' annotation. Example: 'import javax.annotation.concurrent.Immutable;\n @Immutable\n class Foo {\n String bar = \"foo\";\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'",
@@ -4684,7 +4748,7 @@
{
"target": {
"id": "Java/Concurrency annotation issues",
- "index": 77,
+ "index": 76,
"toolComponent": {
"name": "QDJVM"
}
@@ -4718,7 +4782,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -4786,7 +4850,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -4820,7 +4884,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -4854,7 +4918,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -4888,7 +4952,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -4922,7 +4986,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -4956,7 +5020,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -4990,7 +5054,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -5036,13 +5100,13 @@
]
},
{
- "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,
@@ -5057,8 +5121,8 @@
"relationships": [
{
"target": {
- "id": "Java/Class structure",
- "index": 18,
+ "id": "Java/Control flow issues",
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -5070,13 +5134,13 @@
]
},
{
- "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,
@@ -5091,8 +5155,8 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
- "index": 26,
+ "id": "Java/Class structure",
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -5126,7 +5190,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -5194,7 +5258,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -5262,7 +5326,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -5296,7 +5360,7 @@
{
"target": {
"id": "Java/Cloning issues",
- "index": 87,
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -5330,7 +5394,7 @@
{
"target": {
"id": "Manifest",
- "index": 88,
+ "index": 87,
"toolComponent": {
"name": "QDJVM"
}
@@ -5398,7 +5462,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -5432,7 +5496,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -5500,7 +5564,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -5534,7 +5598,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -5568,7 +5632,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -5636,7 +5700,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -5670,7 +5734,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -5772,7 +5836,7 @@
{
"target": {
"id": "Java/Modularization issues",
- "index": 52,
+ "index": 53,
"toolComponent": {
"name": "QDJVM"
}
@@ -5818,13 +5882,13 @@
]
},
{
- "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,
@@ -5839,8 +5903,8 @@
"relationships": [
{
"target": {
- "id": "Java/Cloning issues",
- "index": 87,
+ "id": "Java/Abstraction issues",
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -5852,13 +5916,13 @@
]
},
{
- "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,
@@ -5873,8 +5937,8 @@
"relationships": [
{
"target": {
- "id": "Java/Abstraction issues",
- "index": 61,
+ "id": "Java/Cloning issues",
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -5908,7 +5972,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -5942,7 +6006,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -6010,7 +6074,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -6044,7 +6108,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -6112,7 +6176,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -6146,7 +6210,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -6180,7 +6244,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -6248,7 +6312,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -6282,7 +6346,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -6316,7 +6380,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -6350,7 +6414,7 @@
{
"target": {
"id": "Java/Test frameworks",
- "index": 98,
+ "index": 97,
"toolComponent": {
"name": "QDJVM"
}
@@ -6418,7 +6482,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -6452,7 +6516,7 @@
{
"target": {
"id": "Java/Reflective access",
- "index": 99,
+ "index": 98,
"toolComponent": {
"name": "QDJVM"
}
@@ -6520,7 +6584,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -6588,41 +6652,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "StaticSuite",
- "shortDescription": {
- "text": "'suite()' method not declared 'static'"
- },
- "fullDescription": {
- "text": "Reports JUnit test case classes with 'suite()' methods which aren't declared as 'static'.",
- "markdown": "Reports JUnit test case classes with `suite()` methods which aren't declared as `static`."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -6690,7 +6720,7 @@
{
"target": {
"id": "Java/Reflective access",
- "index": 99,
+ "index": 98,
"toolComponent": {
"name": "QDJVM"
}
@@ -6738,7 +6768,7 @@
{
"id": "CanBeFinal",
"shortDescription": {
- "text": "Declaration can have final modifier"
+ "text": "Declaration can have 'final' modifier"
},
"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.",
@@ -6792,7 +6822,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -6860,7 +6890,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -6974,13 +7004,13 @@
]
},
{
- "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,
@@ -6995,8 +7025,8 @@
"relationships": [
{
"target": {
- "id": "Java/Security",
- "index": 31,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -7008,13 +7038,13 @@
]
},
{
- "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,
@@ -7029,8 +7059,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Security",
+ "index": 31,
"toolComponent": {
"name": "QDJVM"
}
@@ -7098,7 +7128,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -7200,7 +7230,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -7234,7 +7264,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -7302,7 +7332,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -7350,7 +7380,7 @@
{
"id": "NonSerializableFieldInSerializableClass",
"shortDescription": {
- "text": "Non-serializable field in a Serializable class"
+ "text": "Non-serializable field in a 'Serializable' class"
},
"fullDescription": {
"text": "Reports non-serializable fields in classes that implement 'java.io.Serializable'. Such fields will result in runtime exceptions if the object is serialized. Fields declared 'transient' or 'static' are not reported, nor are fields of classes that have a 'writeObject' method defined. This inspection assumes fields of the types 'java.util.Collection' and 'java.util.Map' to be 'Serializable', unless the types they are declared in are non-'Serializable'. Example: 'class NonSerializableClass {}\n\n public class SerializableClass implements Serializable {\n NonSerializableClass clazz; // warning: Non-serializable field 'clazz' in a Serializable class\n static NonSerializableClass staticClazz; // no warnings\n }'\n Use the following options to configure the inspection: List classes whose inheritors should not be reported by this inspection. This is meant for classes that inherit 'Serializable' from a superclass but are not intended for serialization. List annotations that will make the inspection ignore the annotated fields. Whether to ignore fields initialized with an anonymous class.",
@@ -7370,7 +7400,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -7387,8 +7417,8 @@
"text": "Statement can be replaced with enhanced 'switch'"
},
"fullDescription": {
- "text": "Reports 'switch' statements that can be automatically replaced with enhanced 'switch' statements or expressions. Example: 'double getPrice(String fruit) {\n // Switch statement can be replaced with enhanced 'switch'\n switch (fruit) {\n case \"Apple\":\n return 1.0;\n case \"Orange\":\n return 1.5;\n case \"Mango\":\n return 2.0;\n default:\n throw new IllegalArgumentException();\n }\n }' After the quick-fix is applied: 'double getPrice(String fruit) {\n return switch (fruit) {\n case \"Apple\" -> 1.0;\n case \"Orange\" -> 1.5;\n case \"Mango\" -> 2.0;\n default -> throw new IllegalArgumentException();\n };\n }' This inspection only applies to language level 14 or higher New in 2019.1",
- "markdown": "Reports `switch` statements that can be automatically replaced with enhanced `switch` statements or expressions.\n\n**Example:**\n\n\n double getPrice(String fruit) {\n // Switch statement can be replaced with enhanced 'switch'\n switch (fruit) {\n case \"Apple\":\n return 1.0;\n case \"Orange\":\n return 1.5;\n case \"Mango\":\n return 2.0;\n default:\n throw new IllegalArgumentException();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n double getPrice(String fruit) {\n return switch (fruit) {\n case \"Apple\" -> 1.0;\n case \"Orange\" -> 1.5;\n case \"Mango\" -> 2.0;\n default -> throw new IllegalArgumentException();\n };\n }\n \nThis inspection only applies to language level 14 or higher\n\nNew in 2019.1"
+ "text": "Reports 'switch' statements that can be automatically replaced with enhanced 'switch' statements or expressions. Example: 'double getPrice(String fruit) {\n // Switch statement can be replaced with enhanced 'switch'\n switch (fruit) {\n case \"Apple\":\n return 1.0;\n case \"Orange\":\n return 1.5;\n case \"Mango\":\n return 2.0;\n default:\n throw new IllegalArgumentException();\n }\n }' After the quick-fix is applied: 'double getPrice(String fruit) {\n return switch (fruit) {\n case \"Apple\" -> 1.0;\n case \"Orange\" -> 1.5;\n case \"Mango\" -> 2.0;\n default -> throw new IllegalArgumentException();\n };\n }' This inspection only reports if the language level of the project or module is 14 or higher New in 2019.1",
+ "markdown": "Reports `switch` statements that can be automatically replaced with enhanced `switch` statements or expressions.\n\n**Example:**\n\n\n double getPrice(String fruit) {\n // Switch statement can be replaced with enhanced 'switch'\n switch (fruit) {\n case \"Apple\":\n return 1.0;\n case \"Orange\":\n return 1.5;\n case \"Mango\":\n return 2.0;\n default:\n throw new IllegalArgumentException();\n }\n }\n\nAfter the quick-fix is applied:\n\n\n double getPrice(String fruit) {\n return switch (fruit) {\n case \"Apple\" -> 1.0;\n case \"Orange\" -> 1.5;\n case \"Mango\" -> 2.0;\n default -> throw new IllegalArgumentException();\n };\n }\n \nThis inspection only reports if the language level of the project or module is 14 or higher\n\nNew in 2019.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -7404,7 +7434,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 14",
- "index": 103,
+ "index": 102,
"toolComponent": {
"name": "QDJVM"
}
@@ -7438,7 +7468,7 @@
{
"target": {
"id": "Java/Numeric issues/Cast",
- "index": 104,
+ "index": 103,
"toolComponent": {
"name": "QDJVM"
}
@@ -7472,7 +7502,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -7506,7 +7536,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -7540,7 +7570,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -7574,7 +7604,7 @@
{
"target": {
"id": "Java/Cloning issues",
- "index": 87,
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -7608,7 +7638,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -7642,7 +7672,7 @@
{
"target": {
"id": "Java/Numeric issues/Cast",
- "index": 104,
+ "index": 103,
"toolComponent": {
"name": "QDJVM"
}
@@ -7676,7 +7706,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -7710,7 +7740,7 @@
{
"target": {
"id": "Java/JavaBeans issues",
- "index": 106,
+ "index": 105,
"toolComponent": {
"name": "QDJVM"
}
@@ -7744,7 +7774,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -7778,7 +7808,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -7858,13 +7888,13 @@
]
},
{
- "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,
@@ -7879,8 +7909,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Dependency issues",
+ "index": 108,
"toolComponent": {
"name": "QDJVM"
}
@@ -7892,13 +7922,13 @@
]
},
{
- "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,
@@ -7913,8 +7943,8 @@
"relationships": [
{
"target": {
- "id": "Java/Dependency issues",
- "index": 109,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -7926,16 +7956,16 @@
]
},
{
- "id": "ExplicitArrayFilling",
+ "id": "LoopWithImplicitTerminationCondition",
"shortDescription": {
- "text": "Explicit array filling"
+ "text": "Loop with implicit termination condition"
},
"fullDescription": {
- "text": "Reports loops that can be replaced with 'Arrays.setAll()' or 'Arrays.fill()' calls. This inspection suggests replacing loops with 'Arrays.setAll()' if the language level of the project or module is 8 or higher. Replacing loops with 'Arrays.fill()' is possible with any language level. Example: 'for (int i=0; i<array.length; i++) {\n array[i] = calc(i);\n }' After the quick-fix is applied: 'Arrays.setAll(array, this::calc);' New in 2017.1",
- "markdown": "Reports loops that can be replaced with `Arrays.setAll()` or `Arrays.fill()` calls.\n\nThis inspection suggests replacing loops with `Arrays.setAll()` if the language level of the project or module is 8 or higher.\nReplacing loops with `Arrays.fill()` is possible with any language level.\n\nExample:\n\n\n for (int i=0; i<array.length; i++) {\n array[i] = calc(i);\n }\n\nAfter the quick-fix is applied:\n\n\n Arrays.setAll(array, this::calc);\n\nNew in 2017.1"
+ "text": "Reports any 'while', 'do-while', and 'for' loops that have the 'true' constant as their only condition. At the same time, such loops can be still terminated by a containing 'if' statement which can break out of the loop. Such an 'if' statement must be the first or the only statement in a 'while' or 'for' loop and the last or the only statement in a 'do-while' loop. Removing the 'if' statement and making its condition an explicit loop condition simplifies the loop.",
+ "markdown": "Reports any `while`, `do-while`, and `for` loops that have the `true` constant as their only condition. At the same time, such loops can be still terminated by a containing `if` statement which can break out of the loop.\n\nSuch an `if` statement must be the first or the only statement\nin a `while` or `for`\nloop and the last or the only statement in a `do-while` loop.\n\nRemoving the `if` statement and making its condition an explicit\nloop condition simplifies the loop."
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -7947,8 +7977,8 @@
"relationships": [
{
"target": {
- "id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "id": "Java/Control flow issues",
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -7960,16 +7990,16 @@
]
},
{
- "id": "LoopWithImplicitTerminationCondition",
+ "id": "ExplicitArrayFilling",
"shortDescription": {
- "text": "Loop with implicit termination condition"
+ "text": "Explicit array filling"
},
"fullDescription": {
- "text": "Reports any 'while', 'do-while', and 'for' loops that have the 'true' constant as their only condition. At the same time, such loops can be still terminated by a containing 'if' statement which can break out of the loop. Such an 'if' statement must be the first or the only statement in a 'while' or 'for' loop and the last or the only statement in a 'do-while' loop. Removing the 'if' statement and making its condition an explicit loop condition simplifies the loop.",
- "markdown": "Reports any `while`, `do-while`, and `for` loops that have the `true` constant as their only condition. At the same time, such loops can be still terminated by a containing `if` statement which can break out of the loop.\n\nSuch an `if` statement must be the first or the only statement\nin a `while` or `for`\nloop and the last or the only statement in a `do-while` loop.\n\nRemoving the `if` statement and making its condition an explicit\nloop condition simplifies the loop."
+ "text": "Reports loops that can be replaced with 'Arrays.setAll()' or 'Arrays.fill()' calls. This inspection suggests replacing loops with 'Arrays.setAll()' if the language level of the project or module is 8 or higher. Replacing loops with 'Arrays.fill()' is possible with any language level. Example: 'for (int i=0; i<array.length; i++) {\n array[i] = calc(i);\n }' After the quick-fix is applied: 'Arrays.setAll(array, this::calc);' New in 2017.1",
+ "markdown": "Reports loops that can be replaced with `Arrays.setAll()` or `Arrays.fill()` calls.\n\nThis inspection suggests replacing loops with `Arrays.setAll()` if the language level of the project or module is 8 or higher.\nReplacing loops with `Arrays.fill()` is possible with any language level.\n\nExample:\n\n\n for (int i=0; i<array.length; i++) {\n array[i] = calc(i);\n }\n\nAfter the quick-fix is applied:\n\n\n Arrays.setAll(array, this::calc);\n\nNew in 2017.1"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -7981,8 +8011,8 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
- "index": 26,
+ "id": "Java/Verbose or redundant code constructs",
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -8030,7 +8060,7 @@
{
"id": "IntegerMultiplicationImplicitCastToLong",
"shortDescription": {
- "text": "Integer multiplication or shift implicitly cast to long"
+ "text": "Integer multiplication or shift implicitly cast to 'long'"
},
"fullDescription": {
"text": "Reports integer multiplications and left shifts that are implicitly cast to long. Example: 'void f(int i) {\n long val = 65536 * i;\n }' After the quick-fix is applied, the code changes to: 'void x(int i) {\n long val = 65536L * i;\n }' Example: 'void f(int i) {\n long value = i << 24;\n }' After the quick-fix is applied, the code changes to: 'void f(int i) {\n long value = (long) i << 24;\n }' Such multiplications are often a mistake, as overflow truncation may occur unexpectedly. Converting an 'int' literal to a 'long' literal ('65536L') fixes the problem.",
@@ -8050,41 +8080,7 @@
{
"target": {
"id": "Java/Numeric issues/Cast",
- "index": 104,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "JUnitRule",
- "shortDescription": {
- "text": "Malformed @Rule/@ClassRule field"
- },
- "fullDescription": {
- "text": "Reports malformed '@Rule' or '@ClassRule' annotation usages. Tests with malformed rules cannot be run. A '@Rule' annotated member must be 'public' and a subtype of 'org.junit.rules.TestRule' or 'org.junit.rules.MethodRule' A '@ClassRule' annotated member must be 'public' and 'static' and a subtype of 'org.junit.rules.TestRule' For example: 'public class MomentousTest {\n @Rule\n private final TemporaryFolder tempFolder =\n new TemporaryFolder();\n\n // ... tests go here\n }' A quick fix is provided to fix the modifiers: 'public class MomentousTest {\n @Rule\n public final TemporaryFolder tempFolder =\n new TemporaryFolder();\n\n // ... tests go here\n }'",
- "markdown": "Reports malformed `@Rule` or `@ClassRule` annotation usages. Tests with malformed [rules](https://github.com/junit-team/junit4/wiki/Rules) cannot be run.\n\n* A `@Rule` annotated member must be `public` and a subtype of `org.junit.rules.TestRule` or `org.junit.rules.MethodRule`\n* A `@ClassRule` annotated member must be `public` and `static` and a subtype of `org.junit.rules.TestRule`\n\nFor example:\n\n\n public class MomentousTest {\n @Rule\n private final TemporaryFolder tempFolder =\n new TemporaryFolder();\n\n // ... tests go here\n }\n\nA quick fix is provided to fix the modifiers:\n\n\n public class MomentousTest {\n @Rule\n public final TemporaryFolder tempFolder =\n new TemporaryFolder();\n\n // ... tests go here\n }\n"
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "JVM languages",
- "index": 1,
+ "index": 103,
"toolComponent": {
"name": "QDJVM"
}
@@ -8118,7 +8114,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -8220,7 +8216,7 @@
{
"target": {
"id": "Java/Java language level issues",
- "index": 110,
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -8288,7 +8284,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -8300,13 +8296,13 @@
]
},
{
- "id": "TypeParameterExtendsFinalClass",
+ "id": "JavadocBlankLines",
"shortDescription": {
- "text": "Type parameter extends final class"
+ "text": "Blank line should be replaced with <p> to break lines"
},
"fullDescription": {
- "text": "Reports type parameters declared to extend a 'final' class. Suggests replacing the type parameter with the type of the specified'final' class since 'final' classes cannot be extended. Example: 'void foo() {\n List<? extends Integer> list; // Warning: the Integer class is a final class\n }' After the quick-fix is applied: 'void foo() {\n List<Integer> list;\n }'",
- "markdown": "Reports type parameters declared to extend a `final` class.\n\nSuggests replacing the type parameter with the type of the specified`final` class since\n`final` classes cannot be extended.\n\n**Example:**\n\n\n void foo() {\n List<? extends Integer> list; // Warning: the Integer class is a final class\n }\n\nAfter the quick-fix is applied:\n\n\n void foo() {\n List<Integer> list;\n }\n"
+ "text": "Reports blank lines in Javadoc comments. Blank lines in Javadoc may signal an intention split the text to different paragraphs. However, the Javadoc tool and IntelliJ IDEA will ignore them when rendering documentation comments. The quick-fix suggests to replace the blank line with a paragraph tag (<p>). Example: 'class Main {\n /**\n * Doesn't do anything.\n *\n * Does absolutely nothing\n */\n void foo() {}\n }' After the quick-fix is applied: 'class Main {\n /**\n * Doesn't do anything.\n * <p>\n * Does absolutely nothing\n */\n void foo() {}\n }' New in 2022.1",
+ "markdown": "Reports blank lines in Javadoc comments.\n\n\nBlank lines in Javadoc may signal an intention split the text to different paragraphs. However, the Javadoc tool and IntelliJ IDEA will\nignore them when rendering documentation comments.\n\n\nThe quick-fix suggests to replace the blank line with a paragraph tag (\\<p\\>).\n\n**Example:**\n\n\n class Main {\n /**\n * Doesn't do anything.\n *\n * Does absolutely nothing\n */\n void foo() {}\n }\n\nAfter the quick-fix is applied:\n\n\n class Main {\n /**\n * Doesn't do anything.\n * <p>\n * Does absolutely nothing\n */\n void foo() {}\n }\n\nNew in 2022.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -8321,8 +8317,8 @@
"relationships": [
{
"target": {
- "id": "Java/Inheritance issues",
- "index": 114,
+ "id": "Java/Javadoc",
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -8356,7 +8352,41 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeParameterExtendsFinalClass",
+ "shortDescription": {
+ "text": "Type parameter extends 'final' class"
+ },
+ "fullDescription": {
+ "text": "Reports type parameters declared to extend a 'final' class. Suggests replacing the type parameter with the type of the specified'final' class since 'final' classes cannot be extended. Example: 'void foo() {\n List<? extends Integer> list; // Warning: the Integer class is a final class\n }' After the quick-fix is applied: 'void foo() {\n List<Integer> list;\n }'",
+ "markdown": "Reports type parameters declared to extend a `final` class.\n\nSuggests replacing the type parameter with the type of the specified`final` class since\n`final` classes cannot be extended.\n\n**Example:**\n\n\n void foo() {\n List<? extends Integer> list; // Warning: the Integer class is a final class\n }\n\nAfter the quick-fix is applied:\n\n\n void foo() {\n List<Integer> list;\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Inheritance issues",
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -8373,8 +8403,8 @@
"text": "Redundant 'if' statement"
},
"fullDescription": {
- "text": "Reports 'if' statements that can be simplified to a single assignment, 'return', or 'assert' statement. Example: 'if (foo()) {\n return true;\n } else {\n return false;\n }' After the quick-fix is applied: 'return foo();' Configure the inspection: Use the Ignore chained 'if' statements option if want to hide a warning for chained 'if' statements. For example, in the following code the warning will be hidden, but the quick-fix will still be available: 'if (condition1) return true;\n if (condition2) return false;\n return true;' Use the Ignore 'assert' statements option if want to hide a warning for 'if' statements containing only 'assert' statement in their bodies. For example, in the following code the warning will be hidden: 'if (isTrue()) assert false;'",
- "markdown": "Reports `if` statements that can be simplified to a single assignment, `return`, or `assert` statement.\n\nExample:\n\n\n if (foo()) {\n return true;\n } else {\n return false;\n }\n\nAfter the quick-fix is applied:\n\n\n return foo();\n\nConfigure the inspection:\n\nUse the **Ignore chained 'if' statements** option if want to hide a warning for chained `if` statements.\n\nFor example, in the following code the warning will be hidden, but the quick-fix will still be available:\n\n\n if (condition1) return true;\n if (condition2) return false;\n return true;\n\nUse the **Ignore 'assert' statements** option if want to hide a warning for `if` statements\ncontaining only `assert` statement in their bodies.\n\nFor example, in the following code the warning will be hidden:\n\n\n if (isTrue()) assert false;\n"
+ "text": "Reports 'if' statements that can be simplified to a single assignment, 'return', or 'assert' statement. Example: 'if (foo()) {\n return true;\n } else {\n return false;\n }' After the quick-fix is applied: 'return foo();' Configure the inspection: Use the Ignore chained 'if' statements option if want to hide a warning for chained 'if' statements. For example, in the following code the warning will be hidden, but the quick-fix will still be available: 'if (condition1) return true;\n if (condition2) return false;\n return true;' Note that replacing 'if (isTrue()) assert false;' with 'assert isTrue();' may change the program semantics when asserts are disabled if condition has side effects. Use the Ignore 'if' statements with trivial 'assert' option if you want to hide a warning for 'if' statements containing only 'assert' statement in their bodies.",
+ "markdown": "Reports `if` statements that can be simplified to a single assignment, `return`, or `assert` statement.\n\nExample:\n\n\n if (foo()) {\n return true;\n } else {\n return false;\n }\n\nAfter the quick-fix is applied:\n\n\n return foo();\n\nConfigure the inspection:\n\nUse the **Ignore chained 'if' statements** option if want to hide a warning for chained `if` statements.\n\nFor example, in the following code the warning will be hidden, but the quick-fix will still be available:\n\n\n if (condition1) return true;\n if (condition2) return false;\n return true;\n\nNote that replacing `if (isTrue()) assert false;` with `assert isTrue();` may change the program semantics\nwhen asserts are disabled if condition has side effects.\nUse the **Ignore 'if' statements with trivial 'assert'** option if you want to hide a warning for `if` statements\ncontaining only `assert` statement in their bodies."
},
"defaultConfiguration": {
"enabled": false,
@@ -8390,7 +8420,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -8424,7 +8454,7 @@
{
"target": {
"id": "Java/Concurrency annotation issues",
- "index": 77,
+ "index": 76,
"toolComponent": {
"name": "QDJVM"
}
@@ -8458,7 +8488,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -8492,7 +8522,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -8560,41 +8590,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "EmptyDirectory",
- "shortDescription": {
- "text": "Empty directory"
- },
- "fullDescription": {
- "text": "Reports empty directories. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Only report empty directories located under a source folder option to have only directories under source roots reported.",
- "markdown": "Reports empty directories.\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 **Only report empty directories located under a source folder** option to have only directories under source\nroots reported."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/Packaging issues",
- "index": 36,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -8628,7 +8624,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -8662,7 +8658,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -8696,7 +8692,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -8730,7 +8726,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -8764,7 +8760,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -8798,7 +8794,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -8832,7 +8828,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -8866,7 +8862,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -8880,7 +8876,7 @@
{
"id": "NonFinalGuard",
"shortDescription": {
- "text": "Non-final @GuardedBy field"
+ "text": "Non-final '@GuardedBy' field"
},
"fullDescription": {
"text": "Reports '@GuardedBy' annotations in which the guarding field is not 'final'. Guarding on a non-final field may result in unexpected race conditions, as locks will be held on the value of the field (which may change), rather than the field itself. Example: 'private ReadWriteLock lock = new ReentrantReadWriteLock(); //not final 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'",
@@ -8900,7 +8896,7 @@
{
"target": {
"id": "Java/Concurrency annotation issues",
- "index": 77,
+ "index": 76,
"toolComponent": {
"name": "QDJVM"
}
@@ -8934,7 +8930,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -9002,7 +8998,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -9036,7 +9032,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -9050,11 +9046,11 @@
{
"id": "UseOfPropertiesAsHashtable",
"shortDescription": {
- "text": "Use of Properties object as a Hashtable"
+ "text": "Use of 'Properties' object as a 'Hashtable'"
},
"fullDescription": {
- "text": "Reports calls to the following methods on 'java.util.Properties' objects: 'java.util.Hashtable#put' 'java.util.Hashtable#putIfAbsent' 'java.util.Hashtable#putAll' 'java.util.Hashtable#get' For historical reasons, 'java.util.Properties' inherits 'java.util.Hashtable', but using those methods is discouraged to prevent corruption of properties values of types other than 'String'. Although 'java.util.Properties#putAll' overrides 'java.util.Hashtable#putAll' it doesn't get reported when both the key and the value parameters in the map are of the 'String' type. Example: 'Object f(Properties props) {\n props.put(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.get(\"Hello\");\n }' After the quick-fix is applied: 'Object f(Properties props) {\n props.setProperty(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.getProperty(\"hello\");\n }'",
- "markdown": "Reports calls to the following methods on `java.util.Properties` objects:\n\n* `java.util.Hashtable#put`\n* `java.util.Hashtable#putIfAbsent`\n* `java.util.Hashtable#putAll`\n* `java.util.Hashtable#get`\n\n\nFor historical reasons, `java.util.Properties` inherits `java.util.Hashtable`,\nbut using those methods is discouraged to prevent corruption of properties values of types other than `String`.\n\n\nAlthough `java.util.Properties#putAll` overrides `java.util.Hashtable#putAll` it doesn't get reported when\nboth the key and the value parameters in the map are of the `String` type.\n\n**Example:**\n\n\n Object f(Properties props) {\n props.put(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.get(\"Hello\");\n }\n\nAfter the quick-fix is applied:\n\n\n Object f(Properties props) {\n props.setProperty(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.getProperty(\"hello\");\n }\n"
+ "text": "Reports calls to the following methods on 'java.util.Properties' objects: 'put()' 'putIfAbsent()' 'putAll()' 'get()' For historical reasons, 'java.util.Properties' inherits from 'java.util.Hashtable', but using these methods is discouraged to prevent pollution of properties with values of types other than 'String'. Calls to 'java.util.Properties.putAll()' won't get reported when both the key and the value parameters in the map are of the 'String' type. Such a call is safe and no better alternative exists. Example: 'Object f(Properties props) {\n props.put(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.get(\"Hello\");\n }' After the quick-fix is applied: 'Object f(Properties props) {\n props.setProperty(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.getProperty(\"hello\");\n }'",
+ "markdown": "Reports calls to the following methods on `java.util.Properties` objects:\n\n* `put()`\n* `putIfAbsent()`\n* `putAll()`\n* `get()`\n\n\nFor historical reasons, `java.util.Properties` inherits from `java.util.Hashtable`,\nbut using these methods is discouraged to prevent pollution of properties with values of types other than `String`.\n\n\nCalls to `java.util.Properties.putAll()` won't get reported when\nboth the key and the value parameters in the map are of the `String` type.\nSuch a call is safe and no better alternative exists.\n\n**Example:**\n\n\n Object f(Properties props) {\n props.put(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.get(\"Hello\");\n }\n\nAfter the quick-fix is applied:\n\n\n Object f(Properties props) {\n props.setProperty(\"hello\", \"world\");\n props.putIfAbsent(\"hello\", \"world\");\n props.putAll(new HashMap<>());\n return props.getProperty(\"hello\");\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -9070,7 +9066,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -9104,7 +9100,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -9118,7 +9114,7 @@
{
"id": "AccessToStaticFieldLockedOnInstance",
"shortDescription": {
- "text": "Access to static field locked on instance data"
+ "text": "Access to 'static' field locked on instance data"
},
"fullDescription": {
"text": "Reports access to non-constant static fields that are locked on either 'this' or an instance field of 'this'. Locking a static field on instance data does not prevent the field from being modified by other instances, and thus may result in unexpected race conditions. Example: 'static String test;\n public void foo() {\n synchronized (this) {\n System.out.println(test); // warning\n }\n }' There is a quick-fix that allows ignoring static fields of specific types. You can manage those ignored types in the inspection options. Use the inspection options to specify which classes used for static fields should be ignored.",
@@ -9155,8 +9151,8 @@
"text": "Variable type can be explicit"
},
"fullDescription": {
- "text": "Reports local variables of the 'var' type that can be replaced withvan explicit type. The inspection can help find and eliminate usages of implicit types in case of downgrading. Example: 'var str = \"Hello\";' After the quick-fix is applied: 'String str = \"Hello\";' This inspection only reports if the language level of the project or module is 10 or higher.",
- "markdown": "Reports local variables of the `var` type that can be replaced withvan explicit type.\n\nThe inspection can help find and eliminate usages of implicit types in case of downgrading.\n\n**Example:**\n\n\n var str = \"Hello\";\n\nAfter the quick-fix is applied:\n\n\n String str = \"Hello\";\n\nThis inspection only reports if the language level of the project or module is 10 or higher."
+ "text": "Reports local variables of the 'var' type that can be replaced with an explicit type. Example: 'var str = \"Hello\";' After the quick-fix is applied: 'String str = \"Hello\";' 'var' keyword appeared in Java 10. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports local variables of the `var` type that can be replaced with an explicit type.\n\n**Example:**\n\n\n var str = \"Hello\";\n\nAfter the quick-fix is applied:\n\n\n String str = \"Hello\";\n\n\n`var` *keyword* appeared in Java 10.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -9172,7 +9168,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 10",
- "index": 122,
+ "index": 120,
"toolComponent": {
"name": "QDJVM"
}
@@ -9186,7 +9182,7 @@
{
"id": "Java8ListSort",
"shortDescription": {
- "text": "Collections.sort() can be replaced with List.sort()"
+ "text": "'Collections.sort()' can be replaced with 'List.sort()'"
},
"fullDescription": {
"text": "Reports calls of 'Collections.sort(list, comparator)' which can be replaced with 'list.sort(comparator)'. 'Collections.sort' is just a wrapper, so it is better to use an instance method directly. This inspection only reports if the language level of the project or module is 8 or higher.",
@@ -9206,7 +9202,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -9240,7 +9236,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -9274,7 +9270,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -9286,19 +9282,19 @@
]
},
{
- "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",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -9307,8 +9303,8 @@
"relationships": [
{
"target": {
- "id": "Java/Java language level migration aids/Java 7",
- "index": 123,
+ "id": "Java/Initialization",
+ "index": 29,
"toolComponent": {
"name": "QDJVM"
}
@@ -9320,19 +9316,19 @@
]
},
{
- "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",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -9341,8 +9337,8 @@
"relationships": [
{
"target": {
- "id": "Java/Initialization",
- "index": 29,
+ "id": "Java/Java language level migration aids/Java 7",
+ "index": 121,
"toolComponent": {
"name": "QDJVM"
}
@@ -9427,8 +9423,8 @@
"text": "Preview Feature warning"
},
"fullDescription": {
- "text": "Reports usages of the Preview Feature API: a set of elements that are 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 a piece of code depends on a preview feature, it might stop compiling in future JDK versions in case the feature gets no positive feedback and gets removed or changed. The inspection is enabled only if the language level of the current project is Preview. New in 2021.1",
- "markdown": "Reports usages of the Preview Feature API: a set of elements that are 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 a piece of code depends on a preview feature, it might stop compiling in future JDK versions in case the feature gets no positive\nfeedback and gets removed or changed.\n\nThe inspection is enabled only if the language level of the current project is **Preview**.\n\nNew in 2021.1"
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -9444,7 +9440,7 @@
{
"target": {
"id": "Java/Compiler issues",
- "index": 124,
+ "index": 122,
"toolComponent": {
"name": "QDJVM"
}
@@ -9512,7 +9508,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -9648,7 +9644,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -9682,7 +9678,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -9699,8 +9695,8 @@
"text": "'Collection.toArray()' call style"
},
"fullDescription": {
- "text": "Reports 'Collection.toArray()' calls not in the preferred style, and suggests applying the preferred style. There are two styles to convert a collection to an array: A pre-sized array, for example, 'c.toArray(new String[c.size()])' An empty array, for example, 'c.toArray(new String[0])' In older Java versions, using a pre-sized array was recommended, as the reflection call necessary to create an array of proper size was quite slow. However, since late updates of OpenJDK 6, this call was intrinsified, making the performance of the empty array version the same, and sometimes even better, compared to the pre-sized version. Also, passing a pre-sized array is dangerous for a concurrent or synchronized collection as a data race is possible between the 'size' and 'toArray' calls. This may result in extra nulls at the end of the array if the collection was concurrently shrunk during the operation. Use the inspection options to select the preferred style.",
- "markdown": "Reports `Collection.toArray()` calls not in the preferred style, and suggests applying the preferred style.\n\nThere are two styles to convert a collection to an array:\n* A pre-sized array, for example, `c.toArray(new String[c.size()])`\n* An empty array, for example, `c.toArray(new String[0])`\n\nIn older Java versions, using a pre-sized array was recommended, as the reflection\ncall necessary to create an array of proper size was quite slow.\n\nHowever, since late updates of OpenJDK 6, this call was intrinsified, making\nthe performance of the empty array version the same, and sometimes even better, compared\nto the pre-sized version. Also, passing a pre-sized array is dangerous for a concurrent or\nsynchronized collection as a data race is possible between the `size` and `toArray`\ncalls. This may result in extra nulls at the end of the array if the collection was concurrently\nshrunk during the operation.\n\nUse the inspection options to select the preferred style."
+ "text": "Reports 'Collection.toArray()' calls that are not in the preferred style, and suggests applying the preferred style. There are two styles to convert a collection to an array: A pre-sized array, for example, 'c.toArray(new String[c.size()])' An empty array, for example, 'c.toArray(new String[0])' In older Java versions, using a pre-sized array was recommended, as the reflection call necessary to create an array of proper size was quite slow. However, since late updates of OpenJDK 6, this call was intrinsified, making the performance of the empty array version the same, and sometimes even better, compared to the pre-sized version. Also, passing a pre-sized array is dangerous for a concurrent or synchronized collection as a data race is possible between the 'size' and 'toArray' calls. This may result in extra 'null's at the end of the array if the collection was concurrently shrunk during the operation. Use the inspection options to select the preferred style.",
+ "markdown": "Reports `Collection.toArray()` calls that are not in the preferred style, and suggests applying the preferred style.\n\nThere are two styles to convert a collection to an array:\n\n* A pre-sized array, for example, `c.toArray(new String[c.size()])`\n* An empty array, for example, `c.toArray(new String[0])`\n\nIn older Java versions, using a pre-sized array was recommended, as the reflection\ncall necessary to create an array of proper size was quite slow.\n\nHowever, since late updates of OpenJDK 6, this call was intrinsified, making\nthe performance of the empty array version the same, and sometimes even better, compared\nto the pre-sized version. Also, passing a pre-sized array is dangerous for a concurrent or\nsynchronized collection as a data race is possible between the `size` and `toArray`\ncalls. This may result in extra `null`s at the end of the array if the collection was concurrently\nshrunk during the operation.\n\nUse the inspection options to select the preferred style."
},
"defaultConfiguration": {
"enabled": true,
@@ -9750,7 +9746,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -9784,7 +9780,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -9796,19 +9792,19 @@
]
},
{
- "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",
+ "ideaSeverity": "WEAK WARNING",
"tags": [
"ideaSeverity"
]
@@ -9817,8 +9813,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Code maturity",
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -9830,19 +9826,19 @@
]
},
{
- "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",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -9851,8 +9847,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code maturity",
- "index": 40,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -9886,7 +9882,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -9920,7 +9916,7 @@
{
"target": {
"id": "Java/Memory",
- "index": 128,
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -9954,7 +9950,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -10022,7 +10018,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -10056,7 +10052,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 10",
- "index": 122,
+ "index": 120,
"toolComponent": {
"name": "QDJVM"
}
@@ -10090,7 +10086,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -10124,7 +10120,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -10136,19 +10132,19 @@
]
},
{
- "id": "LambdaBodyCanBeCodeBlock",
+ "id": "ParameterHidingMemberVariable",
"shortDescription": {
- "text": "Lambda body can be code block"
+ "text": "Parameter hides field"
},
"fullDescription": {
- "text": "Reports lambdas whose body is an expression and suggests converting expression bodies to code blocks. Example: 'n -> n + 1' After the quick-fix is applied: 'n -> {\n return n + 1;\n}'",
- "markdown": "Reports lambdas whose body is an expression and suggests converting expression bodies to code blocks.\n\nExample:\n\n\n n -> n + 1\n\nAfter the quick-fix is applied:\n\n n -> {\n return n + 1;\n }\n"
+ "text": "Reports method parameters named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the parameter when using the identically named field is intended. A quick-fix is suggested to rename the parameter. Example: 'class Main {\n private String value;\n\n public Main(String value) {\n value = value.toUpperCase();\n }\n }' You can configure the following options for this inspection: Ignore for property setters - ignore parameters of simple setters. Ignore superclass fields not visible from subclass - ignore 'private' fields in a superclass, which are not visible from the method. Ignore for constructors - ignore parameters of constructors. Ignore for abstract methods - ignore parameters of abstract methods. Ignore for static method parameters hiding instance fields - ignore parameters of 'static' methods hiding an instance field and to ignore parameters of instance methods in static inner classes hiding an instance field of an outer class. While not strictly hiding, such parameters can still be confusing.",
+ "markdown": "Reports method parameters named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the parameter when using the identically named field is intended.\n\nA quick-fix is suggested to rename the parameter.\n\n**Example:**\n\n\n class Main {\n private String value;\n\n public Main(String value) {\n value = value.toUpperCase();\n }\n }\n \n\nYou can configure the following options for this inspection:\n\n1. **Ignore for property setters** - ignore parameters of simple setters.\n2. **Ignore superclass fields not visible from subclass** - ignore `private` fields in a superclass, which are not visible from the method.\n3. **Ignore for constructors** - ignore parameters of constructors.\n4. **Ignore for abstract methods** - ignore parameters of abstract methods.\n5. **Ignore for static method parameters hiding instance fields** - ignore parameters of `static` methods hiding an instance field and to ignore parameters of instance methods in static inner classes hiding an instance field of an outer class. While not strictly hiding, such parameters can still be confusing."
},
"defaultConfiguration": {
"enabled": false,
- "level": "note",
+ "level": "warning",
"parameters": {
- "ideaSeverity": "INFORMATION",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -10157,8 +10153,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Visibility",
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -10170,19 +10166,19 @@
]
},
{
- "id": "ParameterHidingMemberVariable",
+ "id": "LambdaBodyCanBeCodeBlock",
"shortDescription": {
- "text": "Parameter hides field"
+ "text": "Lambda body can be code block"
},
"fullDescription": {
- "text": "Reports method parameters named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the parameter when using the identically named field is intended. A quick-fix is suggested to rename the parameter. Example: 'class Main {\n private String value;\n\n public Main(String value) {\n value = value.toUpperCase();\n }\n }' You can configure the following options for this inspection: Ignore for property setters - ignore parameters of simple setters. Ignore superclass fields not visible from subclass - ignore 'private' fields in a superclass, which are not visible from the method. Ignore for constructors - ignore parameters of constructors. Ignore for abstract methods - ignore parameters of abstract methods. Ignore for static method parameters hiding instance fields - ignore parameters of 'static' methods hiding an instance field and to ignore parameters of instance methods in static inner classes hiding an instance field of an outer class. While not strictly hiding, such parameters can still be confusing.",
- "markdown": "Reports method parameters named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the parameter when using the identically named field is intended.\n\nA quick-fix is suggested to rename the parameter.\n\n**Example:**\n\n\n class Main {\n private String value;\n\n public Main(String value) {\n value = value.toUpperCase();\n }\n }\n \n\nYou can configure the following options for this inspection:\n\n1. **Ignore for property setters** - ignore parameters of simple setters.\n2. **Ignore superclass fields not visible from subclass** - ignore `private` fields in a superclass, which are not visible from the method.\n3. **Ignore for constructors** - ignore parameters of constructors.\n4. **Ignore for abstract methods** - ignore parameters of abstract methods.\n5. **Ignore for static method parameters hiding instance fields** - ignore parameters of `static` methods hiding an instance field and to ignore parameters of instance methods in static inner classes hiding an instance field of an outer class. While not strictly hiding, such parameters can still be confusing."
+ "text": "Reports lambdas whose body is an expression and suggests converting expression bodies to code blocks. Example: 'n -> n + 1' After the quick-fix is applied: 'n -> {\n return n + 1;\n}'",
+ "markdown": "Reports lambdas whose body is an expression and suggests converting expression bodies to code blocks.\n\nExample:\n\n\n n -> n + 1\n\nAfter the quick-fix is applied:\n\n n -> {\n return n + 1;\n }\n"
},
"defaultConfiguration": {
"enabled": false,
- "level": "warning",
+ "level": "note",
"parameters": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -10191,8 +10187,8 @@
"relationships": [
{
"target": {
- "id": "Java/Visibility",
- "index": 76,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -10238,13 +10234,13 @@
]
},
{
- "id": "ObjectEquality",
+ "id": "TimeToString",
"shortDescription": {
- "text": "Object comparison using '==', instead of 'equals()'"
+ "text": "Call to 'Time.toString()'"
},
"fullDescription": {
- "text": "Reports code that uses '==' or '!=' rather than 'equals()' to test for 'Object' equality. Comparing objects using '==' or '!=' is often a bug, because it compares objects by identity instead of equality. Comparisons to 'null' are not reported. Array, 'String' and 'Number' comparisons are reported by separate inspections. Example: 'if (list1 == list2) {\n return;\n }' After the quick-fix is applied: 'if (Object.equals(list1, list2)) {\n return;\n }' Use the inspection settings to configure exceptions for this inspection.",
- "markdown": "Reports code that uses `==` or `!=` rather than `equals()` to test for `Object` equality.\n\nComparing objects using `==` or `!=` is often a bug, because it compares objects by identity instead of\nequality.\nComparisons to `null` are not reported.\nArray, `String` and `Number` comparisons are reported by separate inspections.\n\n**Example:**\n\n if (list1 == list2) {\n return;\n }\n\nAfter the quick-fix is applied:\n\n if (Object.equals(list1, list2)) {\n return;\n }\n\n\nUse the inspection settings to configure exceptions for this inspection."
+ "text": "Reports 'toString()' calls on 'java.sql.Time' objects. Such calls are usually incorrect in an internationalized environment.",
+ "markdown": "Reports `toString()` calls on `java.sql.Time` objects. Such calls are usually incorrect in an internationalized environment."
},
"defaultConfiguration": {
"enabled": false,
@@ -10259,8 +10255,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Internationalization",
+ "index": 6,
"toolComponent": {
"name": "QDJVM"
}
@@ -10272,13 +10268,13 @@
]
},
{
- "id": "TimeToString",
+ "id": "ObjectEquality",
"shortDescription": {
- "text": "Call to 'Time.toString()'"
+ "text": "Object comparison using '==', instead of 'equals()'"
},
"fullDescription": {
- "text": "Reports 'toString()' calls on 'java.sql.Time' objects. Such calls are usually incorrect in an internationalized environment.",
- "markdown": "Reports `toString()` calls on `java.sql.Time` objects. Such calls are usually incorrect in an internationalized environment."
+ "text": "Reports code that uses '==' or '!=' rather than 'equals()' to test for 'Object' equality. Comparing objects using '==' or '!=' is often a bug, because it compares objects by identity instead of equality. Comparisons to 'null' are not reported. Array, 'String' and 'Number' comparisons are reported by separate inspections. Example: 'if (list1 == list2) {\n return;\n }' After the quick-fix is applied: 'if (Object.equals(list1, list2)) {\n return;\n }' Use the inspection settings to configure exceptions for this inspection.",
+ "markdown": "Reports code that uses `==` or `!=` rather than `equals()` to test for `Object` equality.\n\nComparing objects using `==` or `!=` is often a bug, because it compares objects by identity instead of\nequality.\nComparisons to `null` are not reported.\nArray, `String` and `Number` comparisons are reported by separate inspections.\n\n**Example:**\n\n if (list1 == list2) {\n return;\n }\n\nAfter the quick-fix is applied:\n\n if (Object.equals(list1, list2)) {\n return;\n }\n\n\nUse the inspection settings to configure exceptions for this inspection."
},
"defaultConfiguration": {
"enabled": false,
@@ -10293,8 +10289,8 @@
"relationships": [
{
"target": {
- "id": "Java/Internationalization",
- "index": 6,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -10396,7 +10392,7 @@
{
"target": {
"id": "Java/Reflective access",
- "index": 99,
+ "index": 98,
"toolComponent": {
"name": "QDJVM"
}
@@ -10430,7 +10426,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -10464,7 +10460,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -10481,8 +10477,8 @@
"text": "Inner class of interface"
},
"fullDescription": {
- "text": "Reports inner classes in 'interface' classes. Some coding standards discourage the use of such classes. The inspection doesn't report enumeration and annotation classes. Use the Ignore inner interfaces of interfaces option to ignore inner interfaces. For example: 'interface I {\n interface Inner {\n }\n }'",
- "markdown": "Reports inner classes in `interface` classes.\n\nSome coding standards\ndiscourage the use of such classes. The inspection doesn't report enumeration and annotation classes.\n\n\nUse the **Ignore inner interfaces of interfaces** option to ignore inner interfaces. For example:\n\n\n interface I {\n interface Inner {\n }\n }\n"
+ "text": "Reports inner classes in 'interface' classes. Some coding standards discourage the use of such classes. The inspection doesn't report enum classes and annotation interfaces. Use the Ignore inner interfaces of interfaces option to ignore inner interfaces. For example: 'interface I {\n interface Inner {\n }\n }'",
+ "markdown": "Reports inner classes in `interface` classes.\n\nSome coding standards\ndiscourage the use of such classes. The inspection doesn't report enum classes and annotation interfaces.\n\n\nUse the **Ignore inner interfaces of interfaces** option to ignore inner interfaces. For example:\n\n\n interface I {\n interface Inner {\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -10498,7 +10494,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -10510,13 +10506,13 @@
]
},
{
- "id": "UnusedLabel",
+ "id": "PublicFieldAccessedInSynchronizedContext",
"shortDescription": {
- "text": "Unused label"
+ "text": "Non-private field accessed in 'synchronized' context"
},
"fullDescription": {
- "text": "Reports labels that are not targets of any 'break' or 'continue' statements. Example: 'label: for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }' After the quick-fix is applied, the label is removed: 'for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }'",
- "markdown": "Reports labels that are not targets of any `break` or `continue` statements.\n\n**Example:**\n\n\n label: for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }\n\nAfter the quick-fix is applied, the label is removed:\n\n\n for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }\n"
+ "text": "Reports non-'final', non-'private' fields that are accessed in a synchronized context. A non-'private' field cannot be guaranteed to always be accessed in a synchronized manner, and such \"partially synchronized\" access may result in unexpectedly inconsistent data structures. Example: 'class Bar {\n public String field1;\n }\n public Bar myBar;\n\n synchronized public void sample() {\n myBar.field1 = \"bar\";\n }'",
+ "markdown": "Reports non-`final`, non-`private` fields that are accessed in a synchronized context.\n\n\nA non-`private` field cannot be guaranteed to always be accessed in a synchronized manner, and such \"partially synchronized\"\naccess may result in unexpectedly inconsistent data structures.\n\n**Example:**\n\n\n class Bar {\n public String field1;\n }\n public Bar myBar;\n\n synchronized public void sample() {\n myBar.field1 = \"bar\";\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -10531,8 +10527,8 @@
"relationships": [
{
"target": {
- "id": "Java/Declaration redundancy",
- "index": 12,
+ "id": "Java/Threading issues",
+ "index": 25,
"toolComponent": {
"name": "QDJVM"
}
@@ -10544,13 +10540,13 @@
]
},
{
- "id": "PublicFieldAccessedInSynchronizedContext",
+ "id": "UnusedLabel",
"shortDescription": {
- "text": "Non-private field accessed in synchronized context"
+ "text": "Unused label"
},
"fullDescription": {
- "text": "Reports non-'final', non-'private' fields that are accessed in a synchronized context. A non-'private' field cannot be guaranteed to always be accessed in a synchronized manner, and such \"partially synchronized\" access may result in unexpectedly inconsistent data structures. Example: 'class Bar {\n public String field1;\n }\n public Bar myBar;\n\n synchronized public void sample() {\n myBar.field1 = \"bar\";\n }'",
- "markdown": "Reports non-`final`, non-`private` fields that are accessed in a synchronized context.\n\n\nA non-`private` field cannot be guaranteed to always be accessed in a synchronized manner, and such \"partially synchronized\"\naccess may result in unexpectedly inconsistent data structures.\n\n**Example:**\n\n\n class Bar {\n public String field1;\n }\n public Bar myBar;\n\n synchronized public void sample() {\n myBar.field1 = \"bar\";\n }\n"
+ "text": "Reports labels that are not targets of any 'break' or 'continue' statements. Example: 'label: for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }' After the quick-fix is applied, the label is removed: 'for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }'",
+ "markdown": "Reports labels that are not targets of any `break` or `continue` statements.\n\n**Example:**\n\n\n label: for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }\n\nAfter the quick-fix is applied, the label is removed:\n\n\n for (int i = 0; i < 10; i++) {\n if (i == 3) {\n break;\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -10565,8 +10561,8 @@
"relationships": [
{
"target": {
- "id": "Java/Threading issues",
- "index": 25,
+ "id": "Java/Declaration redundancy",
+ "index": 12,
"toolComponent": {
"name": "QDJVM"
}
@@ -10583,8 +10579,8 @@
"text": "Enhanced 'for' statement"
},
"fullDescription": {
- "text": "Reports enhanced 'for' statements. Such 'for' statements are not supported by Java of version 1.4 and older. Example: 'for (int x: Arrays.asList(1, 2, 3)) {\n System.out.println(x);\n }' After the quick-fix is applied: 'for (Iterator<Integer> iterator = Arrays.asList(1, 2, 3).iterator(); iterator.hasNext(); ) {\n final int x = iterator.next();\n System.out.println(x);\n }'",
- "markdown": "Reports enhanced `for` statements. Such `for` statements are not supported by Java of version 1.4 and older.\n\nExample:\n\n\n for (int x: Arrays.asList(1, 2, 3)) {\n System.out.println(x);\n }\n\nAfter the quick-fix is applied:\n\n\n for (Iterator<Integer> iterator = Arrays.asList(1, 2, 3).iterator(); iterator.hasNext(); ) {\n final int x = iterator.next();\n System.out.println(x);\n }\n"
+ "text": "Reports enhanced 'for' statements. Example: 'for (int x: Arrays.asList(1, 2, 3)) {\n System.out.println(x);\n }' After the quick-fix is applied: 'for (Iterator<Integer> iterator = Arrays.asList(1, 2, 3).iterator(); iterator.hasNext(); ) {\n final int x = iterator.next();\n System.out.println(x);\n }' Enhanced 'for' statement appeared in Java 5. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports enhanced `for` statements.\n\nExample:\n\n\n for (int x: Arrays.asList(1, 2, 3)) {\n System.out.println(x);\n }\n\nAfter the quick-fix is applied:\n\n\n for (Iterator<Integer> iterator = Arrays.asList(1, 2, 3).iterator(); iterator.hasNext(); ) {\n final int x = iterator.next();\n System.out.println(x);\n }\n\n\n*Enhanced* `for` *statement* appeared in Java 5.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -10600,7 +10596,7 @@
{
"target": {
"id": "Java/Java language level issues",
- "index": 110,
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -10634,7 +10630,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -10668,7 +10664,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -10682,7 +10678,7 @@
{
"id": "ForCanBeForeach",
"shortDescription": {
- "text": "'for' loop can be replaced with enhanced 'for' loop"
+ "text": "'for' loop can be replaced with enhanced for loop"
},
"fullDescription": {
"text": "Reports 'for' loops that iterate over collections or arrays, and can be automatically replaced with an enhanced 'for' loop (foreach iteration syntax). Example: 'for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {\n String item = iterator.next();\n System.out.println(item);\n }' After the quick-fix is applied: 'for (String item : list) {\n System.out.println(item);\n }' Use the Report indexed 'java.util.List' loops option to find loops involving 'list.get(index)' calls. Generally, these loops can be replaced with enhanced 'for' loops, unless they modify an underlying list in the process, for example, by calling 'list.remove(index)'. If the latter is the case, the enhanced 'for' loop may throw 'ConcurrentModificationException'. Also, in some cases, 'list.get(index)' loops may work a little bit faster. Use the Do not report iterations over untyped collections option to ignore collections without type parameters. This prevents the creation of enhanced 'for' loop variables of the 'java.lang.Object' type and the insertion of casts where the loop variable is used. This inspection only reports if the language level of the project or module is 5 or higher.",
@@ -10702,7 +10698,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -10736,7 +10732,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -10770,7 +10766,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -10787,8 +10783,8 @@
"text": "Trailing whitespaces 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 configured language level 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 configured language level is 15 or higher.\n\nNew in 2021.1"
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -10838,7 +10834,7 @@
{
"target": {
"id": "Java/Naming conventions/Class",
- "index": 56,
+ "index": 57,
"toolComponent": {
"name": "QDJVM"
}
@@ -10855,8 +10851,8 @@
"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 }' The 'Double.compare()' and 'Float.compare()' methods were introduced in Java 1.4. Methods for other primitive types are available since Java 1.7. 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\nThe `Double.compare()` and `Float.compare()` methods were introduced in Java 1.4. Methods for other primitive types\nare available since Java 1.7.\n\nNew in 2017.2"
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -10940,7 +10936,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -11008,7 +11004,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -11042,7 +11038,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -11054,13 +11050,13 @@
]
},
{
- "id": "WhileLoopSpinsOnField",
+ "id": "DefaultAnnotationParam",
"shortDescription": {
- "text": "'while' loop spins on field"
+ "text": "Default annotation parameter value"
},
"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 annotation parameters that are assigned to their 'default' value. Example: '@interface Test {\n Class<?> expected() default Throwable.class;\n }\n\n @Test(expected = Throwable.class)\n void testSmth() {}' After the quick-fix is applied: '@Test()\n void testSmth() {}'",
+ "markdown": "Reports annotation parameters that are assigned to their `default` value.\n\nExample:\n\n\n @interface Test {\n Class<?> expected() default Throwable.class;\n }\n\n @Test(expected = Throwable.class)\n void testSmth() {}\n\nAfter the quick-fix is applied:\n\n\n @Test()\n void testSmth() {}\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -11075,8 +11071,8 @@
"relationships": [
{
"target": {
- "id": "Java/Threading issues",
- "index": 25,
+ "id": "Java/Declaration redundancy",
+ "index": 12,
"toolComponent": {
"name": "QDJVM"
}
@@ -11088,13 +11084,13 @@
]
},
{
- "id": "DefaultAnnotationParam",
+ "id": "WhileLoopSpinsOnField",
"shortDescription": {
- "text": "Default annotation parameter value"
+ "text": "'while' loop spins on field"
},
"fullDescription": {
- "text": "Reports annotation parameters that are assigned to their 'default' value. Example: '@interface Test {\n Class<?> expected() default Throwable.class;\n }\n\n @Test(expected = Throwable.class)\n void testSmth() {}' After the quick-fix is applied: '@Test()\n void testSmth() {}'",
- "markdown": "Reports annotation parameters that are assigned to their `default` value.\n\nExample:\n\n\n @interface Test {\n Class<?> expected() default Throwable.class;\n }\n\n @Test(expected = Throwable.class)\n void testSmth() {}\n\nAfter the quick-fix is applied:\n\n\n @Test()\n void testSmth() {}\n"
+ "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."
},
"defaultConfiguration": {
"enabled": true,
@@ -11109,8 +11105,8 @@
"relationships": [
{
"target": {
- "id": "Java/Declaration redundancy",
- "index": 12,
+ "id": "Java/Threading issues",
+ "index": 25,
"toolComponent": {
"name": "QDJVM"
}
@@ -11124,7 +11120,7 @@
{
"id": "SynchronizeOnLock",
"shortDescription": {
- "text": "Synchronization on a Lock object"
+ "text": "Synchronization on a 'Lock' object"
},
"fullDescription": {
"text": "Reports 'synchronized' blocks that lock on an instance of 'java.util.concurrent.locks.Lock'. Such synchronization is almost certainly unintended, and appropriate versions of '.lock()' and '.unlock()' should be used instead. Example: 'final ReentrantLock lock = new ReentrantLock();\n\n public void foo() {\n synchronized (lock) {}\n }'",
@@ -11158,7 +11154,7 @@
{
"id": "BadExceptionCaught",
"shortDescription": {
- "text": "Prohibited exception caught"
+ "text": "Prohibited 'Exception' caught"
},
"fullDescription": {
"text": "Reports 'catch' clauses that catch an inappropriate exception. Some exceptions, for example 'java.lang.NullPointerException' or 'java.lang.IllegalMonitorStateException', represent programming errors and therefore almost certainly should not be caught in production code. Example: 'try {\n return component.getMousePosition(true) != null;\n } catch (NullPointerException e) { // warning: Prohibited exception 'NullPointerException' caught\n return false;\n }' Use the Prohibited exceptions list to specify which exceptions should be reported.",
@@ -11224,6 +11220,40 @@
]
},
{
+ "id": "RedundantScheduledForRemovalAnnotation",
+ "shortDescription": {
+ "text": "Redundant @ScheduledForRemoval annotation"
+ },
+ "fullDescription": {
+ "text": "Reports usages of '@ApiStatus.ScheduledForRemoval' annotation without 'inVersion' attribute in code which targets Java 9 or newer version. Such usages can be replaced by 'forRemoval' attribute in '@Deprecated' annotation to simplify code. New in 2022.1",
+ "markdown": "Reports usages of `@ApiStatus.ScheduledForRemoval` annotation without `inVersion` attribute in code which targets Java 9 or newer version.\n\n\nSuch usages can be replaced by `forRemoval` attribute in `@Deprecated` annotation to simplify code.\n\nNew in 2022.1"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Code maturity",
+ "index": 41,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "OptionalGetWithoutIsPresent",
"shortDescription": {
"text": "Optional.get() is called without isPresent() check"
@@ -11246,7 +11276,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -11314,7 +11344,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -11382,7 +11412,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -11396,7 +11426,7 @@
{
"id": "AtomicFieldUpdaterNotStaticFinal",
"shortDescription": {
- "text": "AtomicFieldUpdater field not declared 'static final'"
+ "text": "'AtomicFieldUpdater' field not declared 'static final'"
},
"fullDescription": {
"text": "Reports fields of types: 'java.util.concurrent.atomic.AtomicLongFieldUpdater' 'java.util.concurrent.atomic.AtomicIntegerFieldUpdater' 'java.util.concurrent.atomic.AtomicReferenceFieldUpdater' that are not 'static final'. Because only one atomic field updater is needed for updating a 'volatile' field in all instances of a class, it can almost always be 'static'. Making the updater 'final' allows the JVM to optimize access for improved performance. Example: 'class Main {\n private volatile int id;\n private AtomicIntegerFieldUpdater<Main> idFieldUpdater = AtomicIntegerFieldUpdater.newUpdater(Main.class, \"id\");\n }' After the quick-fix is applied: 'class Main {\n private volatile int id;\n private static final AtomicIntegerFieldUpdater<Main> idFieldUpdater = AtomicIntegerFieldUpdater.newUpdater(Main.class, \"id\");\n }'",
@@ -11450,7 +11480,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -11484,7 +11514,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -11498,7 +11528,7 @@
{
"id": "ObjectsEqualsCanBeSimplified",
"shortDescription": {
- "text": "Objects.equals() can be replaced with equals()"
+ "text": "'Objects.equals()' can be replaced with 'equals()'"
},
"fullDescription": {
"text": "Reports calls to 'Objects.equals(a, b)' in which the first argument is statically known to be non-null. Such a call can be safely replaced with 'a.equals(b)' or 'a == b' if both arguments are primitives. Example: 'String defaultName = \"default\";\n boolean isDefault = Objects.equals(defaultName, name);' After the quick-fix is applied: 'String defaultName = \"default\";\n boolean isDefault = defaultName.equals(name);' New in 2018.3",
@@ -11532,7 +11562,7 @@
{
"id": "ClassLoaderInstantiation",
"shortDescription": {
- "text": "ClassLoader instantiation"
+ "text": "'ClassLoader' instantiation"
},
"fullDescription": {
"text": "Reports instantiations of the 'java.lang.ClassLoader' class. While often benign, any instantiations of 'ClassLoader' should be closely examined in any security audit. Example: 'Class<?> loadExtraClass(String name) throws Exception {\n try(URLClassLoader loader =\n new URLClassLoader(new URL[]{new URL(\"extraClasses/\")})) {\n return loader.loadClass(name);\n }\n }'",
@@ -11564,6 +11594,40 @@
]
},
{
+ "id": "UnresolvedClassReferenceRepair",
+ "shortDescription": {
+ "text": "Unresolved class reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved class reference. The quick-fix suggests trying to resolve reference.",
+ "markdown": "Reports an unresolved class reference.\n\nThe quick-fix suggests trying to resolve reference."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "ideaSeverity": "INFORMATION",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Abstraction issues",
+ "index": 62,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "NativeMethods",
"shortDescription": {
"text": "Native method"
@@ -11586,7 +11650,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -11620,7 +11684,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -11654,7 +11718,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -11688,7 +11752,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -11722,7 +11786,41 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "BulkFileAttributesRead",
+ "shortDescription": {
+ "text": "Bulk 'Files.readAttributes' call can be used instead of multiple file attribute calls"
+ },
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Performance",
+ "index": 10,
"toolComponent": {
"name": "QDJVM"
}
@@ -11756,7 +11854,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -11790,7 +11888,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -11824,7 +11922,7 @@
{
"target": {
"id": "Java/Probable bugs/Nullability problems",
- "index": 134,
+ "index": 132,
"toolComponent": {
"name": "QDJVM"
}
@@ -11858,7 +11956,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -11926,7 +12024,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -11960,7 +12058,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -12028,7 +12126,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -12062,7 +12160,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -12096,7 +12194,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -12130,7 +12228,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -12176,13 +12274,13 @@
]
},
{
- "id": "SimplifiableAssertion",
+ "id": "LoadLibraryWithNonConstantString",
"shortDescription": {
- "text": "Simplifiable assertion"
+ "text": "Call to 'System.loadLibrary()' with non-constant string"
},
"fullDescription": {
- "text": "Reports any 'assert' calls that can be replaced with simpler and equivalent calls. Example → Replacement 'assertEquals(true, x());' 'assertTrue(x());' 'assertTrue(y() != null);' 'assertNotNull(y());' 'assertTrue(z == z());' 'assertSame(z, z());' 'assertTrue(a.equals(a()));' 'assertEquals(a, a());' 'assertTrue(false);' 'fail();'",
- "markdown": "Reports any `assert` calls that can be replaced with simpler and equivalent calls.\n\n| Example | → | Replacement |\n|----------------------------------|---|-------------------------|\n| `assertEquals(`**true**`, x());` | | `assertTrue(x());` |\n| `assertTrue(y() != null);` | | `assertNotNull(y());` |\n| `assertTrue(z == z());` | | `assertSame(z, z());` |\n| `assertTrue(a.equals(a()));` | | `assertEquals(a, a());` |\n| `assertTrue(`**false**`);` | | `fail();` |"
+ "text": "Reports calls to 'java.lang.System.loadLibrary()', 'java.lang.System.load()', 'java.lang.Runtime.loadLibrary()' and 'java.lang.Runtime.load()' which take a dynamically-constructed string as the name of the library. Constructed library name strings are a common source of security breaches. By default, this inspection ignores compile-time constants. Example: 'void test(int i) {\n System.loadLibrary(\"foo\" + i);\n }' Use the inspection settings to consider any 'static final' fields as constant. Be careful, because strings like the following will be ignored when the option is enabled: 'private static final String LIBRARY = getUserInput();'",
+ "markdown": "Reports calls to `java.lang.System.loadLibrary()`, `java.lang.System.load()`, `java.lang.Runtime.loadLibrary()` and `java.lang.Runtime.load()` which take a dynamically-constructed string as the name of the library.\n\n\nConstructed library name strings are a common source of security breaches.\nBy default, this inspection ignores compile-time constants.\n\n**Example:**\n\n\n void test(int i) {\n System.loadLibrary(\"foo\" + i);\n }\n\n\nUse the inspection settings to consider any `static final` fields as constant.\nBe careful, because strings like the following will be ignored when the option is enabled:\n\n\n private static final String LIBRARY = getUserInput();\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -12197,8 +12295,8 @@
"relationships": [
{
"target": {
- "id": "Java/Test frameworks",
- "index": 98,
+ "id": "Java/Security",
+ "index": 31,
"toolComponent": {
"name": "QDJVM"
}
@@ -12210,16 +12308,16 @@
]
},
{
- "id": "InterfaceMethodClashesWithObject",
+ "id": "SimplifiableAssertion",
"shortDescription": {
- "text": "Interface method clashes with method in 'java.lang.Object'"
+ "text": "Simplifiable assertion"
},
"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 any 'assert' calls that can be replaced with simpler and equivalent calls. Example → Replacement 'assertEquals(true, x());' 'assertTrue(x());' 'assertTrue(y() != null);' 'assertNotNull(y());' 'assertTrue(z == z());' 'assertSame(z, z());' 'assertTrue(a.equals(a()));' 'assertEquals(a, a());' 'assertTrue(false);' 'fail();'",
+ "markdown": "Reports any `assert` calls that can be replaced with simpler and equivalent calls.\n\n| Example | → | Replacement |\n|----------------------------------|---|-------------------------|\n| `assertEquals(`**true**`, x());` | | `assertTrue(x());` |\n| `assertTrue(y() != null);` | | `assertNotNull(y());` |\n| `assertTrue(z == z());` | | `assertSame(z, z());` |\n| `assertTrue(a.equals(a()));` | | `assertEquals(a, a());` |\n| `assertTrue(`**false**`);` | | `fail();` |"
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -12231,8 +12329,8 @@
"relationships": [
{
"target": {
- "id": "Java/Abstraction issues",
- "index": 61,
+ "id": "Java/Test frameworks",
+ "index": 97,
"toolComponent": {
"name": "QDJVM"
}
@@ -12244,16 +12342,16 @@
]
},
{
- "id": "LoadLibraryWithNonConstantString",
+ "id": "InterfaceMethodClashesWithObject",
"shortDescription": {
- "text": "Call to 'System.loadLibrary()' with non-constant string"
+ "text": "Interface method clashes with method in 'Object'"
},
"fullDescription": {
- "text": "Reports calls to 'java.lang.System.loadLibrary()', 'java.lang.System.load()', 'java.lang.Runtime.loadLibrary()' and 'java.lang.Runtime.load()' which take a dynamically-constructed string as the name of the library. Constructed library name strings are a common source of security breaches. By default, this inspection ignores compile-time constants. Example: 'void test(int i) {\n System.loadLibrary(\"foo\" + i);\n }' Use the inspection settings to consider any 'static final' fields as constant. Be careful, because strings like the following will be ignored when the option is enabled: 'private static final String LIBRARY = getUserInput();'",
- "markdown": "Reports calls to `java.lang.System.loadLibrary()`, `java.lang.System.load()`, `java.lang.Runtime.loadLibrary()` and `java.lang.Runtime.load()` which take a dynamically-constructed string as the name of the library.\n\n\nConstructed library name strings are a common source of security breaches.\nBy default, this inspection ignores compile-time constants.\n\n**Example:**\n\n\n void test(int i) {\n System.loadLibrary(\"foo\" + i);\n }\n\n\nUse the inspection settings to consider any `static final` fields as constant.\nBe careful, because strings like the following will be ignored when the option is enabled:\n\n\n private static final String LIBRARY = getUserInput();\n"
+ "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": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -12265,8 +12363,8 @@
"relationships": [
{
"target": {
- "id": "Java/Security",
- "index": 31,
+ "id": "Java/Abstraction issues",
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -12300,7 +12398,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -12368,7 +12466,7 @@
{
"target": {
"id": "Java/Reflective access",
- "index": 99,
+ "index": 98,
"toolComponent": {
"name": "QDJVM"
}
@@ -12436,7 +12534,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -12470,7 +12568,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -12504,7 +12602,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -12538,7 +12636,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -12572,41 +12670,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "SuspiciousPackagePrivateAccess",
- "shortDescription": {
- "text": "Suspicious package-private access"
- },
- "fullDescription": {
- "text": "Reports usages of package-private members declared in the same package but in a different module. If the declaring classes are loaded by different loaders, the code that accesses a package-private member will fail with 'IllegalAccessError' at runtime. If a method overrides a package-private method from a class that is loaded by a different loader, it won't be invoked when the super method is called on an instance of the implementing class. If a method implements an abstract package-private method from a class that is loaded by a different loader, calling the super method on an instance of the implementing class will fail with 'AbstractMethodError'.",
- "markdown": "Reports usages of package-private members declared in the same package but in a different module.\n\nIf the declaring classes are loaded by different loaders, the code that accesses a package-private member will fail with\n`IllegalAccessError` at runtime.\n\nIf a method overrides a package-private method from a class that is loaded by a different loader, it won't be invoked when the super\nmethod is called on an instance of the implementing class.\n\nIf a method implements an abstract package-private method from a class that is loaded by a different loader,\ncalling the super method on an instance of the implementing class will fail with `AbstractMethodError`."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/Dependency issues",
- "index": 109,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -12640,7 +12704,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -12674,7 +12738,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -12708,7 +12772,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -12722,11 +12786,11 @@
{
"id": "ParameterNameDiffersFromOverriddenParameter",
"shortDescription": {
- "text": "Parameter name differs from parameter in overridden method"
+ "text": "Parameter name differs from parameter in overridden or overloaded method"
},
"fullDescription": {
- "text": "Reports parameters whose names differ from the corresponding parameters of the methods they override. While legal in Java, such inconsistent names may be confusing and decrease the documentation benefits of good naming practices. Example: 'class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String name) { super(name); }\n }' After the quick-fix is applied: 'class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String fullName) { super(fullName); }\n }' Use the options to indicate whether to ignore overridden parameter names that are only a single character long or come from a library method. Both can be useful if you do not wish to be bound by dubious naming conventions used in libraries.",
- "markdown": "Reports parameters whose names differ from the corresponding parameters of the methods they override. While legal in Java, such inconsistent names may be confusing and decrease the documentation benefits of good naming practices.\n\n**Example:**\n\n\n class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String name) { super(name); }\n }\n\nAfter the quick-fix is applied:\n\n\n class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String fullName) { super(fullName); }\n }\n\n\nUse the options to indicate whether to ignore overridden parameter names that are only\na single character long or come from a library method. Both can be useful if\nyou do not wish to be bound by dubious naming conventions used in libraries."
+ "text": "Reports parameters whose names differ from the corresponding parameters of the methods they override or overload. While legal in Java, such inconsistent names may be confusing and decrease the documentation benefits of good naming practices. Example: 'class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String name) { super(name); }\n }' After the quick-fix is applied: 'class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String fullName) { super(fullName); }\n }' Use the options to indicate whether to ignore overridden parameter names that are only a single character long or come from a library method. Both can be useful if you do not wish to be bound by dubious naming conventions used in libraries.",
+ "markdown": "Reports parameters whose names differ from the corresponding parameters of the methods they override or overload. While legal in Java, such inconsistent names may be confusing and decrease the documentation benefits of good naming practices.\n\n**Example:**\n\n\n class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String name) { super(name); }\n }\n\nAfter the quick-fix is applied:\n\n\n class Person {\n Person(String fullName) {}\n }\n class Child extends Person {\n Child(String fullName) { super(fullName); }\n }\n\n\nUse the options to indicate whether to ignore overridden parameter names that are only\na single character long or come from a library method. Both can be useful if\nyou do not wish to be bound by dubious naming conventions used in libraries."
},
"defaultConfiguration": {
"enabled": false,
@@ -12742,7 +12806,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -12776,7 +12840,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -12810,7 +12874,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 11",
- "index": 143,
+ "index": 140,
"toolComponent": {
"name": "QDJVM"
}
@@ -12844,7 +12908,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -12946,7 +13010,7 @@
{
"target": {
"id": "Java/Dependency issues",
- "index": 109,
+ "index": 108,
"toolComponent": {
"name": "QDJVM"
}
@@ -12980,7 +13044,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -13048,7 +13112,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -13082,7 +13146,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -13094,13 +13158,13 @@
]
},
{
- "id": "ClassOnlyUsedInOnePackage",
+ "id": "SuppressionAnnotation",
"shortDescription": {
- "text": "Class only used from one other package"
+ "text": "Inspection suppression annotation"
},
"fullDescription": {
- "text": "Reports classes that don't depend on any other class in their package, depend on classes from another package, and are themselves a dependency only for classes from this other package. Consider moving such classes to the package on which they depend. 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, depend on classes from another package, and are themselves a dependency only for classes from this other package. Consider moving such classes to the package on which they depend.\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 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,
@@ -13115,8 +13179,8 @@
"relationships": [
{
"target": {
- "id": "Java/Packaging issues",
- "index": 36,
+ "id": "Java/Code maturity",
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -13162,13 +13226,13 @@
]
},
{
- "id": "SuppressionAnnotation",
+ "id": "ClassOnlyUsedInOnePackage",
"shortDescription": {
- "text": "Inspection suppression annotation"
+ "text": "Class only used from one other package"
},
"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 classes that don't depend on any other class in their package, depend on classes from another package, and are themselves a dependency only for classes from this other package. Consider moving such classes to the package on which they depend. 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, depend on classes from another package, and are themselves a dependency only for classes from this other package. Consider moving such classes to the package on which they depend.\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,
@@ -13183,8 +13247,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code maturity",
- "index": 40,
+ "id": "Java/Packaging issues",
+ "index": 36,
"toolComponent": {
"name": "QDJVM"
}
@@ -13196,19 +13260,19 @@
]
},
{
- "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",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -13217,8 +13281,8 @@
"relationships": [
{
"target": {
- "id": "Java/Threading issues",
- "index": 25,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -13230,19 +13294,19 @@
]
},
{
- "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",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -13251,8 +13315,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Threading issues",
+ "index": 25,
"toolComponent": {
"name": "QDJVM"
}
@@ -13286,7 +13350,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13319,8 +13383,8 @@
"relationships": [
{
"target": {
- "id": "JVM languages",
- "index": 1,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -13354,7 +13418,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13366,16 +13430,16 @@
]
},
{
- "id": "NumericOverflow",
+ "id": "SuspiciousIndentAfterControlStatement",
"shortDescription": {
- "text": "Numeric overflow"
+ "text": "Suspicious indentation after control statement without braces"
},
"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 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": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -13387,8 +13451,8 @@
"relationships": [
{
"target": {
- "id": "Java/Numeric issues",
- "index": 27,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13400,16 +13464,16 @@
]
},
{
- "id": "AssignmentToSuperclassField",
+ "id": "NumericOverflow",
"shortDescription": {
- "text": "Constructor assigns value to field defined in superclass"
+ "text": "Numeric overflow"
},
"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 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",
@@ -13421,8 +13485,8 @@
"relationships": [
{
"target": {
- "id": "Java/Assignment issues",
- "index": 62,
+ "id": "Java/Numeric issues",
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -13434,13 +13498,13 @@
]
},
{
- "id": "SuspiciousIndentAfterControlStatement",
+ "id": "AssignmentToSuperclassField",
"shortDescription": {
- "text": "Suspicious indentation after control statement without braces"
+ "text": "Constructor assigns value to field defined in superclass"
},
"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 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": false,
@@ -13455,8 +13519,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Assignment issues",
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -13490,7 +13554,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13524,7 +13588,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -13558,7 +13622,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -13592,7 +13656,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -13626,7 +13690,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -13660,7 +13724,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -13694,7 +13758,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13728,7 +13792,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13745,8 +13809,8 @@
"text": "JUnit test annotated with '@Ignore'/'@Disabled'"
},
"fullDescription": {
- "text": "Reports usages of JUnit 4's '@Ignore' or JUnit 5's '@Disabled' annotations. The tests annotated with these annotations for a long time, especially without a specified reason, are a code smell. Example: '@Ignore\n public class UrgentTest {\n\n @Test\n public void testIt() {\n Assert.assertEquals(\"expected\", \"actual\");\n }\n }' Configure the inspection: Use the Only report annotations without reason option to only report the cases when no reason is specified as the annotation's 'value' attribute.",
- "markdown": "Reports usages of JUnit 4's `@Ignore` or JUnit 5's `@Disabled` annotations. The tests annotated with these annotations for a long time, especially without a specified reason, are a code smell.\n\n**Example:**\n\n\n @Ignore\n public class UrgentTest {\n\n @Test\n public void testIt() {\n Assert.assertEquals(\"expected\", \"actual\");\n }\n }\n\n\nConfigure the inspection:\n\n* Use the **Only report annotations without reason** option to only report the cases when no reason is specified as the annotation's `value` attribute."
+ "text": "Reports usages of JUnit 4's '@Ignore' or JUnit 5's '@Disabled' annotations. It is considered a code smell to have tests annotated with these annotations for a long time, especially when no reason is specified. Example: '@Ignore\n public class UrgentTest {\n\n @Test\n public void testIt() {\n Assert.assertEquals(\"expected\", \"actual\");\n }\n }' Configure the inspection: Use the Only report annotations without reason option to only report the cases when no reason is specified as the annotation's 'value' attribute.",
+ "markdown": "Reports usages of JUnit 4's `@Ignore` or JUnit 5's `@Disabled` annotations. It is considered a code smell to have tests annotated with these annotations for a long time, especially when no reason is specified.\n\n**Example:**\n\n\n @Ignore\n public class UrgentTest {\n\n @Test\n public void testIt() {\n Assert.assertEquals(\"expected\", \"actual\");\n }\n }\n\n\nConfigure the inspection:\n\n* Use the **Only report annotations without reason** option to only report the cases when no reason is specified as the annotation's `value` attribute."
},
"defaultConfiguration": {
"enabled": false,
@@ -13762,7 +13826,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -13796,7 +13860,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13863,8 +13927,8 @@
"relationships": [
{
"target": {
- "id": "Java/Test frameworks",
- "index": 98,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -13876,13 +13940,13 @@
]
},
{
- "id": "ConfusingElse",
+ "id": "InnerClassReferencedViaSubclass",
"shortDescription": {
- "text": "Redundant 'else'"
+ "text": "Inner class referenced via subclass"
},
"fullDescription": {
- "text": "Reports redundant 'else' keywords in 'if'—'else' statements and statement chains. The 'else' keyword is redundant when it cannot be reached because the code in previous branches ends with the 'return', 'throw', 'break', or 'continue' statement. In this case, the statements from the 'else' branch can be placed after the 'if' statement, and the 'else' keyword can be removed. Example: 'if (name == null) {\n throw new IllegalArgumentException();\n } else {\n System.out.println(name);\n }' After the quick-fix is applied: 'if (name == null) {\n throw new IllegalArgumentException();\n }\n System.out.println(name);' Disable the Report when there are no more statements after the 'if' statement option to ignore the cases in which the 'if'—'else' statement is the last statement in a code block.",
- "markdown": "Reports redundant `else` keywords in `if`---`else` statements and statement chains.\n\n\nThe `else` keyword is redundant when it cannot be reached because the code in previous branches ends with the\n`return`, `throw`, `break`, or `continue` statement. In this case,\nthe statements from the `else` branch can be placed after the `if` statement, and the\n`else` keyword can be removed.\n\nExample:\n\n\n if (name == null) {\n throw new IllegalArgumentException();\n } else {\n System.out.println(name);\n }\n\nAfter the quick-fix is applied:\n\n\n if (name == null) {\n throw new IllegalArgumentException();\n }\n System.out.println(name);\n\nDisable the **Report when there are no more statements after the 'if' statement** option to ignore the cases in which the `if`---`else` statement is the last statement in a code block."
+ "text": "Reports accesses of inner and nested classes where the call is qualified by a subclass of the declaring class, rather than the declaring class itself. Java allows such qualification, but such accesses may indicate a subtle confusion of inheritance and overriding. Example: 'class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Sub.Inner s = new Sub.Inner(); // 'Inner' class is declared in 'Super' class, but referenced via 'Sub' class\n }\n }' After the quick-fix is applied: 'class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Super.Inner s = new Super.Inner();\n }\n }'",
+ "markdown": "Reports accesses of inner and nested classes where the call is qualified by a subclass of the declaring class, rather than the declaring class itself.\n\n\nJava allows such qualification, but such accesses may indicate a subtle confusion of inheritance and overriding.\n\n**Example:**\n\n\n class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Sub.Inner s = new Sub.Inner(); // 'Inner' class is declared in 'Super' class, but referenced via 'Sub' class\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Super.Inner s = new Super.Inner();\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -13897,8 +13961,8 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
- "index": 26,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -13910,13 +13974,13 @@
]
},
{
- "id": "InnerClassReferencedViaSubclass",
+ "id": "ConfusingElse",
"shortDescription": {
- "text": "Inner class referenced via subclass"
+ "text": "Redundant 'else'"
},
"fullDescription": {
- "text": "Reports accesses of inner and nested classes where the call is qualified by a subclass of the declaring class, rather than the declaring class itself. Java allows such qualification, but such accesses may indicate a subtle confusion of inheritance and overriding. Example: 'class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Sub.Inner s = new Sub.Inner(); // 'Inner' class is declared in 'Super' class, but referenced via 'Sub' class\n }\n }' After the quick-fix is applied: 'class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Super.Inner s = new Super.Inner();\n }\n }'",
- "markdown": "Reports accesses of inner and nested classes where the call is qualified by a subclass of the declaring class, rather than the declaring class itself.\n\n\nJava allows such qualification, but such accesses may indicate a subtle confusion of inheritance and overriding.\n\n**Example:**\n\n\n class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Sub.Inner s = new Sub.Inner(); // 'Inner' class is declared in 'Super' class, but referenced via 'Sub' class\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Super {\n static class Inner {}\n }\n\n class Sub extends Super {\n void test() {\n Super.Inner s = new Super.Inner();\n }\n }\n"
+ "text": "Reports redundant 'else' keywords in 'if'—'else' statements and statement chains. The 'else' keyword is redundant when all previous branches end with a 'return', 'throw', 'break', or 'continue' statement. In this case, the statements from the 'else' branch can be placed after the 'if' statement, and the 'else' keyword can be removed. Example: 'if (name == null) {\n throw new IllegalArgumentException();\n } else {\n System.out.println(name);\n }' After the quick-fix is applied: 'if (name == null) {\n throw new IllegalArgumentException();\n }\n System.out.println(name);' Disable the Report when there are no more statements after the 'if' statement option to ignore cases where the 'if'—'else' statement is the last statement in a code block.",
+ "markdown": "Reports redundant `else` keywords in `if`---`else` statements and statement chains.\n\n\nThe `else` keyword is redundant when all previous branches end with a\n`return`, `throw`, `break`, or `continue` statement. In this case,\nthe statements from the `else` branch can be placed after the `if` statement, and the\n`else` keyword can be removed.\n\n**Example:**\n\n\n if (name == null) {\n throw new IllegalArgumentException();\n } else {\n System.out.println(name);\n }\n\nAfter the quick-fix is applied:\n\n\n if (name == null) {\n throw new IllegalArgumentException();\n }\n System.out.println(name);\n\nDisable the **Report when there are no more statements after the 'if' statement** option to ignore cases where the `if`---`else` statement is the last statement in a code block."
},
"defaultConfiguration": {
"enabled": false,
@@ -13931,8 +13995,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Control flow issues",
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -13966,7 +14030,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -14000,7 +14064,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -14014,7 +14078,7 @@
{
"id": "ClassMayBeInterface",
"shortDescription": {
- "text": "Abstract class may be interface"
+ "text": "Abstract 'class' may be 'interface'"
},
"fullDescription": {
"text": "Reports 'abstract' classes that can be converted to interfaces. Using interfaces instead of classes is preferable as Java doesn't support multiple class inheritance, while a class can implement multiple interfaces. A class may be converted to an interface if it has no superclasses (other than Object), has only 'public static final' fields, 'public abstract' methods, and 'public' inner classes. Example: 'abstract class Example {\n public static final int MY_CONST = 42;\n public abstract void foo();\n}\n\nclass Inheritor extends Example {\n @Override\n public void foo() {\n System.out.println(MY_CONST);\n }\n}' After the quick-fix is applied: 'interface Example {\n int MY_CONST = 42;\n void foo();\n}\n\nclass Inheritor implements Example {\n @Override\n public void foo() {\n System.out.println(MY_CONST);\n }\n}' Configure the inspection: Use the Report classes containing non-abstract methods when using Java 8 option to report only the classes with 'static' methods and non-abstract methods that can be converted to 'default' methods (only applicable to language level of 8 or higher).",
@@ -14034,7 +14098,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -14048,7 +14112,7 @@
{
"id": "UnnecessaryCallToStringValueOf",
"shortDescription": {
- "text": "Unnecessary conversion to String"
+ "text": "Unnecessary conversion to 'String'"
},
"fullDescription": {
"text": "Reports calls to static methods like 'String.valueOf()' or 'Integer.toString()' when they are used in a string concatenation or as an argument of a library method in which the explicit string conversion is not needed. Example: 'System.out.println(\"Number: \" + Integer.toString(count));' After the quick-fix is applied: 'System.out.println(\"Number: \" + count);' Library methods in which explicit string conversion is considered redundant: Classes 'java.io.PrintWriter', 'java.io.PrintStream' 'print()', 'println()' Classes 'java.lang.StringBuilder', 'java.lang.StringBuffer' 'append()' Class 'org.slf4j.Logger' 'trace()', 'debug()', 'info()', 'warn()', 'error()'",
@@ -14082,7 +14146,7 @@
{
"id": "StringReplaceableByStringBuffer",
"shortDescription": {
- "text": "Non-constant String can be replaced with StringBuilder"
+ "text": "Non-constant 'String' can be replaced with 'StringBuilder'"
},
"fullDescription": {
"text": "Reports variables declared as 'java.lang.String' that are repeatedly appended to. Such variables could be declared more efficiently as 'java.lang.StringBuffer' or 'java.lang.StringBuilder'. Example: 'String s = \"\";\n for (int i = 0; i < names.length; i++) {\n String name = names[i] + (i == names.length - 1 ? \"\" : \" \");\n s = s + name;\n }' Such a loop can be replaced with: 'StringBuilder s = new StringBuilder();\n for (int i = 0; i < names.length; i++) {\n String name = names[i] + (i == names.length - 1 ? \"\" : \" \");\n s.append(name);\n }' Or even with: 'String s = String.join(\" \", names);' Use the option to make this inspection only report when the variable is appended to in a loop.",
@@ -14153,8 +14217,8 @@
"text": "'Map' or 'Set' may contain 'URL' objects"
},
"fullDescription": {
- "text": "Reports instantiations of 'java.util.Set' and 'java.util.Map' that contain 'java.net.URL' objects. Adding 'URL' objects to such collections can cause performance problems because of calls to the 'equals()' and 'hashCode()' methods of 'URL'. 'URL''s 'equals()' and 'hashCode()' methods use a DNS lookup, which depending on the availability of the network and the speed of the DNS server can cause significant delays. Example: 'Set<URL> set = new HashSet<URL>();'",
- "markdown": "Reports instantiations of `java.util.Set` and `java.util.Map` that contain `java.net.URL` objects.\n\n\nAdding `URL` objects to such collections can cause performance problems because of calls to\nthe `equals()` and `hashCode()` methods of `URL`.\n\n\n`URL`'s `equals()` and\n`hashCode()` methods use a DNS lookup, which depending on the availability of the network and the speed of the DNS server can\ncause significant delays.\n\n**Example:**\n\n\n Set<URL> set = new HashSet<URL>();\n"
+ "text": "Reports 'java.util.Set' and 'java.util.Map' variables that contain 'java.net.URL' objects. Such collections will call the 'equals()' and 'hashCode()' methods on inserted objects, which can cause performance problems on '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: 'Set<URL> set = new HashSet<URL>();'",
+ "markdown": "Reports `java.util.Set` and `java.util.Map` variables that contain `java.net.URL` objects. Such collections will call the `equals()` and `hashCode()` methods on inserted objects, which can cause performance problems on `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 Set<URL> set = new HashSet<URL>();\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -14272,7 +14336,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -14306,7 +14370,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -14340,7 +14404,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -14374,7 +14438,41 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JavadocDeclaration",
+ "shortDescription": {
+ "text": "Javadoc declaration problems"
+ },
+ "fullDescription": {
+ "text": "Reports Javadoc comments and tags with the following problems: invalid tag names incomplete tag descriptions duplicated tags missing Javadoc descriptions Example: '/**\n * Invalid tag name\n * @poram param description\n */\n public void sample(int param){\n }' Example: '/**\n * Pointing to itself {@link #sample(int)}\n */\n public void sample(int param){\n }' Quick-fix adds the unknown Javadoc tag to the list of user defined additional tags. Use textfield below to define additional Javadoc tags. Use first checkbox to ignore duplicated 'throws' tag. Use second checkbox to ignore problem with missing or incomplete first sentence in the description. Use third checkbox to ignore references pointing to itself.",
+ "markdown": "Reports Javadoc comments and tags with the following problems:\n\n* invalid tag names\n* incomplete tag descriptions\n* duplicated tags\n* missing Javadoc descriptions\n\nExample:\n\n\n /**\n * Invalid tag name\n * @poram param description\n */\n public void sample(int param){\n }\n\nExample:\n\n\n /**\n * Pointing to itself {@link #sample(int)}\n */\n public void sample(int param){\n }\n\nQuick-fix adds the unknown Javadoc tag to the list of user defined additional tags.\n\nUse textfield below to define additional Javadoc tags.\n\nUse first checkbox to ignore duplicated 'throws' tag.\n\nUse second checkbox to ignore problem with missing or incomplete first sentence in the description.\n\nUse third checkbox to ignore references pointing to itself."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Javadoc",
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -14408,7 +14506,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -14425,8 +14523,8 @@
"text": "Local variable hides field"
},
"fullDescription": {
- "text": "Reports local variables named identically a field of a surrounding class. As a result of such naming, you may accidentally use the variable where the identically named field is intended. A quick-fix is suggested to rename the variable. Example: 'public class Foo {\n public Object foo;\n\n void bar() {\n Object o = new Object() {\n void baz() {\n Object foo; // Local variable 'foo' hides field in class 'Foo'\n }\n };\n }\n }' You can configure the following options for this inspection: Ignore non-accessible fields - ignore local variables named identically to superclass fields that are not visible (for example, because they are private). Ignore local variables in a static context hiding non-static fields - for example when the local variable is inside a static method or inside a method which is inside a static inner class.",
- "markdown": "Reports local variables named identically a field of a surrounding class. As a result of such naming, you may accidentally use the variable where the identically named field is intended.\n\nA quick-fix is suggested to rename the variable.\n\n**Example:**\n\n\n public class Foo {\n public Object foo;\n\n void bar() {\n Object o = new Object() {\n void baz() {\n Object foo; // Local variable 'foo' hides field in class 'Foo'\n }\n };\n }\n }\n\n\nYou can configure the following options for this inspection:\n\n1. **Ignore non-accessible fields** - ignore local variables named identically to superclass fields that are not visible (for example, because they are private).\n2. **Ignore local variables in a static context hiding non-static fields** - for example when the local variable is inside a static method or inside a method which is inside a static inner class."
+ "text": "Reports local variables named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the variable where the identically named field is intended. A quick-fix is suggested to rename the variable. Example: 'public class Foo {\n public Object foo;\n\n void bar() {\n Object o = new Object() {\n void baz() {\n Object foo; // Local variable 'foo' hides field in class 'Foo'\n }\n };\n }\n }' You can configure the following options for this inspection: Ignore non-accessible fields - ignore local variables named identically to superclass fields that are not visible (for example, because they are private). Ignore local variables in a static context hiding non-static fields - for example when the local variable is inside a static method or inside a method which is inside a static inner class.",
+ "markdown": "Reports local variables named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the variable where the identically named field is intended.\n\nA quick-fix is suggested to rename the variable.\n\n**Example:**\n\n\n public class Foo {\n public Object foo;\n\n void bar() {\n Object o = new Object() {\n void baz() {\n Object foo; // Local variable 'foo' hides field in class 'Foo'\n }\n };\n }\n }\n\n\nYou can configure the following options for this inspection:\n\n1. **Ignore non-accessible fields** - ignore local variables named identically to superclass fields that are not visible (for example, because they are private).\n2. **Ignore local variables in a static context hiding non-static fields** - for example when the local variable is inside a static method or inside a method which is inside a static inner class."
},
"defaultConfiguration": {
"enabled": false,
@@ -14442,7 +14540,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -14510,7 +14608,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -14544,7 +14642,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -14556,16 +14654,16 @@
]
},
{
- "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",
@@ -14577,8 +14675,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Numeric issues",
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -14590,16 +14688,16 @@
]
},
{
- "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",
@@ -14611,8 +14709,8 @@
"relationships": [
{
"target": {
- "id": "Java/Numeric issues",
- "index": 27,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -14646,7 +14744,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -14680,7 +14778,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -14714,7 +14812,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -14748,7 +14846,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -14762,7 +14860,7 @@
{
"id": "MethodCanBeVariableArityMethod",
"shortDescription": {
- "text": "Method can be varargs method"
+ "text": "Method can have varargs parameter"
},
"fullDescription": {
"text": "Reports methods that can be converted to variable arity methods. Example: 'void process(String name, Object[] objects);' After the quick-fix is applied: 'void process(String name, Object... objects);' This inspection only reports if the language level of the project or module is 5 or higher.",
@@ -14782,7 +14880,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -14816,7 +14914,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -14833,8 +14931,8 @@
"text": "Stream API call chain can be replaced with loop"
},
"fullDescription": {
- "text": "Reports Stream API chains, 'Iterable.forEach', and 'Map.forEach' calls that can be automatically converted into classical loops. Example: 'String joinNonEmpty(List<String> list) {\n return list.stream() // Stream can be converted to loop\n .filter(s -> !s.isEmpty())\n .map(String::trim)\n .collect(Collectors.joining(\", \"));\n }' After the quick-fix is applied: 'String joinNonEmpty(List<String> list) {\n StringJoiner joiner = new StringJoiner(\", \");\n for (String s : list) {\n if (!s.isEmpty()) {\n String trim = s.trim();\n joiner.add(trim);\n }\n }\n return joiner.toString();\n }' Note that sometimes this inspection might cause slight semantic changes. Special care should be taken when it comes to short-circuiting, as it's not specified how many elements will be actually read when the stream short-circuits. Configure the inspection: Use the Iterate unknown Stream sources via Stream.iterator() option to suggest conversions for streams with unrecognized source. In this case, iterator will be created from the stream. For example, when checkbox is selected, the conversion will be suggested here: 'List<ProcessHandle> handles = ProcessHandle.allProcesses().collect(Collectors.toList());' In this case, the result will be as follows: 'List<ProcessHandle> handles = new ArrayList<>();\n for (Iterator<ProcessHandle> it = ProcessHandle.allProcesses().iterator(); it.hasNext(); ) {\n ProcessHandle allProcess = it.next();\n handles.add(allProcess);\n }' New in 2017.1",
- "markdown": "Reports Stream API chains, `Iterable.forEach`, and `Map.forEach` calls that can be automatically converted into classical loops.\n\nExample:\n\n\n String joinNonEmpty(List<String> list) {\n return list.stream() // Stream can be converted to loop\n .filter(s -> !s.isEmpty())\n .map(String::trim)\n .collect(Collectors.joining(\", \"));\n }\n\nAfter the quick-fix is applied:\n\n\n String joinNonEmpty(List<String> list) {\n StringJoiner joiner = new StringJoiner(\", \");\n for (String s : list) {\n if (!s.isEmpty()) {\n String trim = s.trim();\n joiner.add(trim);\n }\n }\n return joiner.toString();\n }\n\n\nNote that sometimes this inspection might cause slight semantic changes.\nSpecial care should be taken when it comes to short-circuiting, as it's not specified how many elements will be actually read when\nthe stream short-circuits.\n\nConfigure the inspection:\n\nUse the **Iterate unknown Stream sources via Stream.iterator()** option to suggest conversions for streams with unrecognized source.\nIn this case, iterator will be created from the stream.\nFor example, when checkbox is selected, the conversion will be suggested here:\n\n\n List<ProcessHandle> handles = ProcessHandle.allProcesses().collect(Collectors.toList());\n\nIn this case, the result will be as follows:\n\n\n List<ProcessHandle> handles = new ArrayList<>();\n for (Iterator<ProcessHandle> it = ProcessHandle.allProcesses().iterator(); it.hasNext(); ) {\n ProcessHandle allProcess = it.next();\n handles.add(allProcess);\n }\n\nNew in 2017.1"
+ "text": "Reports Stream API chains, 'Iterable.forEach()', and 'Map.forEach()' calls that can be automatically converted into classical loops. Example: 'String joinNonEmpty(List<String> list) {\n return list.stream() // Stream can be converted to loop\n .filter(s -> !s.isEmpty())\n .map(String::trim)\n .collect(Collectors.joining(\", \"));\n }' After the quick-fix is applied: 'String joinNonEmpty(List<String> list) {\n StringJoiner joiner = new StringJoiner(\", \");\n for (String s : list) {\n if (!s.isEmpty()) {\n String trim = s.trim();\n joiner.add(trim);\n }\n }\n return joiner.toString();\n }' Note that sometimes this inspection might cause slight semantic changes. Special care should be taken when it comes to short-circuiting, as it's not specified how many elements will be actually read when the stream short-circuits. Stream API appeared in Java 8. This inspection can help to downgrade for backward compatibility with earlier Java versions. Configure the inspection: Use the Iterate unknown Stream sources via Stream.iterator() option to suggest conversions for streams with unrecognized source. In this case, iterator will be created from the stream. For example, when checkbox is selected, the conversion will be suggested here: 'List<ProcessHandle> handles = ProcessHandle.allProcesses().collect(Collectors.toList());' In this case, the result will be as follows: 'List<ProcessHandle> handles = new ArrayList<>();\n for (Iterator<ProcessHandle> it = ProcessHandle.allProcesses().iterator(); it.hasNext(); ) {\n ProcessHandle allProcess = it.next();\n handles.add(allProcess);\n }' New in 2017.1",
+ "markdown": "Reports Stream API chains, `Iterable.forEach()`, and `Map.forEach()` calls that can be automatically converted into classical loops.\n\n**Example:**\n\n\n String joinNonEmpty(List<String> list) {\n return list.stream() // Stream can be converted to loop\n .filter(s -> !s.isEmpty())\n .map(String::trim)\n .collect(Collectors.joining(\", \"));\n }\n\nAfter the quick-fix is applied:\n\n\n String joinNonEmpty(List<String> list) {\n StringJoiner joiner = new StringJoiner(\", \");\n for (String s : list) {\n if (!s.isEmpty()) {\n String trim = s.trim();\n joiner.add(trim);\n }\n }\n return joiner.toString();\n }\n\n\nNote that sometimes this inspection might cause slight semantic changes.\nSpecial care should be taken when it comes to short-circuiting, as it's not specified how many elements will be actually read when\nthe stream short-circuits.\n\n\n*Stream API* appeared in Java 8.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nConfigure the inspection:\n\nUse the **Iterate unknown Stream sources via Stream.iterator()** option to suggest conversions for streams with unrecognized source.\nIn this case, iterator will be created from the stream.\nFor example, when checkbox is selected, the conversion will be suggested here:\n\n\n List<ProcessHandle> handles = ProcessHandle.allProcesses().collect(Collectors.toList());\n\nIn this case, the result will be as follows:\n\n\n List<ProcessHandle> handles = new ArrayList<>();\n for (Iterator<ProcessHandle> it = ProcessHandle.allProcesses().iterator(); it.hasNext(); ) {\n ProcessHandle allProcess = it.next();\n handles.add(allProcess);\n }\n\nNew in 2017.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -14964,40 +15062,6 @@
]
},
{
- "id": "MalformedSetUpTearDown",
- "shortDescription": {
- "text": "Malformed 'setUp()' or 'tearDown()' method"
- },
- "fullDescription": {
- "text": "Reports JUnit 3 'setUp()' or 'tearDown()' methods that either are not declared 'public', do not return 'void', or take arguments. Such 'setUp()' or 'tearDown()' methods are most likely created unintentionally, and will not be executed by JUnit test runners. For example: 'public class WeightyTest extends TestCase {\n private File file;\n private int setUp(String prefix) throws IOException {\n file = File.createTempFile(prefix, \".tmp\");\n return 0;\n }\n\n // ... tests go here\n }'",
- "markdown": "Reports JUnit 3 `setUp()` or `tearDown()` methods that either are not declared `public`, do not return `void`, or take arguments. Such `setUp()` or `tearDown()` methods are most likely created unintentionally, and will not be executed by JUnit test runners.\n\nFor example:\n\n\n public class WeightyTest extends TestCase {\n private File file;\n private int setUp(String prefix) throws IOException {\n file = File.createTempFile(prefix, \".tmp\");\n return 0;\n }\n\n // ... tests go here\n }\n"
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
"id": "SlowAbstractSetRemoveAll",
"shortDescription": {
"text": "Call to 'set.removeAll(list)' may work slowly"
@@ -15054,7 +15118,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -15088,7 +15152,7 @@
{
"target": {
"id": "Java/Memory",
- "index": 128,
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -15122,7 +15186,7 @@
{
"target": {
"id": "Java/Naming conventions/Class",
- "index": 56,
+ "index": 57,
"toolComponent": {
"name": "QDJVM"
}
@@ -15156,7 +15220,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -15170,7 +15234,7 @@
{
"id": "SystemGC",
"shortDescription": {
- "text": "Calls to 'System.gc()' or 'Runtime.gc()'"
+ "text": "Call to 'System.gc()' or 'Runtime.gc()'"
},
"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.",
@@ -15190,7 +15254,7 @@
{
"target": {
"id": "Java/Memory",
- "index": 128,
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -15224,7 +15288,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -15236,16 +15300,16 @@
]
},
{
- "id": "SetReplaceableByEnumSet",
+ "id": "InnerClassMayBeStatic",
"shortDescription": {
- "text": "'Set' can be replaced with 'EnumSet'"
+ "text": "Inner class may be 'static'"
},
"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 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": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -15257,8 +15321,8 @@
"relationships": [
{
"target": {
- "id": "Java/Performance",
- "index": 10,
+ "id": "Java/Memory",
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -15270,16 +15334,16 @@
]
},
{
- "id": "Java9UndeclaredServiceUsage",
+ "id": "SetReplaceableByEnumSet",
"shortDescription": {
- "text": "Usage of service not declared in 'module-info'"
+ "text": "'Set' can be replaced with 'EnumSet'"
},
"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 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",
@@ -15291,8 +15355,8 @@
"relationships": [
{
"target": {
- "id": "Java/Visibility",
- "index": 76,
+ "id": "Java/Performance",
+ "index": 10,
"toolComponent": {
"name": "QDJVM"
}
@@ -15304,13 +15368,13 @@
]
},
{
- "id": "InnerClassMayBeStatic",
+ "id": "Java9UndeclaredServiceUsage",
"shortDescription": {
- "text": "Inner class may be 'static'"
+ "text": "Usage of service not declared in 'module-info'"
},
"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 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": true,
@@ -15325,8 +15389,8 @@
"relationships": [
{
"target": {
- "id": "Java/Memory",
- "index": 128,
+ "id": "Java/Visibility",
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -15428,7 +15492,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -15474,6 +15538,40 @@
]
},
{
+ "id": "ReplaceWithJavadoc",
+ "shortDescription": {
+ "text": "Comment replaceable with Javadoc"
+ },
+ "fullDescription": {
+ "text": "Reports a regular comment that belongs to a field, method, or class that can be replaced with a Javadoc comment. Example: 'public class Main {\n /*\n * Hello,\n */\n // World!\n void f() {\n }\n }' After the quick-fix is applied: 'public class Main {\n /**\n * Hello,\n * World!\n */\n void f() {\n }\n }'",
+ "markdown": "Reports a regular comment that belongs to a field, method, or class that can be replaced with a Javadoc comment.\n\n**Example:**\n\n\n public class Main {\n /*\n * Hello,\n */\n // World!\n void f() {\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class Main {\n /**\n * Hello,\n * World!\n */\n void f() {\n }\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "ideaSeverity": "INFORMATION",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Javadoc",
+ "index": 54,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "WrapperTypeMayBePrimitive",
"shortDescription": {
"text": "Wrapper type may be primitive"
@@ -15530,7 +15628,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -15598,7 +15696,7 @@
{
"target": {
"id": "Java/Modularization issues",
- "index": 52,
+ "index": 53,
"toolComponent": {
"name": "QDJVM"
}
@@ -15615,8 +15713,8 @@
"text": "Enumeration can be iteration"
},
"fullDescription": {
- "text": "Reports calls to 'Enumeration' methods that are used on collections and may be replaced with equivalent 'Iterator' constructs. Example: 'Enumeration<String> keys = map.keys();\n while (keys.hasMoreElements()) {\n String name = keys.nextElement();\n }'\n After the quick-fix is applied: 'Iterator<String> iterator = map.keySet().iterator();\n while (iterator.hasNext()) {\n String name = iterator.next();\n }'",
- "markdown": "Reports calls to `Enumeration` methods that are used on collections and may be replaced with equivalent `Iterator` constructs.\n\n**Example:**\n\n Enumeration<String> keys = map.keys();\n while (keys.hasMoreElements()) {\n String name = keys.nextElement();\n }\n\nAfter the quick-fix is applied:\n\n Iterator<String> iterator = map.keySet().iterator();\n while (iterator.hasNext()) {\n String name = iterator.next();\n }\n"
+ "text": "Reports calls to 'Enumeration' methods that are used on collections and may be replaced with equivalent 'Iterator' constructs. Example: 'Enumeration<String> keys = map.keys();\n while (keys.hasMoreElements()) {\n String name = keys.nextElement();\n }' After the quick-fix is applied: 'Iterator<String> iterator = map.keySet().iterator();\n while (iterator.hasNext()) {\n String name = iterator.next();\n }'",
+ "markdown": "Reports calls to `Enumeration` methods that are used on collections and may be replaced with equivalent `Iterator` constructs.\n\n**Example:**\n\n\n Enumeration<String> keys = map.keys();\n while (keys.hasMoreElements()) {\n String name = keys.nextElement();\n }\n\nAfter the quick-fix is applied:\n\n\n Iterator<String> iterator = map.keySet().iterator();\n while (iterator.hasNext()) {\n String name = iterator.next();\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -15666,7 +15764,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -15700,7 +15798,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -15734,7 +15832,7 @@
{
"target": {
"id": "Java/JavaBeans issues",
- "index": 106,
+ "index": 105,
"toolComponent": {
"name": "QDJVM"
}
@@ -15782,7 +15880,7 @@
{
"id": "ErrorRethrown",
"shortDescription": {
- "text": "'java.lang.Error' not rethrown"
+ "text": "'Error' not rethrown"
},
"fullDescription": {
"text": "Reports 'try' statements that catch 'java.lang.Error' or any of its subclasses and do not rethrow the error. Statements that catch 'java.lang.ThreadDeath' are not reported. Example: 'try {\n executeTests(request);\n }\n catch (OutOfMemoryError ex) { // warning: Error 'ex' not rethrown\n return false;\n }'",
@@ -15814,13 +15912,13 @@
]
},
{
- "id": "UnnecessaryInterfaceModifier",
+ "id": "CyclicPackageDependency",
"shortDescription": {
- "text": "Unnecessary interface modifier"
+ "text": "Cyclic package dependency"
},
"fullDescription": {
- "text": "Reports any redundant modifiers on interfaces or interface components and suggests removing them. For example, the 'abstract' and 'public' modifiers are redundant and will be reported by the inspection: 'abstract interface Printer {\n public int size();\n }'",
- "markdown": "Reports any redundant modifiers on interfaces or interface components and suggests removing them.\n\nFor example, the `abstract` and `public` modifiers are\nredundant and will be reported by the inspection:\n\n\n abstract interface Printer {\n public int size();\n }\n"
+ "text": "Reports packages that are mutually or cyclically dependent on other packages. Such cyclic dependencies make code fragile and hard to maintain. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.",
+ "markdown": "Reports packages that are mutually or cyclically dependent on other packages.\n\nSuch cyclic dependencies make code fragile and hard to maintain.\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,
@@ -15835,8 +15933,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Dependency issues",
+ "index": 108,
"toolComponent": {
"name": "QDJVM"
}
@@ -15848,13 +15946,13 @@
]
},
{
- "id": "CyclicPackageDependency",
+ "id": "UnsatisfiedRange",
"shortDescription": {
- "text": "Cyclic package dependency"
+ "text": "Return value is outside of declared range"
},
"fullDescription": {
- "text": "Reports packages that are mutually or cyclically dependent on other packages. Such cyclic dependencies make code fragile and hard to maintain. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor.",
- "markdown": "Reports packages that are mutually or cyclically dependent on other packages.\n\nSuch cyclic dependencies make code fragile and hard to maintain.\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 numeric values returned from methods that don't conform to the declared method return range. You can declare method return range using a number of annotations: 'org.jetbrains.annotations.Range' from JetBrains annotations package (specify 'from' and 'to') 'org.checkerframework.common.value.qual.IntRange' from Checker Framework annotations package (specify 'from' and 'to') 'org.checkerframework.checker.index.qual.GTENegativeOne' from Checker Framework annotations package (range is '>= -1') 'org.checkerframework.checker.index.qual.NonNegative' from Checker Framework annotations package (range is '>= 0') 'org.checkerframework.checker.index.qual.Positive' from Checker Framework annotations package (range is '> 0') 'javax.annotation.Nonnegative' from JSR 305 annotations package (range is '>= 0') 'javax.validation.constraints.Min' (specify minimum value) 'javax.validation.constraints.Max' (specify maximum value) Example: '@Range(from = 0, to = Integer.MAX_VALUE) int getValue() {\n // Warning: -1 is outside of declared range\n return -1;\n }' New in 2021.2",
+ "markdown": "Reports numeric values returned from methods that don't conform to the declared method return range. You can declare method return range using a number of annotations:\n\n* `org.jetbrains.annotations.Range` from JetBrains annotations package (specify 'from' and 'to')\n* `org.checkerframework.common.value.qual.IntRange` from Checker Framework annotations package (specify 'from' and 'to')\n* `org.checkerframework.checker.index.qual.GTENegativeOne` from Checker Framework annotations package (range is '\\>= -1')\n* `org.checkerframework.checker.index.qual.NonNegative` from Checker Framework annotations package (range is '\\>= 0')\n* `org.checkerframework.checker.index.qual.Positive` from Checker Framework annotations package (range is '\\> 0')\n* `javax.annotation.Nonnegative` from JSR 305 annotations package (range is '\\>= 0')\n* `javax.validation.constraints.Min` (specify minimum value)\n* `javax.validation.constraints.Max` (specify maximum value)\n\nExample:\n\n\n @Range(from = 0, to = Integer.MAX_VALUE) int getValue() {\n // Warning: -1 is outside of declared range\n return -1;\n }\n\nNew in 2021.2"
},
"defaultConfiguration": {
"enabled": false,
@@ -15869,8 +15967,8 @@
"relationships": [
{
"target": {
- "id": "Java/Dependency issues",
- "index": 109,
+ "id": "Java/Probable bugs/Nullability problems",
+ "index": 132,
"toolComponent": {
"name": "QDJVM"
}
@@ -15916,13 +16014,13 @@
]
},
{
- "id": "UnsatisfiedRange",
+ "id": "ClassWithoutNoArgConstructor",
"shortDescription": {
- "text": "Return value is outside of declared range"
+ "text": "Class without no-arg constructor"
},
"fullDescription": {
- "text": "Reports numeric values returned from methods that don't conform to the declared method return range. You can declare method return range using a number of annotations: 'org.jetbrains.annotations.Range' from JetBrains annotations package (specify 'from' and 'to') 'org.checkerframework.common.value.qual.IntRange' from Checker Framework annotations package (specify 'from' and 'to') 'org.checkerframework.checker.index.qual.GTENegativeOne' from Checker Framework annotations package (range is '>= -1') 'org.checkerframework.checker.index.qual.NonNegative' from Checker Framework annotations package (range is '>= 0') 'org.checkerframework.checker.index.qual.Positive' from Checker Framework annotations package (range is '> 0') 'javax.annotation.Nonnegative' from JSR 305 annotations package (range is '>= 0') 'javax.validation.constraints.Min' (specify minimum value) 'javax.validation.constraints.Max' (specify maximum value) Example: '@Range(from = 0, to = Integer.MAX_VALUE) int getValue() {\n // Warning: -1 is outside of declared range\n return -1;\n }' New in 2021.2",
- "markdown": "Reports numeric values returned from methods that don't conform to the declared method return range. You can declare method return range using a number of annotations:\n\n* `org.jetbrains.annotations.Range` from JetBrains annotations package (specify 'from' and 'to')\n* `org.checkerframework.common.value.qual.IntRange` from Checker Framework annotations package (specify 'from' and 'to')\n* `org.checkerframework.checker.index.qual.GTENegativeOne` from Checker Framework annotations package (range is '\\>= -1')\n* `org.checkerframework.checker.index.qual.NonNegative` from Checker Framework annotations package (range is '\\>= 0')\n* `org.checkerframework.checker.index.qual.Positive` from Checker Framework annotations package (range is '\\> 0')\n* `javax.annotation.Nonnegative` from JSR 305 annotations package (range is '\\>= 0')\n* `javax.validation.constraints.Min` (specify minimum value)\n* `javax.validation.constraints.Max` (specify maximum value)\n\nExample:\n\n\n @Range(from = 0, to = Integer.MAX_VALUE) int getValue() {\n // Warning: -1 is outside of declared range\n return -1;\n }\n\nNew in 2021.2"
+ "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."
},
"defaultConfiguration": {
"enabled": false,
@@ -15937,8 +16035,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs/Nullability problems",
- "index": 134,
+ "id": "Java/JavaBeans issues",
+ "index": 105,
"toolComponent": {
"name": "QDJVM"
}
@@ -15972,41 +16070,7 @@
{
"target": {
"id": "Java/Dependency issues",
- "index": 109,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "ClassWithoutNoArgConstructor",
- "shortDescription": {
- "text": "Class without no-arg constructor"
- },
- "fullDescription": {
- "text": "Reports classes without a no-argument constructor. Such constructors are necessary in some contexts. For example, if a class needs to be created by using a 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 no-argument constructor.\n\nSuch constructors are necessary in some contexts. For example, if a class needs to be created by using a reflection.\n\n\nUse the checkbox below to ignore classes without explicit constructors.\nThe compiler provides a default no-argument constructor to such classes."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JavaBeans issues",
- "index": 106,
+ "index": 108,
"toolComponent": {
"name": "QDJVM"
}
@@ -16040,7 +16104,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -16074,7 +16138,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -16125,8 +16189,8 @@
"text": "Enhanced 'switch'"
},
"fullDescription": {
- "text": "Reports enhanced 'switch' statements and expressions. Suggests replacing them with regular 'switch' statements. Example: 'boolean even = switch (condition) {\n case 1, 3, 5, 7, 9 -> false;\n default -> true;\n };' After the quick-fix is applied: 'boolean even;\n switch (condition) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 9:\n even = false;\n break;\n default:\n even = true;\n break;\n}' New in 2019.1",
- "markdown": "Reports enhanced `switch` statements and expressions. Suggests replacing them with regular `switch` statements.\n\n**Example:**\n\n\n boolean even = switch (condition) {\n case 1, 3, 5, 7, 9 -> false;\n default -> true;\n };\n\nAfter the quick-fix is applied:\n\n\n boolean even;\n switch (condition) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 9:\n even = false;\n break;\n default:\n even = true;\n break;\n }\n\nNew in 2019.1"
+ "text": "Reports enhanced 'switch' statements and expressions. Suggests replacing them with regular 'switch' statements. Example: 'boolean even = switch (condition) {\n case 1, 3, 5, 7, 9 -> false;\n default -> true;\n };' After the quick-fix is applied: 'boolean even;\n switch (condition) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 9:\n even = false;\n break;\n default:\n even = true;\n break;\n}' Enhanced 'switch' appeared in Java 14. This inspection can help to downgrade for backward compatibility with earlier Java versions. New in 2019.1",
+ "markdown": "Reports enhanced `switch` statements and expressions. Suggests replacing them with regular `switch` statements.\n\n**Example:**\n\n\n boolean even = switch (condition) {\n case 1, 3, 5, 7, 9 -> false;\n default -> true;\n };\n\nAfter the quick-fix is applied:\n\n\n boolean even;\n switch (condition) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 9:\n even = false;\n break;\n default:\n even = true;\n break;\n }\n\n\n*Enhanced* `switch` appeared in Java 14.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nNew in 2019.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -16142,7 +16206,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 14",
- "index": 103,
+ "index": 102,
"toolComponent": {
"name": "QDJVM"
}
@@ -16210,7 +16274,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 7",
- "index": 123,
+ "index": 121,
"toolComponent": {
"name": "QDJVM"
}
@@ -16256,6 +16320,40 @@
]
},
{
+ "id": "MissingJavadoc",
+ "shortDescription": {
+ "text": "Missing Javadoc"
+ },
+ "fullDescription": {
+ "text": "Reports missing Javadoc comments and tags. Example: '/**\n * Missing \"@param\" is reported (if configured).\n */\n public void sample(int param){\n }' The quick-fixes add missing tag or missing Javadoc comment: '/**\n * Missing \"@param\" is reported (if configured).\n * @param param\n */\n public void sample(int param){\n }' Inspection can be configured to ignore deprecated elements or simple accessor methods like 'getField()' or 'setField()'. You can also use options below to configure required tags and minimal required visibility for the specific code elements like method, field, class, package, module.",
+ "markdown": "Reports missing Javadoc comments and tags.\n\nExample:\n\n\n /**\n * Missing \"@param\" is reported (if configured).\n */\n public void sample(int param){\n }\n\nThe quick-fixes add missing tag or missing Javadoc comment:\n\n\n /**\n * Missing \"@param\" is reported (if configured).\n * @param param\n */\n public void sample(int param){\n }\n\n\nInspection can be configured to ignore deprecated elements or simple accessor methods like `getField()` or `setField()`.\nYou can also use options below to configure required tags and minimal required visibility for the specific code elements like method, field, class, package, module."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Javadoc",
+ "index": 54,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "AwaitWithoutCorrespondingSignal",
"shortDescription": {
"text": "'await()' without corresponding 'signal()'"
@@ -16290,13 +16388,13 @@
]
},
{
- "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,
@@ -16311,8 +16409,8 @@
"relationships": [
{
"target": {
- "id": "Java/Data flow",
- "index": 43,
+ "id": "Java/Declaration redundancy",
+ "index": 12,
"toolComponent": {
"name": "QDJVM"
}
@@ -16324,13 +16422,13 @@
]
},
{
- "id": "Java9RedundantRequiresStatement",
+ "id": "UnnecessaryLocalVariable",
"shortDescription": {
- "text": "Redundant 'requires' statement in module-info"
+ "text": "Redundant local variable"
},
"fullDescription": {
- "text": "Reports situations in which a Java 9 module 'A' requires a Java 9 module 'B', but 'A' doesn't use any package from 'B'. Also, the directive that requires the 'java.base' module is redundant. The fix deletes the 'requires' directive for such redundant dependencies. If the deleted dependency re-exported the modules that are actually used, the fix adds a 'requires' directive for these modules. New in 2017.1",
- "markdown": "Reports situations in which a Java 9 module `A` requires a Java 9 module `B`, but `A` doesn't use any package from `B`. Also, the directive that requires the `java.base` module is redundant.\n\n\nThe fix deletes the `requires` directive for such redundant dependencies.\nIf the deleted dependency re-exported the modules that are actually used, the fix adds a `requires` directive for these modules.\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,
@@ -16345,8 +16443,8 @@
"relationships": [
{
"target": {
- "id": "Java/Declaration redundancy",
- "index": 12,
+ "id": "Java/Data flow",
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -16414,7 +16512,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -16448,7 +16546,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -16482,7 +16580,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -16516,7 +16614,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -16550,7 +16648,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -16618,7 +16716,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -16635,8 +16733,8 @@
"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);' 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\nReports 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 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."
},
"defaultConfiguration": {
"enabled": false,
@@ -16698,13 +16796,13 @@
]
},
{
- "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,
@@ -16719,8 +16817,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Initialization",
+ "index": 29,
"toolComponent": {
"name": "QDJVM"
}
@@ -16732,13 +16830,13 @@
]
},
{
- "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,
@@ -16753,8 +16851,8 @@
"relationships": [
{
"target": {
- "id": "Java/Initialization",
- "index": 29,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -16771,8 +16869,8 @@
"text": "'if' can be replaced with 'switch'"
},
"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 }' The inspection is applicable 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 \nThe inspection is applicable 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 '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,
@@ -16822,7 +16920,7 @@
{
"target": {
"id": "Java/Cloning issues",
- "index": 87,
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -16856,7 +16954,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -16890,7 +16988,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -16924,7 +17022,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -16958,7 +17056,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -17026,7 +17124,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -17040,7 +17138,7 @@
{
"id": "SuspiciousMethodCalls",
"shortDescription": {
- "text": "Suspicious collections method calls"
+ "text": "Suspicious collection method call"
},
"fullDescription": {
"text": "Reports method calls on parameterized collections, where the actual argument type does not correspond to the collection's elements type. Example: 'List<Integer> list = getListOfElements();\n list.remove(\"\"); // remove is highlighted' In the inspection settings, you can disable warnings for potentially correct code like the following: 'public boolean accept(Map<Integer, String> map, Object key) {\n return map.containsKey(key);\n }'",
@@ -17060,7 +17158,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -17077,8 +17175,8 @@
"text": "Forward compatibility"
},
"fullDescription": {
- "text": "Reports Java code constructs that may fail to compile in future Java versions. The following problems are reported: Use of 'assert'>, 'enum' or _ as an identifier Use of the 'var', 'yield', or 'record' restricted identifier as a type name Unqualified calls to the 'yield' method Modifiers on the 'requires java.base' statement inside of 'module-info.java' Example: '// Since Java 14, this class will stop compiling, as 'yield' becomes a restricted identifier.\n public class yield {}' Fixing these issues timely may simplify migration to future Java versions.",
- "markdown": "Reports Java code constructs that may fail to compile in future Java versions.\n\nThe following problems are reported:\n\n* Use of `assert`\\>, `enum` or _ as an identifier\n* Use of the `var`, `yield`, or `record` restricted identifier as a type name\n* Unqualified calls to the `yield` method\n* Modifiers on the `requires java.base` statement inside of `module-info.java`\n\n**Example:**\n\n\n // Since Java 14, this class will stop compiling, as 'yield' becomes a restricted identifier.\n public class yield {} \n\nFixing these issues timely may simplify migration to future Java versions."
+ "text": "Reports Java code constructs that may fail to compile in future Java versions. The following problems are reported: Use of 'assert', 'enum' or '_' as an identifier Use of the 'var', 'yield', or 'record' restricted identifier as a type name Unqualified calls to the 'yield()' method Modifiers on the 'requires java.base' statement inside of 'module-info.java' Example: '// This previously legal class does not compile with Java 14,\n // as 'yield' became a restricted identifier.\n public class yield {}' Fixing these issues timely may simplify migration to future Java versions.",
+ "markdown": "Reports Java code constructs that may fail to compile in future Java versions.\n\nThe following problems are reported:\n\n* Use of `assert`, `enum` or `_` as an identifier\n* Use of the `var`, `yield`, or `record` restricted identifier as a type name\n* Unqualified calls to the `yield()` method\n* Modifiers on the `requires java.base` statement inside of `module-info.java`\n\n**Example:**\n\n\n // This previously legal class does not compile with Java 14,\n // as 'yield' became a restricted identifier.\n public class yield {} \n\nFixing these issues timely may simplify migration to future Java versions."
},
"defaultConfiguration": {
"enabled": true,
@@ -17094,7 +17192,7 @@
{
"target": {
"id": "Java/Java language level issues",
- "index": 110,
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -17111,8 +17209,8 @@
"text": "Diamond can be replaced with explicit type arguments"
},
"fullDescription": {
- "text": "Reports instantiation of generic classes in which the <> symbol (diamond) is used instead of type parameters. The quick-fix replaces <> (diamond) with explicit type parameters. This action can be useful to make the code compatible with Java 6. Example: 'List <String> list = new ArrayList<>()' After the quick-fix is applied: 'List <String> list = new ArrayList<String>()'",
- "markdown": "Reports instantiation of generic classes in which the **\\<\\>** symbol (diamond) is used instead of type parameters.\n\nThe quick-fix replaces **\\<\\>** (diamond) with explicit type parameters.\nThis action can be useful to make the code compatible with Java 6.\n\nExample:\n\n List <String> list = new ArrayList<>()\n\nAfter the quick-fix is applied:\n\n List <String> list = new ArrayList<String>()\n"
+ "text": "Reports instantiation of generic classes in which the <> symbol (diamond) is used instead of type parameters. The quick-fix replaces <> (diamond) with explicit type parameters. Example: 'List <String> list = new ArrayList<>()' After the quick-fix is applied: 'List <String> list = new ArrayList<String>()' Diamond operation appeared in Java 7. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports instantiation of generic classes in which the **\\<\\>** symbol (diamond) is used instead of type parameters.\n\nThe quick-fix replaces **\\<\\>** (diamond) with explicit type parameters.\n\nExample:\n\n List <String> list = new ArrayList<>()\n\nAfter the quick-fix is applied:\n\n List <String> list = new ArrayList<String>()\n\n\n*Diamond operation* appeared in Java 7.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -17162,7 +17260,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -17179,8 +17277,8 @@
"text": "Dependencies on automatic modules"
},
"fullDescription": {
- "text": "Reports usages of automatic modules in the 'requires' directive. An automatic module is unreliable since it can depend on the types on the class path, and its name and exported packages could change if and when it's converted into an explicit module. Corresponds to '-Xlint:requires-automatic' and '-Xlint:requires-transitive-automatic' Javac options. The first option increases awareness of when automatic modules are used. The second warns the authors of a module that they're putting the users of that module at risk by establishing implied readability to an automatic module. Example: '//module-info.java\n module org.printer {\n requires transitive drivers.corp.org; // reported in case 'drivers.corp.org' is an automatic module\n }' Use the Highlight only transitive dependencies option to warn only about transitive dependencies.",
- "markdown": "Reports usages of automatic modules in the `requires` directive.\n\nAn automatic\nmodule is unreliable since it can depend on the types on the class path,\nand its name and exported packages could change if and when it's\nconverted into an explicit module.\n\nCorresponds to `-Xlint:requires-automatic` and `-Xlint:requires-transitive-automatic` Javac options.\nThe first option increases awareness of when automatic modules are used.\nThe second warns the authors of a module that they're putting the users of that module at risk by establishing implied readability to an automatic module.\n\n**Example:**\n\n\n //module-info.java\n module org.printer {\n requires transitive drivers.corp.org; // reported in case 'drivers.corp.org' is an automatic module\n }\n\n\nUse the **Highlight only transitive dependencies** option to warn only about transitive dependencies."
+ "text": "Reports usages of automatic modules in a 'requires' directive. An automatic module is unreliable since it can depend on the types on the class path, and its name and exported packages can change if it's converted into an explicit module. Corresponds to '-Xlint:requires-automatic' and '-Xlint:requires-transitive-automatic' Javac options. The first option increases awareness of when automatic modules are used. The second warns the authors of a module that they're putting the users of that module at risk by establishing implied readability to an automatic module. Example: '//module-info.java\n module org.printer {\n requires transitive drivers.corp.org; // reported in case 'drivers.corp.org' is an automatic module\n }' Use the Highlight only transitive dependencies option to warn only about transitive dependencies.",
+ "markdown": "Reports usages of automatic modules in a `requires` directive.\n\nAn automatic\nmodule is unreliable since it can depend on the types on the class path,\nand its name and exported packages can change if it's\nconverted into an explicit module.\n\nCorresponds to `-Xlint:requires-automatic` and `-Xlint:requires-transitive-automatic` Javac options.\nThe first option increases awareness of when automatic modules are used.\nThe second warns the authors of a module that they're putting the users of that module at risk by establishing implied readability to an automatic module.\n\n**Example:**\n\n\n //module-info.java\n module org.printer {\n requires transitive drivers.corp.org; // reported in case 'drivers.corp.org' is an automatic module\n }\n\n\nUse the **Highlight only transitive dependencies** option to warn only about transitive dependencies."
},
"defaultConfiguration": {
"enabled": false,
@@ -17196,7 +17294,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 9",
- "index": 63,
+ "index": 64,
"toolComponent": {
"name": "QDJVM"
}
@@ -17230,7 +17328,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -17281,8 +17379,8 @@
"text": "Class can be a record"
},
"fullDescription": {
- "text": "Suggests replacing classes with records. The inspection can be useful if you need to focus on modeling immutable data rather than extensible behavior. Automatic implementation of data-driven methods, such as equals and accessors, helps to get rid of boilerplate. Note that not every class can be a record. Here are some of the restrictions: A class must contain no inheritors and must be a top-level class. All the non-static fields in class must be final. Class must contain no instance initializers, generic constructors, nor native methods. To get a full list of the restrictions, refer to the Oracle documentation. Example: 'class Point {\n private final double x;\n private final double y;\n\n Point(double x, double y) {\n this.x = x;\n this.y = y;\n }\n\n double getX() {\n return x;\n }\n\n double getY() {\n return y;\n }\n }' This record will be converted to: 'record Point(int x, int y) {\n }' This inspection only reports if the language level of the project or module is 15 preview or higher. New in 2020.3",
- "markdown": "Suggests replacing classes with records.\n\nThe inspection can be useful if you need to focus on modeling immutable data rather than extensible behavior.\nAutomatic implementation of data-driven methods, such as equals and accessors, helps to get rid of boilerplate.\n\n\nNote that not every class can be a record. Here are some of the restrictions:\n\n* A class must contain no inheritors and must be a top-level class.\n* All the non-static fields in class must be final.\n* Class must contain no instance initializers, generic constructors, nor native methods.\n\nTo get a full list of the restrictions, refer to the\n[Oracle documentation](https://docs.oracle.com/javase/specs/jls/se15/preview/specs/records-jls.html).\n\nExample:\n\n\n class Point {\n private final double x;\n private final double y;\n\n Point(double x, double y) {\n this.x = x;\n this.y = y;\n }\n\n double getX() {\n return x;\n }\n\n double getY() {\n return y;\n }\n }\n\nThis record will be converted to:\n\n\n record Point(int x, int y) {\n }\n\nThis inspection only reports if the language level of the project or module is 15 preview or higher.\n\nNew in 2020.3"
+ "text": "Suggests replacing classes with records. The inspection can be useful if you need to focus on modeling immutable data rather than extensible behavior. Automatic implementation of data-driven methods, such as equals and accessors, helps to get rid of boilerplate. Note that not every class can be a record. Here are some of the restrictions: A class must contain no inheritors and must be a top-level class. All the non-static fields in class must be final. Class must contain no instance initializers, generic constructors, nor native methods. To get a full list of the restrictions, refer to the Oracle documentation. Example: 'class Point {\n private final double x;\n private final double y;\n\n Point(double x, double y) {\n this.x = x;\n this.y = y;\n }\n\n double getX() {\n return x;\n }\n\n double getY() {\n return y;\n }\n }' After the quick-fix is applied: 'record Point(int x, int y) {\n }' Enable the Suggest renaming get/is-accessors option to allow renaming 'getX()'/'isX()' accessors to 'x()' automatically. Use the When conversion makes a member more accessible options to specify if the conversion may violate class encapsulation: Choose Do not suggest conversion option to never violate class encapsulation Choose Show affected members in conflicts view option to apply conversion with notification about encapsulation violation issues Choose Convert silently option to apply conversion silently whether encapsulation violation issues exist or not Use the Suppress conversion if class is annotated by list to exclude classes from conversion when annotated by annotations matching the specified patterns. This inspection only reports if the language level of the project or module is 16 or higher. New in 2020.3",
+ "markdown": "Suggests replacing classes with records.\n\nThe inspection can be useful if you need to focus on modeling immutable data rather than extensible behavior.\nAutomatic implementation of data-driven methods, such as equals and accessors, helps to get rid of boilerplate.\n\n\nNote that not every class can be a record. Here are some of the restrictions:\n\n* A class must contain no inheritors and must be a top-level class.\n* All the non-static fields in class must be final.\n* Class must contain no instance initializers, generic constructors, nor native methods.\n\nTo get a full list of the restrictions, refer to the\n[Oracle documentation](https://docs.oracle.com/javase/specs/jls/se15/preview/specs/records-jls.html).\n\nExample:\n\n\n class Point {\n private final double x;\n private final double y;\n\n Point(double x, double y) {\n this.x = x;\n this.y = y;\n }\n\n double getX() {\n return x;\n }\n\n double getY() {\n return y;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n record Point(int x, int y) {\n }\n\nEnable the **Suggest renaming get/is-accessors** option to allow renaming `getX()`/`isX()` accessors to `x()` automatically.\n\n\nUse the **When conversion makes a member more accessible** options to specify if the conversion may violate class encapsulation:\n\n* Choose **Do not suggest conversion** option to never violate class encapsulation\n* Choose **Show affected members in conflicts view** option to apply conversion with notification about encapsulation violation issues\n* Choose **Convert silently** option to apply conversion silently whether encapsulation violation issues exist or not\n\nUse the **Suppress conversion if class is annotated by** list to exclude classes from conversion when annotated by annotations matching the specified patterns.\n\nThis inspection only reports if the language level of the project or module is 16 or higher.\n\nNew in 2020.3"
},
"defaultConfiguration": {
"enabled": false,
@@ -17332,7 +17430,7 @@
{
"target": {
"id": "Java/Test frameworks",
- "index": 98,
+ "index": 97,
"toolComponent": {
"name": "QDJVM"
}
@@ -17366,7 +17464,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -17448,7 +17546,7 @@
{
"id": "ConstantDeclaredInAbstractClass",
"shortDescription": {
- "text": "Constant declared in abstract class"
+ "text": "Constant declared in 'abstract' class"
},
"fullDescription": {
"text": "Reports constants ('public static final' fields) declared in abstract classes. Some coding standards require declaring constants in interfaces instead.",
@@ -17468,7 +17566,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -17502,7 +17600,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -17536,7 +17634,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -17570,7 +17668,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -17604,7 +17702,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -17672,7 +17770,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -17706,7 +17804,7 @@
{
"target": {
"id": "Java/JavaBeans issues",
- "index": 106,
+ "index": 105,
"toolComponent": {
"name": "QDJVM"
}
@@ -17740,7 +17838,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -17788,7 +17886,7 @@
{
"id": "NonSynchronizedMethodOverridesSynchronizedMethod",
"shortDescription": {
- "text": "Unsynchronized method overrides synchronized method"
+ "text": "Unsynchronized method overrides 'synchronized' method"
},
"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 }'",
@@ -17910,7 +18008,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -17944,7 +18042,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -18012,7 +18110,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -18114,7 +18212,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -18128,7 +18226,7 @@
{
"id": "DynamicRegexReplaceableByCompiledPattern",
"shortDescription": {
- "text": "Dynamic regular expression could be replaced by compiled Pattern"
+ "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));'",
@@ -18216,7 +18314,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -18250,7 +18348,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -18284,7 +18382,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -18318,7 +18416,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -18366,7 +18464,7 @@
{
"id": "ExternalizableWithoutPublicNoArgConstructor",
"shortDescription": {
- "text": "Externalizable class without 'public' no-arg constructor"
+ "text": "'Externalizable' class without 'public' no-arg constructor"
},
"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.",
@@ -18386,7 +18484,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -18420,7 +18518,7 @@
{
"target": {
"id": "Java/Concurrency annotation issues",
- "index": 77,
+ "index": 76,
"toolComponent": {
"name": "QDJVM"
}
@@ -18437,8 +18535,8 @@
"text": "Manual array copy"
},
"fullDescription": {
- "text": "Reports manual copying of array contents which can be replaced with 'System.arraycopy()'. Example: 'for (int i = 0; i < array.length; i++) {\n newArray[i] = array[i];\n }' After the quick-fix is applied: 'System.arraycopy(array, 0, newArray, 0, array.length);'",
- "markdown": "Reports manual copying of array contents which can be replaced with `System.arraycopy()`.\n\n**Example:**\n\n\n for (int i = 0; i < array.length; i++) {\n newArray[i] = array[i];\n }\n\nAfter the quick-fix is applied:\n\n\n System.arraycopy(array, 0, newArray, 0, array.length);\n"
+ "text": "Reports manual copying of array contents that can be replaced with a call to 'System.arraycopy()'. Example: 'for (int i = 0; i < array.length; i++) {\n newArray[i] = array[i];\n }' After the quick-fix is applied: 'System.arraycopy(array, 0, newArray, 0, array.length);'",
+ "markdown": "Reports manual copying of array contents that can be replaced with a call to `System.arraycopy()`.\n\n**Example:**\n\n\n for (int i = 0; i < array.length; i++) {\n newArray[i] = array[i];\n }\n\nAfter the quick-fix is applied:\n\n\n System.arraycopy(array, 0, newArray, 0, array.length);\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -18488,7 +18586,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -18505,8 +18603,8 @@
"text": "Control flow statement without braces"
},
"fullDescription": {
- "text": "Reports any 'if', 'while', or 'for' statements without braces. Braces make the code easier to read and help prevent errors. Example: 'if (x > 0) System.out.println(\"x is positive\");' The quick-fix wraps the statement body with braces: 'if (x > 0) {\n System.out.println(\"x is positive\");\n }'",
- "markdown": "Reports any `if`, `while`, or `for` statements without braces.\n\nBraces make the code easier to read and help prevent errors.\n\nExample:\n\n\n if (x > 0) System.out.println(\"x is positive\");\n\nThe quick-fix wraps the statement body with braces:\n\n\n if (x > 0) {\n System.out.println(\"x is positive\");\n }\n"
+ "text": "Reports any 'if', 'while', 'do', or 'for' statements without braces. Some code styles, e.g. the Google Java Style guide, require braces for all control statements. When adding further statements to control statements without braces, it is important not to forget adding braces. When commenting out a line of code, it is also necessary to be more careful when not using braces, to not inadvertently make the next statement part of the control flow statement. Always using braces makes inserting or commenting out a line of code safer. It's likely the goto fail vulnerability would not have happened, if an always use braces code style was used. Control statements with braces make the control flow easier to see, without relying on, possibly incorrect, indentation. Example: 'class Strange {\n void x(boolean one, boolean two) {\n if(one)\n if(two)\n foo();\n else\n bar();\n }\n\n void foo() {}\n void bar() {}\n }' The quick-fix wraps the statement body with braces: 'class Strange {\n void x(boolean one, boolean two) {\n if(one) {\n if(two) {\n foo();\n } else {\n bar();\n }\n }\n }\n\n void foo() {}\n void bar() {}\n }'",
+ "markdown": "Reports any `if`, `while`, `do`, or `for` statements without braces. Some code styles, e.g. the [Google Java Style guide](https://google.github.io/styleguide/javaguide.html), require braces for all control statements.\n\n\nWhen adding further statements to control statements without braces, it is important not to forget adding braces.\nWhen commenting out a line of code, it is also necessary to be more careful when not using braces,\nto not inadvertently make the next statement part of the control flow statement.\nAlways using braces makes inserting or commenting out a line of code safer.\n\n\nIt's likely the [goto fail vulnerability](https://www.imperialviolet.org/2014/02/22/applebug.html) would not have happened,\nif an always use braces code style was used.\nControl statements with braces make the control flow easier to see, without relying on, possibly incorrect, indentation.\n\nExample:\n\n\n class Strange {\n void x(boolean one, boolean two) {\n if(one)\n if(two)\n foo();\n else\n bar();\n }\n\n void foo() {}\n void bar() {}\n }\n\nThe quick-fix wraps the statement body with braces:\n\n\n class Strange {\n void x(boolean one, boolean two) {\n if(one) {\n if(two) {\n foo();\n } else {\n bar();\n }\n }\n }\n\n void foo() {}\n void bar() {}\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -18590,7 +18688,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -18624,7 +18722,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -18636,16 +18734,16 @@
]
},
{
- "id": "EnumClass",
+ "id": "TrivialFunctionalExpressionUsage",
"shortDescription": {
- "text": "Enumerated class"
+ "text": "Trivial usage of functional expression"
},
"fullDescription": {
- "text": "Reports enum classes. Such statements are not supported in Java 1.4 and earlier JVM.",
- "markdown": "Reports **enum** classes. Such statements are not supported in Java 1.4 and earlier JVM."
+ "text": "Reports functional interface methods calls that are directly invoked on the definition of the lambda, method reference, or anonymous class. Such method calls can be replaced with the body of the functional interface implementation. Example: 'boolean contains(List<String> names, String name) {\n return ((Predicate<String>)x -> {\n return names.contains(x);\n }).test(name);\n }' When the quick-fix is applied, the method call changes to: 'boolean contains(List<String> names, String name) {\n return names.contains(name);\n }'",
+ "markdown": "Reports functional interface methods calls that are directly invoked on the definition of the lambda, method reference, or anonymous class. Such method calls can be replaced with the body of the functional interface implementation.\n\n**Example:**\n\n\n boolean contains(List<String> names, String name) {\n return ((Predicate<String>)x -> {\n return names.contains(x);\n }).test(name);\n }\n\nWhen the quick-fix is applied, the method call changes to:\n\n\n boolean contains(List<String> names, String name) {\n return names.contains(name);\n }\n"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -18657,8 +18755,8 @@
"relationships": [
{
"target": {
- "id": "Java/Java language level issues",
- "index": 110,
+ "id": "Java/Declaration redundancy",
+ "index": 12,
"toolComponent": {
"name": "QDJVM"
}
@@ -18670,16 +18768,16 @@
]
},
{
- "id": "TrivialFunctionalExpressionUsage",
+ "id": "EnumClass",
"shortDescription": {
- "text": "Trivial usage of functional expression"
+ "text": "Enumerated class"
},
"fullDescription": {
- "text": "Reports functional interface methods calls that are directly invoked on the definition of the lambda, method reference, or anonymous class. Such method calls can be replaced with the body of the functional interface implementation. Example: 'boolean contains(List<String> names, String name) {\n return ((Predicate<String>)x -> {\n return names.contains(x);\n }).test(name);\n }' When the quick-fix is applied, the method call changes to: 'boolean contains(List<String> names, String name) {\n return names.contains(name);\n }'",
- "markdown": "Reports functional interface methods calls that are directly invoked on the definition of the lambda, method reference, or anonymous class. Such method calls can be replaced with the body of the functional interface implementation.\n\n**Example:**\n\n\n boolean contains(List<String> names, String name) {\n return ((Predicate<String>)x -> {\n return names.contains(x);\n }).test(name);\n }\n\nWhen the quick-fix is applied, the method call changes to:\n\n\n boolean contains(List<String> names, String name) {\n return names.contains(name);\n }\n"
+ "text": "Reports enum classes. Such statements are not supported in Java 1.4 and earlier JVM.",
+ "markdown": "Reports **enum** classes. Such statements are not supported in Java 1.4 and earlier JVM."
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -18691,8 +18789,8 @@
"relationships": [
{
"target": {
- "id": "Java/Declaration redundancy",
- "index": 12,
+ "id": "Java/Java language level issues",
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -18726,7 +18824,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -18740,7 +18838,7 @@
{
"id": "ExtendsThread",
"shortDescription": {
- "text": "Class directly extends 'java.lang.Thread'"
+ "text": "Class directly extends 'Thread'"
},
"fullDescription": {
"text": "Reports classes that directly extend 'java.lang.Thread'. It is usually recommended to prefer composition over inheritance to create more reusable code that is easier to modify later. Example: 'class MainThread extends Thread {\n }'",
@@ -18794,7 +18892,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -18862,7 +18960,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -18896,7 +18994,7 @@
{
"target": {
"id": "Java/Memory",
- "index": 128,
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -18930,7 +19028,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -18944,11 +19042,11 @@
{
"id": "MissingSerialAnnotation",
"shortDescription": {
- "text": "@Serial annotation could be used"
+ "text": "'@Serial' annotation could be used"
},
"fullDescription": {
- "text": "Reports methods and fields in the 'Serializable' and 'Externalizable' classes that are suitable to be annotated with the 'java.io.Serial' annotation. The quick-fix adds the annotation. Example: 'class Main implements Serializable {\n private static final long serialVersionUID = 7874493593505141603L;\n\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n}' After the quick-fix is applied: 'class Main implements Serializable {\n @Serial\n private static final long serialVersionUID = 7874493593505141603L;\n\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n}' Example: 'class Main implements Externalizable {\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }' After the quick-fix is applied: 'class Main implements Externalizable {\n @Serial\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }' For more information about all possible cases, refer the documentation for 'java.io.Serial'. This inspection applies to the language level of the project or module 14 or higher. New in 2020.3",
- "markdown": "Reports methods and fields in the `Serializable` and `Externalizable` classes that are suitable to be annotated with the `java.io.Serial` annotation. The quick-fix adds the annotation.\n\n**Example:**\n\n\n class Main implements Serializable {\n private static final long serialVersionUID = 7874493593505141603L;\n\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Main implements Serializable {\n @Serial\n private static final long serialVersionUID = 7874493593505141603L;\n\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }\n\n**Example:**\n\n\n class Main implements Externalizable {\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Main implements Externalizable {\n @Serial\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }\n\nFor more information about all possible cases, refer the documentation for `java.io.Serial`.\n\nThis inspection applies to the language level of the project or module 14 or higher.\n\nNew in 2020.3"
+ "text": "Reports methods and fields in the 'Serializable' and 'Externalizable' classes that are suitable to be annotated with the 'java.io.Serial' annotation. The quick-fix adds the annotation. Example: 'class Main implements Serializable {\n private static final long serialVersionUID = 7874493593505141603L;\n\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n}' After the quick-fix is applied: 'class Main implements Serializable {\n @Serial\n private static final long serialVersionUID = 7874493593505141603L;\n\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n}' Example: 'class Main implements Externalizable {\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }' After the quick-fix is applied: 'class Main implements Externalizable {\n @Serial\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }' For more information about all possible cases, refer the documentation for 'java.io.Serial'. This inspection only reports if the language level of the project or module is 14 or higher. New in 2020.3",
+ "markdown": "Reports methods and fields in the `Serializable` and `Externalizable` classes that are suitable to be annotated with the `java.io.Serial` annotation. The quick-fix adds the annotation.\n\n**Example:**\n\n\n class Main implements Serializable {\n private static final long serialVersionUID = 7874493593505141603L;\n\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Main implements Serializable {\n @Serial\n private static final long serialVersionUID = 7874493593505141603L;\n\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }\n\n**Example:**\n\n\n class Main implements Externalizable {\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class Main implements Externalizable {\n @Serial\n protected Object readResolve() throws ObjectStreamException {\n return \"SomeObject\";\n }\n }\n\nFor more information about all possible cases, refer the documentation for `java.io.Serial`.\n\nThis inspection only reports if the language level of the project or module is 14 or higher.\n\nNew in 2020.3"
},
"defaultConfiguration": {
"enabled": true,
@@ -18964,7 +19062,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -18998,7 +19096,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -19032,7 +19130,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -19066,7 +19164,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -19134,7 +19232,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -19148,7 +19246,7 @@
{
"id": "ComparisonToNaN",
"shortDescription": {
- "text": "Comparison to Double.NaN or Float.NaN"
+ "text": "Comparison to 'Double.NaN' or 'Float.NaN'"
},
"fullDescription": {
"text": "Reports any comparisons to 'Double.NaN' or 'Float.NaN'. Such comparisons are never meaningful, as NaN is not equal to anything, including itself. Use the 'Double.isNaN()' or 'Float.isNaN()' methods instead. Example: 'if (x == Double.NaN) {...}' After the quick-fix is applied: 'if (Double.isNaN(x)) {...}'",
@@ -19168,7 +19266,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -19185,8 +19283,8 @@
"text": "Multi-catch can be split into separate catch blocks"
},
"fullDescription": {
- "text": "Reports multi-'catch' sections and suggests splitting them into separate 'catch' blocks. Example: 'try {\n int i = getIndex();\n } catch (NullPointerException|IndexOutOfBoundsException e) {\n e.printStackTrace();\n }' After the quick-fix is applied: 'try {\n int i = getIndex();\n } catch (NullPointerException e) {\n e.printStackTrace();\n } catch (IndexOutOfBoundsException e) {\n e.printStackTrace();\n }' This inspection only reports if the language level of the project or module is 7 or higher.",
- "markdown": "Reports multi-`catch` sections and suggests splitting them into separate `catch` blocks.\n\nExample:\n\n\n try {\n int i = getIndex();\n } catch (NullPointerException|IndexOutOfBoundsException e) {\n e.printStackTrace();\n }\n\nAfter the quick-fix is applied:\n\n\n try {\n int i = getIndex();\n } catch (NullPointerException e) {\n e.printStackTrace();\n } catch (IndexOutOfBoundsException e) {\n e.printStackTrace();\n }\n\nThis inspection only reports if the language level of the project or module is 7 or higher."
+ "text": "Reports multi-'catch' sections and suggests splitting them into separate 'catch' blocks. Example: 'try {\n int i = getIndex();\n } catch (NullPointerException|IndexOutOfBoundsException e) {\n e.printStackTrace();\n }' After the quick-fix is applied: 'try {\n int i = getIndex();\n } catch (NullPointerException e) {\n e.printStackTrace();\n } catch (IndexOutOfBoundsException e) {\n e.printStackTrace();\n }' Multi-'catch' appeared in Java 7. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports multi-`catch` sections and suggests splitting them into separate `catch` blocks.\n\nExample:\n\n\n try {\n int i = getIndex();\n } catch (NullPointerException|IndexOutOfBoundsException e) {\n e.printStackTrace();\n }\n\nAfter the quick-fix is applied:\n\n\n try {\n int i = getIndex();\n } catch (NullPointerException e) {\n e.printStackTrace();\n } catch (IndexOutOfBoundsException e) {\n e.printStackTrace();\n }\n\n\n*Multi-* `catch` appeared in Java 7.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -19236,7 +19334,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -19270,7 +19368,41 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PatternVariableHidesField",
+ "shortDescription": {
+ "text": "Pattern variable hides field"
+ },
+ "fullDescription": {
+ "text": "Reports pattern variables named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the pattern variable when using the identically named field is intended. A quick-fix is suggested to rename the variable. Example: 'class Pointless {\n Point p = new Point();\n\n public void test(Object a) {\n if (a instanceof Point p) {\n System.out.print(\"a is a point (\" + p.x + \", \" + p.y + ')');\n } else {\n System.out.print(\"p is a point (\" + p.x + \", \" + p.y + ')');\n }\n }\n }' New in 2022.2",
+ "markdown": "Reports pattern variables named identically to a field of a surrounding class. As a result of such naming, you may accidentally use the pattern variable when using the identically named field is intended.\n\n\nA quick-fix is suggested to rename the variable.\n\n**Example:**\n\n\n class Pointless {\n Point p = new Point();\n\n public void test(Object a) {\n if (a instanceof Point p) {\n System.out.print(\"a is a point (\" + p.x + \", \" + p.y + ')');\n } else {\n System.out.print(\"p is a point (\" + p.x + \", \" + p.y + ')');\n }\n }\n }\n\nNew in 2022.2"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Visibility",
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -19338,7 +19470,41 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryModifier",
+ "shortDescription": {
+ "text": "Unnecessary modifier"
+ },
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -19406,7 +19572,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -19440,7 +19606,7 @@
{
"target": {
"id": "Java/Cloning issues",
- "index": 87,
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -19452,13 +19618,13 @@
]
},
{
- "id": "BigDecimalLegacyMethod",
+ "id": "Java8ListReplaceAll",
"shortDescription": {
- "text": "'BigDecimal' legacy method called"
+ "text": "Loop can be replaced with 'List.replaceAll()'"
},
"fullDescription": {
- "text": "Reports calls to 'BigDecimal.divide()' or 'BigDecimal.setScale()' that use integer constants to specify the rounding mode. Since JDK 1.5, consider using methods that take the 'RoundingMode' 'enum' parameter instead. Example: 'new BigDecimal(\"42\").setScale(2, BigDecimal.ROUND_FLOOR);' After the quick-fix is applied: 'new BigDecimal(\"42\").setScale(2, RoundingMode.FLOOR);'",
- "markdown": "Reports calls to `BigDecimal.divide()` or `BigDecimal.setScale()` that use integer constants to specify the rounding mode. Since JDK 1.5, consider using methods that take the `RoundingMode` `enum` parameter instead.\n\n**Example:**\n\n new BigDecimal(\"42\").setScale(2, BigDecimal.ROUND_FLOOR);\n\nAfter the quick-fix is applied:\n\n new BigDecimal(\"42\").setScale(2, RoundingMode.FLOOR);\n"
+ "text": "Reports loops which can be collapsed into a single 'List.replaceAll()' call. Example: 'for (int i = 0; i < strings.size(); i++) {\n String str = strings.get(i).toLowerCase();\n strings.set(i, str);\n }' After the quick-fix is applied: 'strings.replaceAll(String::toLowerCase);' This inspection only reports if the language level of the project or module is 8 or higher. New in 2022.1",
+ "markdown": "Reports loops which can be collapsed into a single `List.replaceAll()` call.\n\n**Example:**\n\n\n for (int i = 0; i < strings.size(); i++) {\n String str = strings.get(i).toLowerCase();\n strings.set(i, str);\n }\n\nAfter the quick-fix is applied:\n\n\n strings.replaceAll(String::toLowerCase);\n\n\nThis inspection only reports if the language level of the project or module is 8 or higher.\n\nNew in 2022.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -19473,7 +19639,7 @@
"relationships": [
{
"target": {
- "id": "Java/Java language level migration aids/Java 5",
+ "id": "Java/Java language level migration aids/Java 8",
"index": 92,
"toolComponent": {
"name": "QDJVM"
@@ -19486,13 +19652,13 @@
]
},
{
- "id": "MissingPackageInfo",
+ "id": "BigDecimalLegacyMethod",
"shortDescription": {
- "text": "Missing 'package-info.java'"
+ "text": "'BigDecimal' legacy method called"
},
"fullDescription": {
- "text": "Reports packages that contain classes but do not contain the 'package-info.java' or 'package.html' files and are, thus, missing the package documentation. The quick-fix creates an initial 'package-info.java' file.",
- "markdown": "Reports packages that contain classes but do not contain the `package-info.java` or `package.html` files and are, thus, missing the package documentation.\n\nThe quick-fix creates an initial `package-info.java` file."
+ "text": "Reports calls to 'BigDecimal.divide()' or 'BigDecimal.setScale()' that use integer constants to specify the rounding mode. Since JDK 1.5, consider using methods that take the 'RoundingMode' 'enum' parameter instead. Example: 'new BigDecimal(\"42\").setScale(2, BigDecimal.ROUND_FLOOR);' After the quick-fix is applied: 'new BigDecimal(\"42\").setScale(2, RoundingMode.FLOOR);'",
+ "markdown": "Reports calls to `BigDecimal.divide()` or `BigDecimal.setScale()` that use integer constants to specify the rounding mode. Since JDK 1.5, consider using methods that take the `RoundingMode` `enum` parameter instead.\n\n**Example:**\n\n new BigDecimal(\"42\").setScale(2, BigDecimal.ROUND_FLOOR);\n\nAfter the quick-fix is applied:\n\n new BigDecimal(\"42\").setScale(2, RoundingMode.FLOOR);\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -19507,8 +19673,8 @@
"relationships": [
{
"target": {
- "id": "Java/Javadoc",
- "index": 53,
+ "id": "Java/Java language level migration aids/Java 5",
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -19520,13 +19686,13 @@
]
},
{
- "id": "UnnecessaryConstructor",
+ "id": "MissingPackageInfo",
"shortDescription": {
- "text": "Redundant no-arg constructor"
+ "text": "Missing 'package-info.java'"
},
"fullDescription": {
- "text": "Reports unnecessary constructors. A constructor is unnecessary if it is the only constructor of a class, has no parameters, has the same access modifier as its containing class, and does not perform any initialization except explicitly or implicitly calling the superclass constructor without arguments. Such a constructor can be safely removed as it will be generated by the compiler even if not specified. Example: 'public class Foo {\n public Foo() {}\n }' After the quick-fix is applied: 'public class Foo {}' Use the inspection settings to ignore unnecessary constructors that have an annotation.",
- "markdown": "Reports unnecessary constructors.\n\n\nA constructor is unnecessary if it is the only constructor of a class, has no parameters,\nhas the same access modifier as its containing class,\nand does not perform any initialization except explicitly or implicitly calling the superclass constructor without arguments.\nSuch a constructor can be safely removed as it will be generated by the compiler even if not specified.\n\n**Example:**\n\n\n public class Foo {\n public Foo() {}\n }\n\nAfter the quick-fix is applied:\n\n\n public class Foo {}\n\n\nUse the inspection settings to ignore unnecessary constructors that have an annotation."
+ "text": "Reports packages that contain classes but do not contain the 'package-info.java' or 'package.html' files and are, thus, missing the package documentation. The quick-fix creates an initial 'package-info.java' file.",
+ "markdown": "Reports packages that contain classes but do not contain the `package-info.java` or `package.html` files and are, thus, missing the package documentation.\n\nThe quick-fix creates an initial `package-info.java` file."
},
"defaultConfiguration": {
"enabled": false,
@@ -19541,8 +19707,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Javadoc",
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -19554,13 +19720,13 @@
]
},
{
- "id": "StringBufferField",
+ "id": "UnnecessaryConstructor",
"shortDescription": {
- "text": "'StringBuilder' field"
+ "text": "Redundant no-arg constructor"
},
"fullDescription": {
- "text": "Reports fields of type 'java.lang.StringBuffer' or 'java.lang.StringBuilder'. Such fields can grow without limit and are often the cause of memory leaks. Example: 'public class Example {\n private StringBuilder builder = new StringBuilder();\n\n }'",
- "markdown": "Reports fields of type `java.lang.StringBuffer` or `java.lang.StringBuilder`. Such fields can grow without limit and are often the cause of memory leaks.\n\n**Example:**\n\n\n public class Example {\n private StringBuilder builder = new StringBuilder();\n\n }\n"
+ "text": "Reports unnecessary constructors. A constructor is unnecessary if it is the only constructor of a class, has no parameters, has the same access modifier as its containing class, and does not perform any initialization except explicitly or implicitly calling the superclass constructor without arguments. Such a constructor can be safely removed as it will be generated by the compiler even if not specified. Example: 'public class Foo {\n public Foo() {}\n }' After the quick-fix is applied: 'public class Foo {}' Use the inspection settings to ignore unnecessary constructors that have an annotation.",
+ "markdown": "Reports unnecessary constructors.\n\n\nA constructor is unnecessary if it is the only constructor of a class, has no parameters,\nhas the same access modifier as its containing class,\nand does not perform any initialization except explicitly or implicitly calling the superclass constructor without arguments.\nSuch a constructor can be safely removed as it will be generated by the compiler even if not specified.\n\n**Example:**\n\n\n public class Foo {\n public Foo() {}\n }\n\nAfter the quick-fix is applied:\n\n\n public class Foo {}\n\n\nUse the inspection settings to ignore unnecessary constructors that have an annotation."
},
"defaultConfiguration": {
"enabled": false,
@@ -19575,8 +19741,8 @@
"relationships": [
{
"target": {
- "id": "Java/Memory",
- "index": 128,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -19588,13 +19754,13 @@
]
},
{
- "id": "RedundantMethodOverride",
+ "id": "StringBufferField",
"shortDescription": {
- "text": "Method is identical to its super method"
+ "text": "'StringBuilder' field"
},
"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 fields of type 'java.lang.StringBuffer' or 'java.lang.StringBuilder'. Such fields can grow without limit and are often the cause of memory leaks. Example: 'public class Example {\n private StringBuilder builder = new StringBuilder();\n\n }'",
+ "markdown": "Reports fields of type `java.lang.StringBuffer` or `java.lang.StringBuilder`. Such fields can grow without limit and are often the cause of memory leaks.\n\n**Example:**\n\n\n public class Example {\n private StringBuilder builder = new StringBuilder();\n\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -19609,8 +19775,8 @@
"relationships": [
{
"target": {
- "id": "Java/Inheritance issues",
- "index": 114,
+ "id": "Java/Memory",
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -19644,7 +19810,7 @@
{
"target": {
"id": "Java/Naming conventions/Class",
- "index": 56,
+ "index": 57,
"toolComponent": {
"name": "QDJVM"
}
@@ -19656,13 +19822,13 @@
]
},
{
- "id": "ContinueStatementWithLabel",
+ "id": "RedundantMethodOverride",
"shortDescription": {
- "text": "'continue' statement with label"
+ "text": "Method is identical to its super method"
},
"fullDescription": {
- "text": "Reports 'continue' statements with labels. Labeled 'continue' statements complicate refactoring and can be confusing. Example: 'void handle(List<String> strs) {\n outer:\n for (String s: strs) {\n for (char ch : s.toCharArray()) {\n if ('s' == ch) continue outer;\n handleChar(ch);\n }\n }\n }'",
- "markdown": "Reports `continue` statements with labels.\n\nLabeled `continue` statements complicate refactoring and can be confusing.\n\nExample:\n\n\n void handle(List<String> strs) {\n outer:\n for (String s: strs) {\n for (char ch : s.toCharArray()) {\n if ('s' == ch) continue outer;\n handleChar(ch);\n }\n }\n }\n"
+ "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,
@@ -19677,8 +19843,8 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
- "index": 26,
+ "id": "Java/Inheritance issues",
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -19690,13 +19856,13 @@
]
},
{
- "id": "JavaDoc",
+ "id": "ContinueStatementWithLabel",
"shortDescription": {
- "text": "Declaration has Javadoc problems"
+ "text": "'continue' statement with label"
},
"fullDescription": {
- "text": "Reports the following Javadoc comment flaws: No Javadoc where it is required Required tag is missing Invalid or incomplete tag Javadoc description is missing or incomplete Example: 'class Main {\n }' After the quick-fix is applied: '/**\n *\n */\n class Main {\n }' Example: 'String id(String value) {\n return value;\n }' After the quick-fix is applied: '/**\n * @param value\n * @return\n */\n String id(String value) {\n return value;\n }' Use the tabs and corresponding inspection options to define visibility scope in which Javadoc is required, as well as the required Javadoc tags for classes, methods, fields, and inner classes.",
- "markdown": "Reports the following Javadoc comment flaws:\n\n* No Javadoc where it is required\n* Required tag is missing\n* Invalid or incomplete tag\n* Javadoc description is missing or incomplete\n\nExample:\n\n\n class Main {\n }\n\nAfter the quick-fix is applied:\n\n\n /**\n *\n */\n class Main {\n }\n\nExample:\n\n\n String id(String value) {\n return value;\n }\n\nAfter the quick-fix is applied:\n\n\n /**\n * @param value\n * @return\n */\n String id(String value) {\n return value;\n }\n\nUse the tabs and corresponding inspection options to define visibility scope in which Javadoc is required, as well as the required Javadoc tags for classes, methods, fields, and inner classes."
+ "text": "Reports 'continue' statements with labels. Labeled 'continue' statements complicate refactoring and can be confusing. Example: 'void handle(List<String> strs) {\n outer:\n for (String s: strs) {\n for (char ch : s.toCharArray()) {\n if ('s' == ch) continue outer;\n handleChar(ch);\n }\n }\n }'",
+ "markdown": "Reports `continue` statements with labels.\n\nLabeled `continue` statements complicate refactoring and can be confusing.\n\nExample:\n\n\n void handle(List<String> strs) {\n outer:\n for (String s: strs) {\n for (char ch : s.toCharArray()) {\n if ('s' == ch) continue outer;\n handleChar(ch);\n }\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -19711,8 +19877,8 @@
"relationships": [
{
"target": {
- "id": "Java/Javadoc",
- "index": 53,
+ "id": "Java/Control flow issues",
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -19746,7 +19912,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -19760,11 +19926,11 @@
{
"id": "UnconstructableTestCase",
"shortDescription": {
- "text": "Unconstructable JUnit TestCase"
+ "text": "Unconstructable JUnit test class"
},
"fullDescription": {
- "text": "Reports JUnit test cases that are not 'abstract' and do not expose a public 'no-arg' constructor or a public constructor that takes a single string as an argument. Such test cases cannot be run by most 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}'",
- "markdown": "Reports JUnit test cases that are not `abstract` and do not expose a public `no-arg` constructor or a public constructor that takes a single string as an argument. Such test cases cannot be run by most JUnit test runners.\n\n**Example:**\n\n\n 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 }\n"
+ "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}'",
+ "markdown": "Reports JUnit test classes that can't be constructed by a standard JUnit test runner.\n\n\nJUnit 4 test classes need to be `public` and have a `public` no-arg constructor or no constructor at all\n(implicit default constructor) and no other `public` constructors.\nJUnit 3 test classes need to be `public` and need either a `public` no-arg constructor\nor a `public` constructor with a single parameter of `String` type, which calls the matching super constructor.\nOtherwise the test classes cannot be run by standard JUnit test runners.\n\n**Example:**\n\n\n 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 }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -19779,8 +19945,8 @@
"relationships": [
{
"target": {
- "id": "Java/JUnit",
- "index": 46,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -19848,7 +20014,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -19916,7 +20082,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -19950,7 +20116,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -19984,7 +20150,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -20030,16 +20196,16 @@
]
},
{
- "id": "MethodOverloadsParentMethod",
+ "id": "IncrementDecrementUsedAsExpression",
"shortDescription": {
- "text": "Possibly unintended overload of method from superclass"
+ "text": "Result of '++' or '--' used"
},
"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 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": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -20051,8 +20217,8 @@
"relationships": [
{
"target": {
- "id": "Java/Visibility",
- "index": 76,
+ "id": "Java/Assignment issues",
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -20064,16 +20230,16 @@
]
},
{
- "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",
@@ -20085,8 +20251,8 @@
"relationships": [
{
"target": {
- "id": "Java/Assignment issues",
- "index": 62,
+ "id": "Java/Visibility",
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -20098,13 +20264,13 @@
]
},
{
- "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,
@@ -20119,8 +20285,8 @@
"relationships": [
{
"target": {
- "id": "Java/Naming conventions",
- "index": 55,
+ "id": "Java/Threading issues",
+ "index": 25,
"toolComponent": {
"name": "QDJVM"
}
@@ -20132,13 +20298,13 @@
]
},
{
- "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,
@@ -20153,8 +20319,8 @@
"relationships": [
{
"target": {
- "id": "Java/Threading issues",
- "index": 25,
+ "id": "Java/Naming conventions",
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -20188,7 +20354,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -20222,7 +20388,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -20256,7 +20422,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -20304,11 +20470,11 @@
{
"id": "EqualsHashCodeCalledOnUrl",
"shortDescription": {
- "text": "'equals()' or 'hashCode()' called on 'java.net.URL' object"
+ "text": "'equals()' or 'hashCode()' called on 'URL' object"
},
"fullDescription": {
- "text": "Reports 'hashCode()' and 'equals()' being called on 'java.net.URL' objects. The 'java.net.URL' class internally uses an instance of 'java.net.URLStreamHandler' to execute 'hashCode()' and 'equals()'. This can cause performance problems because 'java.net.URLStreamHandler' performs DNS lookups. Depending on the availability of the network and the speed of a DNS server this can cause significant delays. The problem can most likely be solved by using 'java.net.URI' instead. Example: 'int f(URL url1, URL url2) {\n if (url1.equals(url2)) return url1.hashCode();\n else return url2.hashCode();\n }'",
- "markdown": "Reports `hashCode()` and `equals()` being called on `java.net.URL` objects.\n\n\nThe `java.net.URL` class internally uses an instance of `java.net.URLStreamHandler`\nto execute `hashCode()` and `equals()`.\nThis can cause performance problems because `java.net.URLStreamHandler` performs DNS lookups.\nDepending on the availability of the network and the speed of a DNS server this can cause significant delays.\n\nThe problem can most likely be solved by using `java.net.URI` instead.\n\n**Example:**\n\n\n int f(URL url1, URL url2) {\n if (url1.equals(url2)) return url1.hashCode();\n else return url2.hashCode();\n }\n"
+ "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,
@@ -20336,19 +20502,19 @@
]
},
{
- "id": "UnnecessaryParentheses",
+ "id": "NonStrictComparisonCanBeEquality",
"shortDescription": {
- "text": "Unnecessary parentheses"
+ "text": "Non-strict inequality '>=' or '<=' can be replaced with '=='"
},
"fullDescription": {
- "text": "Reports any instance of unnecessary parentheses. Parentheses are considered unnecessary if the evaluation order of an expression remains unchanged after you remove the parentheses. Example: 'int n = 3 + (9 * 8);' After quick-fix is applied: 'int n = 3 + 9 * 8;' Configure the inspection: Use the Ignore clarifying parentheses option to ignore parentheses that help clarify a binary expression. Parentheses are clarifying if the parenthesized expression is an 'instanceof' expression that is a part of a larger expression or has a different operator than the parent expression. Use the Ignore parentheses around the condition of conditional expressions option to ignore any parentheses around the condition of conditional expressions. Some coding standards specify that all such conditions must be surrounded by parentheses. Use the Ignore parentheses around single no formal type lambda parameter option to ignore parentheses around a single lambda parameter within a lambda expression.",
- "markdown": "Reports any instance of unnecessary parentheses.\n\nParentheses are considered unnecessary if the evaluation order of an expression remains\nunchanged after you remove the parentheses.\n\nExample:\n\n\n int n = 3 + (9 * 8);\n\nAfter quick-fix is applied:\n\n\n int n = 3 + 9 * 8;\n\nConfigure the inspection:\n\n* Use the **Ignore clarifying parentheses** option to ignore parentheses that help clarify a binary expression. Parentheses are clarifying if the parenthesized expression is an `instanceof` expression that is a part of a larger expression or has a different operator than the parent expression.\n* Use the **Ignore parentheses around the condition of conditional expressions** option to ignore any parentheses around the condition of conditional expressions. Some coding standards specify that all such conditions must be surrounded by parentheses.\n* Use the **Ignore parentheses around single no formal type lambda parameter** option to ignore parentheses around a single lambda parameter within a lambda expression."
+ "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": "note",
"parameters": {
- "ideaSeverity": "INFORMATION",
+ "ideaSeverity": "WEAK WARNING",
"tags": [
"ideaSeverity"
]
@@ -20357,8 +20523,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Verbose or redundant code constructs",
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -20370,19 +20536,19 @@
]
},
{
- "id": "SuspiciousToArrayCall",
+ "id": "UnnecessaryParentheses",
"shortDescription": {
- "text": "Suspicious 'Collection.toArray()' call"
+ "text": "Unnecessary parentheses"
},
"fullDescription": {
- "text": "Reports suspicious calls to 'Collection.toArray()'. The following types of calls are considered suspicious: when the type of the array argument is not the same as the array type to which the result is casted. when the type of the array argument does not match the type parameter in the collection declaration. Example: 'void m1(List list) {\n Number[] ns = (Number[]) list.toArray(new String[0]);\n}\n\nvoid m2(List<Number> list) {\n Number[] ns = list.toArray(new String[0]);\n}'",
- "markdown": "Reports suspicious calls to `Collection.toArray()`.\n\nThe following types of calls are considered suspicious:\n\n* when the type of the array argument is not the same as the array type to which the result is casted.\n* when the type of the array argument does not match the type parameter in the collection declaration.\n\n**Example:**\n\n\n void m1(List list) {\n Number[] ns = (Number[]) list.toArray(new String[0]);\n }\n\n void m2(List<Number> list) {\n Number[] ns = list.toArray(new String[0]);\n }\n"
+ "text": "Reports any instance of unnecessary parentheses. Parentheses are considered unnecessary if the evaluation order of an expression remains unchanged after you remove the parentheses. Example: 'int n = 3 + (9 * 8);' After quick-fix is applied: 'int n = 3 + 9 * 8;' Configure the inspection: Use the Ignore clarifying parentheses option to ignore parentheses that help clarify a binary expression. Parentheses are clarifying if the parenthesized expression is an 'instanceof' expression that is a part of a larger expression or has a different operator than the parent expression. Use the Ignore parentheses around the condition of conditional expressions option to ignore any parentheses around the condition of conditional expressions. Some coding standards specify that all such conditions must be surrounded by parentheses. Use the Ignore parentheses around single no formal type lambda parameter option to ignore parentheses around a single lambda parameter within a lambda expression.",
+ "markdown": "Reports any instance of unnecessary parentheses.\n\nParentheses are considered unnecessary if the evaluation order of an expression remains\nunchanged after you remove the parentheses.\n\nExample:\n\n\n int n = 3 + (9 * 8);\n\nAfter quick-fix is applied:\n\n\n int n = 3 + 9 * 8;\n\nConfigure the inspection:\n\n* Use the **Ignore clarifying parentheses** option to ignore parentheses that help clarify a binary expression. Parentheses are clarifying if the parenthesized expression is an `instanceof` expression that is a part of a larger expression or has a different operator than the parent expression.\n* Use the **Ignore parentheses around the condition of conditional expressions** option to ignore any parentheses around the condition of conditional expressions. Some coding standards specify that all such conditions must be surrounded by parentheses.\n* Use the **Ignore parentheses around single no formal type lambda parameter** option to ignore parentheses around a single lambda parameter within a lambda expression."
},
"defaultConfiguration": {
- "enabled": true,
- "level": "warning",
+ "enabled": false,
+ "level": "note",
"parameters": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -20391,8 +20557,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -20404,16 +20570,16 @@
]
},
{
- "id": "UnnecessaryEnumModifier",
+ "id": "SuspiciousToArrayCall",
"shortDescription": {
- "text": "Unnecessary 'enum' modifier"
+ "text": "Suspicious 'Collection.toArray()' call"
},
"fullDescription": {
- "text": "Reports any redundant modifier on enumerated classes or its components. Example: 'public enum UnnecessaryEnumModifier {\n Red, Green, Blue;\n\n static enum Inner {\n A, B, C\n }\n}'",
- "markdown": "Reports any redundant modifier on enumerated classes or its components.\n\nExample:\n\n\n public enum UnnecessaryEnumModifier {\n Red, Green, Blue;\n\n static enum Inner {\n A, B, C\n }\n }\n"
+ "text": "Reports suspicious calls to 'Collection.toArray()'. The following types of calls are considered suspicious: when the type of the array argument is not the same as the array type to which the result is casted. when the type of the array argument does not match the type parameter in the collection declaration. Example: 'void m1(List list) {\n Number[] ns = (Number[]) list.toArray(new String[0]);\n}\n\nvoid m2(List<Number> list) {\n Number[] ns = list.toArray(new String[0]);\n}'",
+ "markdown": "Reports suspicious calls to `Collection.toArray()`.\n\nThe following types of calls are considered suspicious:\n\n* when the type of the array argument is not the same as the array type to which the result is casted.\n* when the type of the array argument does not match the type parameter in the collection declaration.\n\n**Example:**\n\n\n void m1(List list) {\n Number[] ns = (Number[]) list.toArray(new String[0]);\n }\n\n void m2(List<Number> list) {\n Number[] ns = list.toArray(new String[0]);\n }\n"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -20425,8 +20591,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -20528,7 +20694,7 @@
{
"target": {
"id": "Java/Dependency issues",
- "index": 109,
+ "index": 108,
"toolComponent": {
"name": "QDJVM"
}
@@ -20562,7 +20728,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -20596,7 +20762,7 @@
{
"target": {
"id": "Java/Compiler issues",
- "index": 124,
+ "index": 122,
"toolComponent": {
"name": "QDJVM"
}
@@ -20630,7 +20796,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -20664,7 +20830,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -20681,8 +20847,8 @@
"text": "Non-safe string is passed to safe method"
},
"fullDescription": {
- "text": "Reports cases when non-safe string is passed to a method with parameter marked with annotation 'org.checkerframework.checker.tainting.qual.Untainted'. Safe string is: call of method that is marked as '@Untainted' local variable or method parameter that does not call non-safe methods field, local variable or parameter that is marked as '@Untainted' and does not have non-safe methods calls assigned Example: 'void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n if (b) s1 = s;\n sink(s);\n }\n \n String sink(@Untainted String s) {}'\n Here we do not have non-safe string assignments to 's' so warning is not produced. On the other hand: 'void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n s1 = foo();\n if (b) s1 = s;\n sink(s); // warning here\n }\n \n String foo();\n\n String sink(@Untainted String s) {}'\n Here we have a warning since 's1' has an unknown state after 'foo' call result assignment. New in 2021.2",
- "markdown": "Reports cases when non-safe string is passed to a method with parameter marked with annotation `org.checkerframework.checker.tainting.qual.Untainted`.\n\n\nSafe string is:\n\n* call of method that is marked as `@Untainted`\n* local variable or method parameter that does not call non-safe methods\n* field, local variable or parameter that is marked as `@Untainted` and does not have non-safe methods calls assigned\n\n\nExample:\n\n\n void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n if (b) s1 = s;\n sink(s);\n }\n \n String sink(@Untainted String s) {}\n\n\nHere we do not have non-safe string assignments to `s` so warning is not produced. On the other hand:\n\n\n void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n s1 = foo();\n if (b) s1 = s;\n sink(s); // warning here\n }\n \n String foo();\n\n String sink(@Untainted String s) {}\n\n\nHere we have a warning since `s1` has an unknown state after `foo` call result assignment.\n\nNew in 2021.2"
+ "text": "Reports cases when non-safe string is passed to a method with parameter marked with annotation 'org.checkerframework.checker.tainting.qual.Untainted'. Safe string is: call of method that is marked as '@Untainted' local variable or method parameter that does not call non-safe methods field, local variable or parameter that is marked as '@Untainted' and does not have non-safe methods calls assigned Example: 'void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n if (b) s1 = s;\n sink(s);\n }\n \n String sink(@Untainted String s) {}'\n Here we do not have non-safe string assignments to 's' so warning is not produced. On the other hand: 'void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n s1 = foo();\n if (b) s = s1;\n sink(s); // warning here\n }\n \n String foo();\n\n String sink(@Untainted String s) {}'\n Here we have a warning since 's1' has an unknown state after 'foo' call result assignment. New in 2021.2",
+ "markdown": "Reports cases when non-safe string is passed to a method with parameter marked with annotation `org.checkerframework.checker.tainting.qual.Untainted`.\n\n\nSafe string is:\n\n* call of method that is marked as `@Untainted`\n* local variable or method parameter that does not call non-safe methods\n* field, local variable or parameter that is marked as `@Untainted` and does not have non-safe methods calls assigned\n\n\nExample:\n\n\n void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n if (b) s1 = s;\n sink(s);\n }\n \n String sink(@Untainted String s) {}\n\n\nHere we do not have non-safe string assignments to `s` so warning is not produced. On the other hand:\n\n\n void doSmth(boolean b) {\n String s = safe();\n String s1 = \"other\";\n s1 = foo();\n if (b) s = s1;\n sink(s); // warning here\n }\n \n String foo();\n\n String sink(@Untainted String s) {}\n\n\nHere we have a warning since `s1` has an unknown state after `foo` call result assignment.\n\nNew in 2021.2"
},
"defaultConfiguration": {
"enabled": false,
@@ -20715,8 +20881,8 @@
"text": "Record can be converted to class"
},
"fullDescription": {
- "text": "Reports record classes and suggests converting them to ordinary classes. This inspection makes it possible to move a Java record to a codebase using an earlier Java version by applying the quick-fix to this record. Note that the resulting class is not completely equivalent to the original record: The resulting class no longer extends 'java.lang.Record', so 'instanceof Record' returns 'false'. Reflection methods like 'Class.isRecord()' and 'Class.getRecordComponents()' produce different results. The generated 'hashCode()' implementation may produce a different result because the formula to calculate record 'hashCode' is deliberately not specified. Record serialization mechanism differs from that of an ordinary class. Refer to Java Object Serialization Specification for details. Example: 'record Point(int x, int y) {}' After the quick-fix is applied: 'final class Point {\n private final int x;\n private final int y;\n\n Point(int x, int y) {\n this.x = x;\n this.y = y;\n }\n\n public int x() { return x; }\n\n public int y() { return y; }\n\n @Override\n public boolean equals(Object obj) {\n if (obj == this) return true;\n if (obj == null || obj.getClass() != this.getClass()) return false;\n var that = (Point)obj;\n return this.x == that.x &&\n this.y == that.y;\n }\n\n @Override\n public int hashCode() {\n return Objects.hash(x, y);\n }\n\n @Override\n public String toString() {\n return \"Point[\" +\n \"x=\" + x + \", \" +\n \"y=\" + y + ']';\n }\n }' This inspection only reports if the language level of the project or module is 15 preview or higher. New in 2020.3",
- "markdown": "Reports record classes and suggests converting them to ordinary classes.\n\nThis inspection makes it possible to move a Java record to a codebase using an earlier Java version\nby applying the quick-fix to this record.\n\n\nNote that the resulting class is not completely equivalent to the original record:\n\n* The resulting class no longer extends `java.lang.Record`, so `instanceof Record` returns `false`.\n* Reflection methods like `Class.isRecord()` and `Class.getRecordComponents()` produce different results.\n* The generated `hashCode()` implementation may produce a different result because the formula to calculate record `hashCode` is deliberately not specified.\n* Record serialization mechanism differs from that of an ordinary class. Refer to *Java Object Serialization Specification* for details.\n\nExample:\n\n\n record Point(int x, int y) {}\n\nAfter the quick-fix is applied:\n\n\n final class Point {\n private final int x;\n private final int y;\n\n Point(int x, int y) {\n this.x = x;\n this.y = y;\n }\n\n public int x() { return x; }\n\n public int y() { return y; }\n\n @Override\n public boolean equals(Object obj) {\n if (obj == this) return true;\n if (obj == null || obj.getClass() != this.getClass()) return false;\n var that = (Point)obj;\n return this.x == that.x &&\n this.y == that.y;\n }\n\n @Override\n public int hashCode() {\n return Objects.hash(x, y);\n }\n\n @Override\n public String toString() {\n return \"Point[\" +\n \"x=\" + x + \", \" +\n \"y=\" + y + ']';\n }\n }\n\nThis inspection only reports if the language level of the project or module is 15 preview or higher.\n\nNew in 2020.3"
+ "text": "Reports record classes and suggests converting them to ordinary classes. This inspection makes it possible to move a Java record to a codebase using an earlier Java version by applying the quick-fix to this record. Note that the resulting class is not completely equivalent to the original record: The resulting class no longer extends 'java.lang.Record', so 'instanceof Record' returns 'false'. Reflection methods like 'Class.isRecord()' and 'Class.getRecordComponents()' produce different results. The generated 'hashCode()' implementation may produce a different result because the formula to calculate record 'hashCode' is deliberately not specified. Record serialization mechanism differs from that of an ordinary class. Refer to Java Object Serialization Specification for details. Example: 'record Point(int x, int y) {}' After the quick-fix is applied: 'final class Point {\n private final int x;\n private final int y;\n\n Point(int x, int y) {\n this.x = x;\n this.y = y;\n }\n\n public int x() { return x; }\n\n public int y() { return y; }\n\n @Override\n public boolean equals(Object obj) {\n if (obj == this) return true;\n if (obj == null || obj.getClass() != this.getClass()) return false;\n var that = (Point)obj;\n return this.x == that.x &&\n this.y == that.y;\n }\n\n @Override\n public int hashCode() {\n return Objects.hash(x, y);\n }\n\n @Override\n public String toString() {\n return \"Point[\" +\n \"x=\" + x + \", \" +\n \"y=\" + y + ']';\n }\n }' This inspection only reports if the language level of the project or module is 16 higher. New in 2020.3",
+ "markdown": "Reports record classes and suggests converting them to ordinary classes.\n\nThis inspection makes it possible to move a Java record to a codebase using an earlier Java version\nby applying the quick-fix to this record.\n\n\nNote that the resulting class is not completely equivalent to the original record:\n\n* The resulting class no longer extends `java.lang.Record`, so `instanceof Record` returns `false`.\n* Reflection methods like `Class.isRecord()` and `Class.getRecordComponents()` produce different results.\n* The generated `hashCode()` implementation may produce a different result because the formula to calculate record `hashCode` is deliberately not specified.\n* Record serialization mechanism differs from that of an ordinary class. Refer to *Java Object Serialization Specification* for details.\n\nExample:\n\n\n record Point(int x, int y) {}\n\nAfter the quick-fix is applied:\n\n\n final class Point {\n private final int x;\n private final int y;\n\n Point(int x, int y) {\n this.x = x;\n this.y = y;\n }\n\n public int x() { return x; }\n\n public int y() { return y; }\n\n @Override\n public boolean equals(Object obj) {\n if (obj == this) return true;\n if (obj == null || obj.getClass() != this.getClass()) return false;\n var that = (Point)obj;\n return this.x == that.x &&\n this.y == that.y;\n }\n\n @Override\n public int hashCode() {\n return Objects.hash(x, y);\n }\n\n @Override\n public String toString() {\n return \"Point[\" +\n \"x=\" + x + \", \" +\n \"y=\" + y + ']';\n }\n }\n\nThis inspection only reports if the language level of the project or module is 16 higher.\n\nNew in 2020.3"
},
"defaultConfiguration": {
"enabled": false,
@@ -20749,8 +20915,8 @@
"text": "Malformed format string"
},
"fullDescription": {
- "text": "Reports format strings that don't comply with the standard Java syntax. By default, the inspection considers a compile-time constant as a format string if it's used as an argument to the corresponding methods on 'java.util.Formatter', 'java.lang.String', 'java.io.PrintWriter' or 'java.io.PrintStream'. Example: 'String.format(\"x = %d, y = %d\", 42);' Use the inspection settings to mark additional classes and methods as related to string formatting.",
- "markdown": "Reports format strings that don't comply with the standard Java syntax.\n\nBy default, the inspection considers a compile-time constant as a format string if it's used as an argument to the corresponding methods on\n`java.util.Formatter`, `java.lang.String`, `java.io.PrintWriter` or `java.io.PrintStream`.\n\n**Example:**\n\n\n String.format(\"x = %d, y = %d\", 42);\n\nUse the inspection settings to mark additional classes and methods as related to string formatting."
+ "text": "Reports format strings that don't comply with the standard Java syntax. By default, the inspection considers a compile-time constant a format string if it's used as an argument to the corresponding methods on 'java.util.Formatter', 'java.lang.String', 'java.io.PrintWriter' or 'java.io.PrintStream'. Example: 'String.format(\"x = %d, y = %d\", 42);' Use the inspection settings to mark additional classes and methods as related to string formatting. As an alternative, you can use the 'org.intellij.lang.annotations.PrintFormat' annotation to mark the format string method parameter. In this case, the format arguments parameter must immediately follow the format string and be the last method parameter. Example: 'void myFormatMethod(int mode, @PrintFormat String formatString, Object... args) {...}' Methods annotated in this way will also be recognized by this inspection.",
+ "markdown": "Reports format strings that don't comply with the standard Java syntax.\n\nBy default, the inspection considers a compile-time constant a format string if it's used as an argument to the corresponding methods on\n`java.util.Formatter`, `java.lang.String`, `java.io.PrintWriter` or `java.io.PrintStream`.\n\n**Example:**\n\n\n String.format(\"x = %d, y = %d\", 42);\n\nUse the inspection settings to mark additional classes and methods as related to string formatting.\n\nAs an alternative, you can use the `org.intellij.lang.annotations.PrintFormat` annotation\nto mark the format string method parameter. In this case,\nthe format arguments parameter must immediately follow the format string and be the last method parameter. Example:\n\n\n void myFormatMethod(int mode, @PrintFormat String formatString, Object... args) {...}\n\n\nMethods annotated in this way will also be recognized by this inspection."
},
"defaultConfiguration": {
"enabled": true,
@@ -20766,7 +20932,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -20834,7 +21000,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -20868,7 +21034,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -20902,7 +21068,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -20936,7 +21102,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -20953,8 +21119,8 @@
"text": "Subsequent steps can be fused into Stream API chain"
},
"fullDescription": {
- "text": "Detects transformations outside a Stream API chain that could be incorporated into it. Example: 'List<String> list = stream.collect(Collectors.toList());\n list.sort(null);\n return list.toArray(new String[list.size()]);' After the conversion: 'return stream.sorted().toArray(String[]::new);' Note that sometimes the converted stream chain may replace explicit 'ArrayList' with 'Collectors.toList()' or explicit 'HashSet' with 'Collectors.toSet()'. The current library implementation uses these collections internally. However, this approach is not very reliable and might change in the future altering the semantics of your code. If you are concerned about it, use the Do not suggest 'toList()' or 'toSet()' collectors option to suggest 'Collectors.toCollection()' instead of 'toList' and 'toSet' collectors. This inspection only reports if the language level of the project of module is 8 or higher.",
- "markdown": "Detects transformations outside a Stream API chain that could be incorporated into it.\n\nExample:\n\n\n List<String> list = stream.collect(Collectors.toList());\n list.sort(null);\n return list.toArray(new String[list.size()]);\n\nAfter the conversion:\n\n\n return stream.sorted().toArray(String[]::new);\n\n\nNote that sometimes the converted stream chain may replace explicit `ArrayList` with `Collectors.toList()` or explicit\n`HashSet` with `Collectors.toSet()`. The current library implementation uses these collections internally. However,\nthis approach is not very reliable and might change in the future altering the semantics of your code.\n\nIf you are concerned about it, use the **Do not suggest 'toList()' or 'toSet()' collectors** option to suggest\n`Collectors.toCollection()` instead of `toList` and `toSet` collectors.\n\nThis inspection only reports if the language level of the project of module is 8 or higher."
+ "text": "Detects transformations outside a Stream API chain that could be incorporated into it. Example: 'List<String> list = stream.collect(Collectors.toList());\n list.sort(null);\n return list.toArray(new String[list.size()]);' After the conversion: 'return stream.sorted().toArray(String[]::new);' Note that sometimes the converted stream chain may replace explicit 'ArrayList' with 'Collectors.toList()' or explicit 'HashSet' with 'Collectors.toSet()'. The current library implementation uses these collections internally. However, this approach is not very reliable and might change in the future altering the semantics of your code. If you are concerned about it, use the Do not suggest 'toList()' or 'toSet()' collectors option to suggest 'Collectors.toCollection()' instead of 'toList' and 'toSet' collectors. This inspection only reports if the language level of the project or module is 8 or higher.",
+ "markdown": "Detects transformations outside a Stream API chain that could be incorporated into it.\n\nExample:\n\n\n List<String> list = stream.collect(Collectors.toList());\n list.sort(null);\n return list.toArray(new String[list.size()]);\n\nAfter the conversion:\n\n\n return stream.sorted().toArray(String[]::new);\n\n\nNote that sometimes the converted stream chain may replace explicit `ArrayList` with `Collectors.toList()` or explicit\n`HashSet` with `Collectors.toSet()`. The current library implementation uses these collections internally. However,\nthis approach is not very reliable and might change in the future altering the semantics of your code.\n\nIf you are concerned about it, use the **Do not suggest 'toList()' or 'toSet()' collectors** option to suggest\n`Collectors.toCollection()` instead of `toList` and `toSet` collectors.\n\nThis inspection only reports if the language level of the project or module is 8 or higher."
},
"defaultConfiguration": {
"enabled": false,
@@ -20987,8 +21153,8 @@
"text": "'default' not last case in 'switch'"
},
"fullDescription": {
- "text": "Reports 'switch' statements or expressions in which the 'default' case comes before another case. This construct is unnecessarily confusing. There is a quick-fix that moves the 'default' case to the last position. The fix is available only when a given branch has 'break'/'yield' at the end. Example: 'switch (n) {\n default:\n System.out.println();\n break;\n case 1:\n break;\n }' After the quick-fix is applied: 'switch (n) {\n case 1:\n break;\n default:\n System.out.println();\n break;\n }'",
- "markdown": "Reports `switch` statements or expressions in which the `default` case comes before another case.\n\nThis construct is unnecessarily confusing.\nThere is a quick-fix that moves the `default` case to the last position.\nThe fix is available only when a given branch has `break`/`yield` at the end.\n\nExample:\n\n\n switch (n) {\n default:\n System.out.println();\n break;\n case 1:\n break;\n }\n\nAfter the quick-fix is applied:\n\n\n switch (n) {\n case 1:\n break;\n default:\n System.out.println();\n break;\n }\n"
+ "text": "Reports 'switch' statements or expressions in which the 'default' branch is positioned before another case. Such a construct is unnecessarily confusing. A quick-fix is provided to move the 'default' branch to the last position, if possible. Example: 'switch (n) {\n default:\n System.out.println();\n break;\n case 1:\n break;\n }' After the quick-fix is applied: 'switch (n) {\n case 1:\n break;\n default:\n System.out.println();\n break;\n }'",
+ "markdown": "Reports `switch` statements or expressions in which the `default` branch is positioned before another case. Such a construct is unnecessarily confusing. A quick-fix is provided to move the `default` branch to the last position, if possible.\n\n**Example:**\n\n\n switch (n) {\n default:\n System.out.println();\n break;\n case 1:\n break;\n }\n\nAfter the quick-fix is applied:\n\n\n switch (n) {\n case 1:\n break;\n default:\n System.out.println();\n break;\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -21004,7 +21170,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -21052,7 +21218,7 @@
{
"id": "LocalCanBeFinal",
"shortDescription": {
- "text": "Local variable or parameter can be final"
+ "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.",
@@ -21140,7 +21306,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -21174,7 +21340,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -21208,7 +21374,7 @@
{
"target": {
"id": "Manifest",
- "index": 88,
+ "index": 87,
"toolComponent": {
"name": "QDJVM"
}
@@ -21222,7 +21388,7 @@
{
"id": "AtomicFieldUpdaterIssues",
"shortDescription": {
- "text": "Inconsistent AtomicFieldUpdater declaration"
+ "text": "Inconsistent 'AtomicFieldUpdater' declaration"
},
"fullDescription": {
"text": "Reports issues with 'AtomicLongFieldUpdater', 'AtomicIntegerFieldUpdater', or 'AtomicReferenceFieldUpdater' fields (the 'java.util.concurrent.atomic' package). The reported issues are identical to the runtime problems that can happen with atomic field updaters: specified field not found, specified field not accessible, specified field has a wrong type, and so on. Examples: 'class A {\n private static volatile int value = 0;\n private static final AtomicIntegerFieldUpdater updater =\n AtomicIntegerFieldUpdater.newUpdater((A.class), \"value\"); // warning: Field 'value' has 'static' modifier\n }' 'class B {\n private static final AtomicIntegerFieldUpdater updater =\n AtomicIntegerFieldUpdater.newUpdater(B.class, \"value\"); // warning: No field named 'value' found in class 'B'\n }'",
@@ -21276,7 +21442,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -21290,7 +21456,7 @@
{
"id": "ThrowableNotThrown",
"shortDescription": {
- "text": "Throwable not thrown"
+ "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 }'",
@@ -21310,7 +21476,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -21327,8 +21493,8 @@
"text": "Cleaner captures object reference"
},
"fullDescription": {
- "text": "Reports 'Runnable' passed to a 'Cleaner.register()' capturing reference that leads to a memory leak. Possible sources of this problem: Lambda using non-static methods, fields, or 'this' itself Non-static inner class (anonymous or not) always captures this reference Instance method reference Access to outer class non-static members from non-static inner class Sample of code that will be reported: 'int fileDescriptor;\n Cleaner.Cleanable cleanable = Cleaner.create().register(this, () -> {\n System.out.println(\"adsad\");\n //this is captured via fileDescriptor\n fileDescriptor = 0;\n });' This inspection only reports if the language level of the project or module is 9 or higher. New in 2018.1",
- "markdown": "Reports `Runnable` passed to a `Cleaner.register()` capturing reference that leads to a memory leak.\n\nPossible sources of this problem:\n\n* Lambda using non-static methods, fields, or `this` itself\n* Non-static inner class (anonymous or not) always captures this reference\n* Instance method reference\n* Access to outer class non-static members from non-static inner class\n\nSample of code that will be reported:\n\n\n int fileDescriptor;\n Cleaner.Cleanable cleanable = Cleaner.create().register(this, () -> {\n System.out.println(\"adsad\");\n //this is captured via fileDescriptor\n fileDescriptor = 0;\n });\n\nThis inspection only reports if the language level of the project or module is 9 or higher.\n\nNew in 2018.1"
+ "text": "Reports 'Runnable' passed to a 'Cleaner.register()' capturing reference being registered. If the reference is captured, it will never be phantom reachable and the cleaning action will never be invoked. Possible sources of this problem: Lambda using non-static methods, fields, or 'this' itself Non-static inner class (anonymous or not) always captures this reference in java up to 18 version Instance method reference Access to outer class non-static members from non-static inner class Sample of code that will be reported: 'int fileDescriptor;\n Cleaner.Cleanable cleanable = Cleaner.create().register(this, () -> {\n System.out.println(\"adsad\");\n //this is captured via fileDescriptor\n fileDescriptor = 0;\n });' This inspection only reports if the language level of the project or module is 9 or higher. New in 2018.1",
+ "markdown": "Reports `Runnable` passed to a `Cleaner.register()` capturing reference being registered. If the reference is captured, it will never be phantom reachable and the cleaning action will never be invoked.\n\nPossible sources of this problem:\n\n* Lambda using non-static methods, fields, or `this` itself\n* Non-static inner class (anonymous or not) always captures this reference in java up to 18 version\n* Instance method reference\n* Access to outer class non-static members from non-static inner class\n\nSample of code that will be reported:\n\n\n int fileDescriptor;\n Cleaner.Cleanable cleanable = Cleaner.create().register(this, () -> {\n System.out.println(\"adsad\");\n //this is captured via fileDescriptor\n fileDescriptor = 0;\n });\n\nThis inspection only reports if the language level of the project or module is 9 or higher.\n\nNew in 2018.1"
},
"defaultConfiguration": {
"enabled": true,
@@ -21344,7 +21510,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -21412,7 +21578,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -21446,7 +21612,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -21514,7 +21680,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -21548,7 +21714,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -21562,7 +21728,7 @@
{
"id": "NonSerializableObjectBoundToHttpSession",
"shortDescription": {
- "text": "Non-serializable object bound to HttpSession"
+ "text": "Non-serializable object bound to 'HttpSession'"
},
"fullDescription": {
"text": "Reports objects of classes not implementing 'java.io.Serializable' used as arguments to 'javax.servlet.http.HttpSession.setAttribute()' or 'javax.servlet.http.HttpSession.putValue()'. Such objects will not be serialized if the 'HttpSession' is passivated or migrated, and may result in difficult-to-diagnose bugs. This inspection assumes objects of the types 'java.util.Collection' and 'java.util.Map' to be 'Serializable', unless type parameters are non-'Serializable'. Example: 'void foo(HttpSession session) {\n session.setAttribute(\"foo\", new NonSerializable());\n }\n static class NonSerializable {}'",
@@ -21582,41 +21748,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "BeforeOrAfterIsPublicVoidNoArg",
- "shortDescription": {
- "text": "Malformed @Before or @After method"
- },
- "fullDescription": {
- "text": "Reports JUnit 4 '@Before' or '@After' methods that are not declared 'public', do not return 'void', or take arguments. Such methods are easy to create inadvertently, but they will not be executed by JUnit tests runners. The inspection provides fixes for method signatures. Example: '@Before private int foo(int arg) { ... }' After the quick-fix is applied: '@Before public void foo() { ... }'",
- "markdown": "Reports JUnit 4 `@Before` or `@After` methods that are not declared `public`, do not return `void`, or take arguments. Such methods are easy to create inadvertently, but they will not be executed by JUnit tests runners.\n\nThe inspection provides fixes for method signatures.\n\n**Example:**\n\n\n @Before private int foo(int arg) { ... }\n\nAfter the quick-fix is applied:\n\n\n @Before public void foo() { ... }\n"
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -21630,7 +21762,7 @@
{
"id": "ThreadLocalNotStaticFinal",
"shortDescription": {
- "text": "ThreadLocal field not declared static final"
+ "text": "'ThreadLocal' field not declared 'static final'"
},
"fullDescription": {
"text": "Reports fields of type 'java.lang.ThreadLocal' that are not declared 'static final'. In the most common case, a 'java.lang.ThreadLocal' instance associates state with a thread. A non-static non-final 'java.lang.ThreadLocal' field associates state with an instance-thread combination. This is usually unnecessary and quite often is a bug that can cause memory leaks and incorrect behavior. A quick-fix is suggested to make the field 'static final'. Example: 'private ThreadLocal tl = ThreadLocal.withInitial(() -> Boolean.TRUE);'",
@@ -21698,7 +21830,7 @@
{
"id": "CallToNativeMethodWhileLocked",
"shortDescription": {
- "text": "Call to a native method while locked"
+ "text": "Call to a 'native' method while locked"
},
"fullDescription": {
"text": "Reports calls 'native' methods within a 'synchronized' block or method. When possible, it's better to keep calls to 'native' methods out of the synchronized context because such calls cause an expensive context switch and may lead to performance issues. Example: 'native void nativeMethod();\n\n void example(){\n synchronized (lock){\n nativeMethod();//warning\n }\n }'",
@@ -21786,7 +21918,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -21820,7 +21952,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -21854,7 +21986,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -21888,7 +22020,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -21900,16 +22032,16 @@
]
},
{
- "id": "MaskedAssertion",
+ "id": "StringTokenizerDelimiter",
"shortDescription": {
- "text": "Assertion is masked via 'catch'"
+ "text": "Duplicated delimiters in 'StringTokenizer'"
},
"fullDescription": {
- "text": "Reports assert statements and test framework assertions that are masked using catch blocks. Such assertions will never fail, as 'AssertionError' will be caught and silently ignored. Example 1: 'void javaAssertion() {\n try {\n ...\n assert 1 == 2; // the assertion is silently ignored\n } catch (AssertionError e) {}\n}' Example 2: '@Test\nvoid testWithAssertJ() {\n try {\n ...\n assertThat(1).as(\"test\").isEqualTo(2); // the assertion is silently ignored\n } catch (AssertionError e) {}\n}' Example 3: '@Test\nvoid testWithJunit() {\n try {\n ...\n assertEquals(1, 2); // the assertion is silently ignored\n } catch (AssertionError e) {}\n}' New in 2020.3",
- "markdown": "Reports assert statements and test framework assertions that are masked using catch blocks. Such assertions will never fail, as `AssertionError` will be caught and silently ignored.\n\n**Example 1:**\n\n\n void javaAssertion() {\n try {\n ...\n assert 1 == 2; // the assertion is silently ignored\n } catch (AssertionError e) {}\n }\n\n**Example 2:**\n\n\n @Test\n void testWithAssertJ() {\n try {\n ...\n assertThat(1).as(\"test\").isEqualTo(2); // the assertion is silently ignored\n } catch (AssertionError e) {}\n }\n\n**Example 3:**\n\n\n @Test\n void testWithJunit() {\n try {\n ...\n assertEquals(1, 2); // the assertion is silently ignored\n } catch (AssertionError e) {}\n }\n\nNew in 2020.3"
+ "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\")`."
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -21921,8 +22053,8 @@
"relationships": [
{
"target": {
- "id": "Java/Test frameworks",
- "index": 98,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -21934,16 +22066,16 @@
]
},
{
- "id": "StringTokenizerDelimiter",
+ "id": "MaskedAssertion",
"shortDescription": {
- "text": "Duplicated delimiters in java.util.StringTokenizer"
+ "text": "Assertion is suppressed by 'catch'"
},
"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 'assert' statements and test framework assertions that are suppressed by a surrounding catch block. Such assertions will never fail, as the thrown 'AssertionError' will be caught and silently ignored. Example 1: 'void javaAssertion() {\n try {\n ...\n assert 1 == 2;\n } catch (AssertionError e) {\n // the assertion is silently ignored\n }\n }' Example 2: '@Test\n void testWithAssertJ() {\n try {\n ...\n assertThat(1).as(\"test\").isEqualTo(2);\n } catch (AssertionError e) {\n // the assertion is silently ignored\n }\n }' Example 3: '@Test\n void testWithJunit() {\n try {\n ...\n assertEquals(1, 2);\n } catch (AssertionError e) {\n // the assertion is silently ignored\n }\n }' New in 2020.3",
+ "markdown": "Reports `assert` statements and test framework assertions that are suppressed by a surrounding catch block. Such assertions will never fail, as the thrown `AssertionError` will be caught and silently ignored.\n\n**Example 1:**\n\n\n void javaAssertion() {\n try {\n ...\n assert 1 == 2;\n } catch (AssertionError e) {\n // the assertion is silently ignored\n }\n }\n\n**Example 2:**\n\n\n @Test\n void testWithAssertJ() {\n try {\n ...\n assertThat(1).as(\"test\").isEqualTo(2);\n } catch (AssertionError e) {\n // the assertion is silently ignored\n }\n }\n\n**Example 3:**\n\n\n @Test\n void testWithJunit() {\n try {\n ...\n assertEquals(1, 2);\n } catch (AssertionError e) {\n // the assertion is silently ignored\n }\n }\n\nNew in 2020.3"
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -21955,8 +22087,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Test frameworks",
+ "index": 97,
"toolComponent": {
"name": "QDJVM"
}
@@ -21990,7 +22122,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -22004,7 +22136,7 @@
{
"id": "InstantiatingObjectToGetClassObject",
"shortDescription": {
- "text": "Instantiating object to get Class object"
+ "text": "Instantiating object to get 'Class' object"
},
"fullDescription": {
"text": "Reports code that instantiates a class to get its class object. It is more performant to access the class object directly by name. Example: 'Class<?> c = new Sample().getClass();' After the quick-fix is applied: 'Class<?> c = Sample.class;'",
@@ -22058,7 +22190,7 @@
{
"target": {
"id": "Java/Bitwise operation issues",
- "index": 156,
+ "index": 155,
"toolComponent": {
"name": "QDJVM"
}
@@ -22092,7 +22224,7 @@
{
"target": {
"id": "Java/Logging",
- "index": 51,
+ "index": 52,
"toolComponent": {
"name": "QDJVM"
}
@@ -22138,13 +22270,13 @@
]
},
{
- "id": "ExtendsThrowable",
+ "id": "AutoBoxing",
"shortDescription": {
- "text": "Class directly extends 'java.lang.Throwable'"
+ "text": "Auto-boxing"
},
"fullDescription": {
- "text": "Reports classes that directly extend 'java.lang.Throwable'. Extending 'java.lang.Throwable' directly is generally considered bad practice. It is usually enough to extend 'java.lang.RuntimeException', 'java.lang.Exception', or - in special cases - 'java.lang.Error'. Example: 'class EnigmaThrowable extends Throwable {} // warning: Class 'EnigmaThrowable' directly extends 'java.lang.Throwable''",
- "markdown": "Reports classes that directly extend `java.lang.Throwable`.\n\nExtending `java.lang.Throwable` directly is generally considered bad practice.\nIt is usually enough to extend `java.lang.RuntimeException`, `java.lang.Exception`, or - in special\ncases - `java.lang.Error`.\n\n**Example:**\n\n\n class EnigmaThrowable extends Throwable {} // warning: Class 'EnigmaThrowable' directly extends 'java.lang.Throwable'\n"
+ "text": "Reports expressions that are affected by autoboxing conversion (automatic wrapping of primitive values as objects). Try not to use objects instead of primitives. It might significantly affect performance. Example: 'Integer x = 42;' The quick-fix makes the conversion explicit: 'Integer x = Integer.valueOf(42);' AutoBoxing appeared in Java 5. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports expressions that are affected by autoboxing conversion (automatic wrapping of primitive values as objects). Try not to use objects instead of primitives. It might significantly affect performance.\n\n**Example:**\n\n Integer x = 42;\n\nThe quick-fix makes the conversion explicit:\n\n Integer x = Integer.valueOf(42);\n\n\n*AutoBoxing* appeared in Java 5.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -22159,8 +22291,8 @@
"relationships": [
{
"target": {
- "id": "Java/Error handling",
- "index": 14,
+ "id": "Java/Performance",
+ "index": 10,
"toolComponent": {
"name": "QDJVM"
}
@@ -22172,13 +22304,13 @@
]
},
{
- "id": "AutoBoxing",
+ "id": "ExtendsThrowable",
"shortDescription": {
- "text": "Auto-boxing"
+ "text": "Class directly extends 'Throwable'"
},
"fullDescription": {
- "text": "Reports expressions that are affected by autoboxing conversion (automatic wrapping of primitive values as objects). Try not to use objects instead of primitives. It might significantly affect performance. Example: 'Integer x = 42;' The quick-fix makes the conversion explicit: 'Integer x = Integer.valueOf(42);' Autoboxing conversion is not supported in Java 1.4 and earlier JVM.",
- "markdown": "Reports expressions that are affected by autoboxing conversion (automatic wrapping of primitive values as objects). Try not to use objects instead of primitives. It might significantly affect performance.\n\n**Example:**\n\n Integer x = 42;\n\nThe quick-fix makes the conversion explicit:\n\n Integer x = Integer.valueOf(42);\n\nAutoboxing conversion is not supported in Java 1.4 and earlier JVM."
+ "text": "Reports classes that directly extend 'java.lang.Throwable'. Extending 'java.lang.Throwable' directly is generally considered bad practice. It is usually enough to extend 'java.lang.RuntimeException', 'java.lang.Exception', or - in special cases - 'java.lang.Error'. Example: 'class EnigmaThrowable extends Throwable {} // warning: Class 'EnigmaThrowable' directly extends 'java.lang.Throwable''",
+ "markdown": "Reports classes that directly extend `java.lang.Throwable`.\n\nExtending `java.lang.Throwable` directly is generally considered bad practice.\nIt is usually enough to extend `java.lang.RuntimeException`, `java.lang.Exception`, or - in special\ncases - `java.lang.Error`.\n\n**Example:**\n\n\n class EnigmaThrowable extends Throwable {} // warning: Class 'EnigmaThrowable' directly extends 'java.lang.Throwable'\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -22193,8 +22325,8 @@
"relationships": [
{
"target": {
- "id": "Java/Performance",
- "index": 10,
+ "id": "Java/Error handling",
+ "index": 14,
"toolComponent": {
"name": "QDJVM"
}
@@ -22228,7 +22360,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -22242,7 +22374,7 @@
{
"id": "ThreadDeathRethrown",
"shortDescription": {
- "text": "'java.lang.ThreadDeath' not rethrown"
+ "text": "'ThreadDeath' not rethrown"
},
"fullDescription": {
"text": "Reports 'try' statements that catch 'java.lang.ThreadDeath' and do not rethrow the exception. Example: 'try {\n executeInParallel(request);\n } catch (ThreadDeath ex) { // warning: ThreadDeath 'ex' not rethrown\n return false;\n }'",
@@ -22274,13 +22406,13 @@
]
},
{
- "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,
@@ -22295,8 +22427,8 @@
"relationships": [
{
"target": {
- "id": "Java/Cloning issues",
- "index": 87,
+ "id": "Java/Declaration redundancy",
+ "index": 12,
"toolComponent": {
"name": "QDJVM"
}
@@ -22308,13 +22440,13 @@
]
},
{
- "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,
@@ -22329,8 +22461,8 @@
"relationships": [
{
"target": {
- "id": "Java/Declaration redundancy",
- "index": 12,
+ "id": "Java/Cloning issues",
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -22432,7 +22564,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -22444,16 +22576,16 @@
]
},
{
- "id": "UnnecessaryRecordModifier",
+ "id": "SerializableRecordContainsIgnoredMembers",
"shortDescription": {
- "text": "Unnecessary 'record' modifier"
+ "text": "'record' contains ignored members"
},
"fullDescription": {
- "text": "Reports redundant 'final', 'static' modifiers on records. Example: 'final record R() {\n}\n\nclass Test {\n static record R() {\n }\n}'",
- "markdown": "Reports redundant `final`, `static` modifiers on records.\n\nExample:\n\n\n final record R() {\n }\n\n class Test {\n static record R() {\n }\n }\n"
+ "text": "Reports serialization methods or fields defined in a 'record' class. Serialization methods include 'writeObject()', 'readObject()', 'readObjectNoData()', 'writeExternal()', and 'readExternal()' and the field 'serialPersistentFields'. These members are not used for the serialization or deserialization of records and therefore unnecessary. Examples: 'record R1() implements Serializable {\n // The field is ignored during record serialization\n @Serial\n private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];\n\n // The method is ignored during record serialization\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }' 'record R2() implements Externalizable {\n // The method is ignored during record serialization\n @Override\n public void writeExternal(ObjectOutput out) throws IOException {\n }\n\n // The method is ignored during record serialization\n @Override\n public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {\n }\n }' This inspection only reports if the language level of the project or module is 14 or higher. New in 2020.3",
+ "markdown": "Reports serialization methods or fields defined in a `record` class. Serialization methods include `writeObject()`, `readObject()`, `readObjectNoData()`, `writeExternal()`, and `readExternal()` and the field `serialPersistentFields`. These members are not used for the serialization or deserialization of records and therefore unnecessary.\n\n**Examples:**\n\n\n record R1() implements Serializable {\n // The field is ignored during record serialization\n @Serial\n private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];\n\n // The method is ignored during record serialization\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }\n\n\n record R2() implements Externalizable {\n // The method is ignored during record serialization\n @Override\n public void writeExternal(ObjectOutput out) throws IOException {\n }\n\n // The method is ignored during record serialization\n @Override\n public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {\n }\n }\n\nThis inspection only reports if the language level of the project or module is 14 or higher.\n\nNew in 2020.3"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -22465,8 +22597,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Serialization issues",
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -22478,16 +22610,16 @@
]
},
{
- "id": "SerializableRecordContainsIgnoredMembers",
+ "id": "UnnecessarilyQualifiedInnerClassAccess",
"shortDescription": {
- "text": "'record' contains ignored members"
+ "text": "Unnecessarily qualified inner class access"
},
"fullDescription": {
- "text": "Reports serialization methods or fields defined in a 'record' class. Serialization methods include 'writeObject()', 'readObject()', 'readObjectNoData()', 'writeExternal()', and 'readExternal()' and the field 'serialPersistentFields'. These members are not used for the serialization or deserialization of records and therefore unnecessary. Examples: 'record R1() implements Serializable {\n // The field is ignored during record serialization\n @Serial\n private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];\n\n // The method is ignored during record serialization\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }' 'record R2() implements Externalizable {\n // The method is ignored during record serialization\n @Override\n public void writeExternal(ObjectOutput out) throws IOException {\n }\n\n // The method is ignored during record serialization\n @Override\n public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {\n }\n }' This inspection applies to language level 14 or higher. New in 2020.3",
- "markdown": "Reports serialization methods or fields defined in a `record` class. Serialization methods include `writeObject()`, `readObject()`, `readObjectNoData()`, `writeExternal()`, and `readExternal()` and the field `serialPersistentFields`. These members are not used for the serialization or deserialization of records and therefore unnecessary.\n\n**Examples:**\n\n\n record R1() implements Serializable {\n // The field is ignored during record serialization\n @Serial\n private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];\n\n // The method is ignored during record serialization\n @Serial\n private void writeObject(ObjectOutputStream out) throws IOException {\n }\n }\n\n\n record R2() implements Externalizable {\n // The method is ignored during record serialization\n @Override\n public void writeExternal(ObjectOutput out) throws IOException {\n }\n\n // The method is ignored during record serialization\n @Override\n public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {\n }\n }\n\nThis inspection applies to language level 14 or higher.\n\nNew in 2020.3"
+ "text": "Reports any references to inner classes that are unnecessarily qualified with the name of the enclosing class. Such a qualification can be safely removed, which sometimes adds an import for the inner class. Example: 'class X {\n X.Y foo;\n class Y{}\n }' After the quick-fix is applied: 'class X {\n Y foo;\n class Y{}\n }' Use the Ignore references for which an import is needed option to ignore references to inner classes, where removing the qualification adds an import.",
+ "markdown": "Reports any references to inner classes that are unnecessarily qualified with the name of the enclosing class.\n\nSuch a qualification can be safely removed, which sometimes adds an import for the inner class.\n\nExample:\n\n\n class X {\n X.Y foo;\n class Y{}\n }\n\nAfter the quick-fix is applied:\n\n\n class X {\n Y foo;\n class Y{}\n }\n\nUse the **Ignore references for which an import is needed** option to ignore references to inner classes, where\nremoving the qualification adds an import."
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -22499,8 +22631,8 @@
"relationships": [
{
"target": {
- "id": "Java/Serialization issues",
- "index": 17,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -22512,13 +22644,13 @@
]
},
{
- "id": "UnnecessarilyQualifiedInnerClassAccess",
+ "id": "JavadocLinkAsPlainText",
"shortDescription": {
- "text": "Unnecessarily qualified inner class access"
+ "text": "Link specified as plain text"
},
"fullDescription": {
- "text": "Reports any references to inner classes that are unnecessarily qualified with the name of the enclosing class. Such a qualification can be safely removed, which sometimes adds an import for the inner class. Example: 'class X {\n X.Y foo;\n class Y{}\n }' After the quick-fix is applied: 'class X {\n Y foo;\n class Y{}\n }' Use the Ignore references for which an import is needed option to ignore references to inner classes, where removing the qualification adds an import.",
- "markdown": "Reports any references to inner classes that are unnecessarily qualified with the name of the enclosing class.\n\nSuch a qualification can be safely removed, which sometimes adds an import for the inner class.\n\nExample:\n\n\n class X {\n X.Y foo;\n class Y{}\n }\n\nAfter the quick-fix is applied:\n\n\n class X {\n Y foo;\n class Y{}\n }\n\nUse the **Ignore references for which an import is needed** option to ignore references to inner classes, where\nremoving the qualification adds an import."
+ "text": "Reports links specified as plain text in Javadoc comments. The quick-fix suggests to wrap the link in <a> tag. Example: 'class Main {\n /**\n * https://en.wikipedia.org/\n */\n void foo() {}\n }' After the quick-fix is applied: 'class Main {\n /**\n * <a href=\"https://en.wikipedia.org/\">https://en.wikipedia.org/</a>\n */\n void foo() {}\n }' New in 2022.1",
+ "markdown": "Reports links specified as plain text in Javadoc comments.\n\n\nThe quick-fix suggests to wrap the link in \\<a\\> tag.\n\n**Example:**\n\n\n class Main {\n /**\n * https://en.wikipedia.org/\n */\n void foo() {}\n }\n\nAfter the quick-fix is applied:\n\n\n class Main {\n /**\n * <a href=\"https://en.wikipedia.org/\">https://en.wikipedia.org/</a>\n */\n void foo() {}\n }\n\nNew in 2022.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -22533,8 +22665,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Javadoc",
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -22602,7 +22734,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -22636,7 +22768,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -22670,7 +22802,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -22687,8 +22819,8 @@
"text": "Usages of API which isn't available at the configured language level"
},
"fullDescription": {
- "text": "Reports usages of the API that is unavailable at the configured language level. API availability is defined by the version specified in the '@since' tag in the documentation. This may be useful because the language level can differ from your project SDK, and there may be no such API in the JDK that is used to run the code. Use the Forbid API usages option to forbid usages of the API in respect to the project or custom language level.",
- "markdown": "Reports usages of the API that is unavailable at the configured language level.\n\nAPI availability is defined\nby the version specified in the `@since` tag in the documentation. This may be useful because\nthe language level can differ from your project SDK, and there may be no such API in the JDK that is used to run the code.\n\n\nUse the **Forbid API usages** option to forbid usages of the API in respect to the project or custom language level."
+ "text": "Reports usages of the API that is unavailable at the configured language level. This inspection does 3 things: Highlight usage of generified classes when the language level is below Java 7. Highlight when default methods are not overridden and the language level is below Java 8. Highlight usage of API when the language level is lower than marked using the '@since' tag in the documentation. Use the Forbid API usages option to forbid usages of the API in respect to the project or custom language level.",
+ "markdown": "Reports usages of the API that is unavailable at the configured language level. This inspection does 3 things:\n\n* Highlight usage of generified classes when the language level is below Java 7.\n* Highlight when default methods are not overridden and the language level is below Java 8.\n* Highlight usage of API when the language level is lower than marked using the `@since` tag in the documentation.\n\n\nUse the **Forbid API usages** option to forbid usages of the API in respect to the project or custom language level."
},
"defaultConfiguration": {
"enabled": false,
@@ -22703,8 +22835,8 @@
"relationships": [
{
"target": {
- "id": "Java/Java language level migration aids",
- "index": 33,
+ "id": "JVM languages",
+ "index": 1,
"toolComponent": {
"name": "QDJVM"
}
@@ -22755,8 +22887,8 @@
"text": "Default File Template Usage"
},
"fullDescription": {
- "text": "Reports usages of the default file template for File Header and suggests changing it.",
- "markdown": "Reports usages of the default file template for File Header and suggests changing it."
+ "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)"
},
"defaultConfiguration": {
"enabled": false,
@@ -22772,7 +22904,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -22806,7 +22938,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -22820,7 +22952,7 @@
{
"id": "NonAtomicOperationOnVolatileField",
"shortDescription": {
- "text": "Non-atomic operation on volatile field"
+ "text": "Non-atomic operation on 'volatile' field"
},
"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 }'",
@@ -22874,7 +23006,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -22908,7 +23040,7 @@
{
"target": {
"id": "Java/Compiler issues",
- "index": 124,
+ "index": 122,
"toolComponent": {
"name": "QDJVM"
}
@@ -22942,7 +23074,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -22976,7 +23108,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -23044,7 +23176,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -23078,7 +23210,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -23126,7 +23258,7 @@
{
"id": "MissingDeprecatedAnnotation",
"shortDescription": {
- "text": "Missing @Deprecated annotation"
+ "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.",
@@ -23146,7 +23278,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -23192,19 +23324,19 @@
]
},
{
- "id": "CachedNumberConstructorCall",
+ "id": "MustAlreadyBeRemovedApi",
"shortDescription": {
- "text": "Number constructor call with primitive argument"
+ "text": "API must already be removed"
},
"fullDescription": {
- "text": "Reports instantiations of new 'Long', 'Integer', 'Short', or 'Byte' objects that have a primitive 'long', 'integer', 'short', or 'byte' argument. It is recommended that you use the static method 'valueOf()' introduced in Java 5. By default, this method caches objects for values between -128 and 127 inclusive. Example: 'Integer i = new Integer(1);\n Long l = new Long(1L);' After the quick-fix is applied, the code changes to: 'Integer i = Integer.valueOf(1);\n Long l = Long.valueOf(1L);' This inspection reports if the language level of the project or module is 5 or higher Use the Ignore new number expressions with a String argument option to ignore calls to number constructors with a 'String' argument. Use the Report only when constructor is @Deprecated option to only report calls to deprecated constructors. 'Long', 'Integer', 'Short' and 'Byte' constructors are deprecated since JDK 9.",
- "markdown": "Reports instantiations of new `Long`, `Integer`, `Short`, or `Byte` objects that have a primitive `long`, `integer`, `short`, or `byte` argument.\n\nIt is recommended that you use the static method `valueOf()`\nintroduced in Java 5. By default, this method caches objects for values between -128 and\n127 inclusive.\n\n**Example:**\n\n\n Integer i = new Integer(1);\n Long l = new Long(1L);\n\nAfter the quick-fix is applied, the code changes to:\n\n\n Integer i = Integer.valueOf(1);\n Long l = Long.valueOf(1L);\n\nThis inspection reports if the language level of the project or module is 5 or higher\n\n\nUse the **Ignore new number expressions with a String argument** option to ignore calls to number constructors with a `String` argument.\n\n\nUse the **Report only when constructor is @Deprecated** option to only report calls to deprecated constructors.\n`Long`, `Integer`, `Short` and `Byte` constructors are deprecated since JDK 9."
+ "text": "Reports declarations marked with '@ApiStatus.ScheduledForRemoval' that should have been removed in the current version of the declaring library. It compares the specified scheduled removal version with the version that you can set below. Specify the version as a string separated with dots and optionally postfixed with 'alpha', 'beta', 'snapshot', or 'eap'. Examples of valid versions: '1.0', '2.3.1', '2018.1', '7.5-snapshot', '3.0-eap'. Version comparison is intuitive: '1.0 < 2.0', '1.0-eap < 1.0', '2.3-snapshot < 2.3' and so on. For detailed comparison logic, refer to the implementation of VersionComparatorUtil.",
+ "markdown": "Reports declarations marked with `@ApiStatus.ScheduledForRemoval` that should have been removed in the current version of the declaring library.\n\nIt compares the specified scheduled removal version with the version that you can set below.\n\n\nSpecify the version as a string separated with dots and optionally postfixed with\n`alpha`, `beta`, `snapshot`, or `eap`.\n\nExamples of valid versions: `1.0`, `2.3.1`, `2018.1`, `7.5-snapshot`, `3.0-eap`.\n\n\nVersion comparison is intuitive: `1.0 < 2.0`, `1.0-eap < 1.0`, `2.3-snapshot < 2.3` and so on.\nFor detailed comparison logic, refer to the implementation of [VersionComparatorUtil](https://github.com/JetBrains/intellij-community/blob/master/platform/util-rt/src/com/intellij/util/text/VersionComparatorUtil.java)."
},
"defaultConfiguration": {
"enabled": true,
- "level": "warning",
+ "level": "error",
"parameters": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
@@ -23213,8 +23345,8 @@
"relationships": [
{
"target": {
- "id": "Java/Numeric issues",
- "index": 27,
+ "id": "JVM languages",
+ "index": 1,
"toolComponent": {
"name": "QDJVM"
}
@@ -23226,19 +23358,19 @@
]
},
{
- "id": "MustAlreadyBeRemovedApi",
+ "id": "CachedNumberConstructorCall",
"shortDescription": {
- "text": "API must already be removed"
+ "text": "Number constructor call with primitive argument"
},
"fullDescription": {
- "text": "Reports declarations marked with '@ApiStatus.ScheduledForRemoval' that should have been removed in the current version of the declaring library. It compares the specified scheduled removal version with the version that you can set below. Specify the version as a string separated with dots and optionally postfixed with 'alpha', 'beta', 'snapshot', or 'eap'. Examples of valid versions: '1.0', '2.3.1', '2018.1', '7.5-snapshot', '3.0-eap'. Version comparison is intuitive: '1.0 < 2.0', '1.0-eap < 1.0', '2.3-snapshot < 2.3' and so on. For detailed comparison logic, refer to the implementation of VersionComparatorUtil.",
- "markdown": "Reports declarations marked with `@ApiStatus.ScheduledForRemoval` that should have been removed in the current version of the declaring library.\n\nIt compares the specified scheduled removal version with the version that you can set below.\n\n\nSpecify the version as a string separated with dots and optionally postfixed with\n`alpha`, `beta`, `snapshot`, or `eap`.\n\nExamples of valid versions: `1.0`, `2.3.1`, `2018.1`, `7.5-snapshot`, `3.0-eap`.\n\n\nVersion comparison is intuitive: `1.0 < 2.0`, `1.0-eap < 1.0`, `2.3-snapshot < 2.3` and so on.\nFor detailed comparison logic, refer to the implementation of [VersionComparatorUtil](https://github.com/JetBrains/intellij-community/blob/master/platform/util-rt/src/com/intellij/util/text/VersionComparatorUtil.java)."
+ "text": "Reports instantiations of new 'Long', 'Integer', 'Short', or 'Byte' objects that have a primitive 'long', 'integer', 'short', or 'byte' argument. It is recommended that you use the static method 'valueOf()' introduced in Java 5. By default, this method caches objects for values between -128 and 127 inclusive. Example: 'Integer i = new Integer(1);\n Long l = new Long(1L);' After the quick-fix is applied, the code changes to: 'Integer i = Integer.valueOf(1);\n Long l = Long.valueOf(1L);' This inspection only reports if the language level of the project or module is 5 or higher Use the Ignore new number expressions with a String argument option to ignore calls to number constructors with a 'String' argument. Use the Report only when constructor is @Deprecated option to only report calls to deprecated constructors. 'Long', 'Integer', 'Short' and 'Byte' constructors are deprecated since JDK 9.",
+ "markdown": "Reports instantiations of new `Long`, `Integer`, `Short`, or `Byte` objects that have a primitive `long`, `integer`, `short`, or `byte` argument.\n\nIt is recommended that you use the static method `valueOf()`\nintroduced in Java 5. By default, this method caches objects for values between -128 and\n127 inclusive.\n\n**Example:**\n\n\n Integer i = new Integer(1);\n Long l = new Long(1L);\n\nAfter the quick-fix is applied, the code changes to:\n\n\n Integer i = Integer.valueOf(1);\n Long l = Long.valueOf(1L);\n\nThis inspection only reports if the language level of the project or module is 5 or higher\n\n\nUse the **Ignore new number expressions with a String argument** option to ignore calls to number constructors with a `String` argument.\n\n\nUse the **Report only when constructor is @Deprecated** option to only report calls to deprecated constructors.\n`Long`, `Integer`, `Short` and `Byte` constructors are deprecated since JDK 9."
},
"defaultConfiguration": {
"enabled": true,
- "level": "error",
+ "level": "warning",
"parameters": {
- "ideaSeverity": "ERROR",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -23247,8 +23379,8 @@
"relationships": [
{
"target": {
- "id": "JVM languages",
- "index": 1,
+ "id": "Java/Numeric issues",
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -23282,7 +23414,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -23299,8 +23431,8 @@
"text": "'SimpleDateFormat' without locale"
},
"fullDescription": {
- "text": "Reports instantiations of 'java.util.SimpleDateFormat' that do not specify 'java.util.Locale'. These calls might be incorrect in an internationalized environment. 'Example:' 'new SimpleDateFormat(\"yyyy\");'",
- "markdown": "Reports instantiations of `java.util.SimpleDateFormat` that do not specify `java.util.Locale`. These calls might be incorrect in an internationalized environment.\n\n`Example:`\n\n new SimpleDateFormat(\"yyyy\");\n"
+ "text": "Reports instantiations of 'java.util.SimpleDateFormat' or 'java.time.format.DateTimeFormatter' that do not specify a 'java.util.Locale'. These calls will use the platform default locale, which depends on the OS settings. This can lead to surprising behaviour when the code is run on a different platform or the OS settings are changed. 'Example:' 'new SimpleDateFormat(\"yyyy\");\n DateTimeFormatter.ofPattern(\"d/M/y\");'",
+ "markdown": "Reports instantiations of `java.util.SimpleDateFormat` or `java.time.format.DateTimeFormatter` that do not specify a `java.util.Locale`. These calls will use the platform default locale, which depends on the OS settings. This can lead to surprising behaviour when the code is run on a different platform or the OS settings are changed.\n\n`Example:`\n\n\n new SimpleDateFormat(\"yyyy\");\n DateTimeFormatter.ofPattern(\"d/M/y\");\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -23330,11 +23462,11 @@
{
"id": "AnnotationClass",
"shortDescription": {
- "text": "Annotation class"
+ "text": "Annotation interface"
},
"fullDescription": {
- "text": "Reports annotation interfaces. Such interfaces are not supported in Java 1.4 and earlier JVM.",
- "markdown": "Reports annotation interfaces. Such interfaces are not supported in Java 1.4 and earlier JVM."
+ "text": "Reports annotation interfaces. Such interfaces are not supported under Java 1.4 and earlier.",
+ "markdown": "Reports annotation interfaces. Such interfaces are not supported under Java 1.4 and earlier."
},
"defaultConfiguration": {
"enabled": false,
@@ -23350,7 +23482,7 @@
{
"target": {
"id": "Java/Java language level issues",
- "index": 110,
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -23384,7 +23516,7 @@
{
"target": {
"id": "Java/Finalization",
- "index": 50,
+ "index": 51,
"toolComponent": {
"name": "QDJVM"
}
@@ -23418,7 +23550,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -23452,7 +23584,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -23486,7 +23618,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -23588,7 +23720,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -23639,8 +23771,8 @@
"text": "Missing '@Override' annotation"
},
"fullDescription": {
- "text": "Reports methods overriding superclass methods without the '@java.lang.Override' annotation. Annotating methods improves code readability since it shows the intent. In addition, the compiler emits an error when a signature of the overridden method doesn't match the superclass method. Configure the inspection: Use the Ignore 'equals()', 'hashCode()' and 'toString()' option to ignore these 'java.lang.Object' methods: 'equals()', 'hashCode()', and 'toString()'. The risk that these methods will disappear and your code won't be compiling anymore due to the '@Override' annotation is relatively small. Use the Ignore methods in anonymous classes option to ignore methods in anonymous classes. This inspection is only applicable if the language level of the project or module is 5 or higher.",
- "markdown": "Reports methods overriding superclass methods without the `@java.lang.Override` annotation.\n\n\nAnnotating methods improves code readability since it shows the intent. In addition, the compiler emits an error when a signature\nof the overridden method doesn't match the superclass method.\n\nConfigure the inspection:\n\n* Use the **Ignore 'equals()', 'hashCode()' and 'toString()'** option to ignore these `java.lang.Object` methods: `equals()`, `hashCode()`, and `toString()`. The risk that these methods will disappear and your code won't be compiling anymore due to the `@Override` annotation is relatively small.\n* Use the **Ignore methods in anonymous classes** option to ignore methods in anonymous classes.\n\nThis inspection is only applicable if the language level of the project or module is 5 or higher."
+ "text": "Reports methods overriding superclass methods but are not annotated with '@java.lang.Override'. Annotating methods with '@java.lang.Override' improves code readability since it shows the intent. In addition, the compiler emits an error when a signature of the overridden method doesn't match the superclass method. Example: 'class X {\n public String toString() {\n return \"hello world\";\n }\n }' After the quick-fix is applied: 'class X {\n @Override\n public String toString() {\n return \"hello world\";\n }\n }' Configure the inspection: Use the Ignore 'equals()', 'hashCode()' and 'toString()' option to ignore these 'java.lang.Object' methods: 'equals()', 'hashCode()', and 'toString()'. The risk that these methods will disappear and your code won't be compiling anymore due to the '@Override' annotation is relatively small. Use the Ignore methods in anonymous classes option to ignore methods in anonymous classes. Disable the Highlight method when its overriding methods do not all have the '@Override' annotation option to only warn on the methods missing an '@Override' annotation, and not on overridden methods where one or more descendants are missing an '@Override' annotation. This inspection only reports if the language level of the project or module is 5 or higher.",
+ "markdown": "Reports methods overriding superclass methods but are not annotated with `@java.lang.Override`.\n\n\nAnnotating methods with `@java.lang.Override` improves code readability since it shows the intent.\nIn addition, the compiler emits an error when a signature of the overridden method doesn't match the superclass method.\n\n**Example:**\n\n\n class X {\n public String toString() {\n return \"hello world\";\n }\n }\n \nAfter the quick-fix is applied:\n\n\n class X {\n @Override\n public String toString() {\n return \"hello world\";\n }\n }\n \nConfigure the inspection:\n\n* Use the **Ignore 'equals()', 'hashCode()' and 'toString()'** option to ignore these `java.lang.Object` methods: `equals()`, `hashCode()`, and `toString()`. The risk that these methods will disappear and your code won't be compiling anymore due to the `@Override` annotation is relatively small.\n* Use the **Ignore methods in anonymous classes** option to ignore methods in anonymous classes.\n* Disable the **Highlight method when its overriding methods do not all have the '@Override' annotation** option to only warn on the methods missing an `@Override` annotation, and not on overridden methods where one or more descendants are missing an `@Override` annotation.\n\nThis inspection only reports if the language level of the project or module is 5 or higher."
},
"defaultConfiguration": {
"enabled": true,
@@ -23656,7 +23788,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -23690,7 +23822,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -23724,7 +23856,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -23757,8 +23889,8 @@
"relationships": [
{
"target": {
- "id": "JVM languages",
- "index": 1,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -23826,7 +23958,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -23928,7 +24060,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -23962,7 +24094,7 @@
{
"target": {
"id": "Java/Numeric issues/Cast",
- "index": 104,
+ "index": 103,
"toolComponent": {
"name": "QDJVM"
}
@@ -23996,7 +24128,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -24013,8 +24145,8 @@
"text": "Utility class can be 'enum'"
},
"fullDescription": {
- "text": "Reports utility classes that can be converted to enums. Some coding style guidelines declare to implement utility classes as enums to avoid code coverage issues in 'private' constructors. Example: 'class StringUtils {\n public static final String EMPTY = \"\";\n }' After the quick-fix is applied: 'enum StringUtils {\n ;\n public static final String EMPTY = \"\";\n }'",
- "markdown": "Reports utility classes that can be converted to enums.\n\nSome coding style guidelines declare to implement utility classes as enums\nto avoid code coverage issues in `private` constructors.\n\n**Example:**\n\n\n class StringUtils {\n public static final String EMPTY = \"\";\n }\n\nAfter the quick-fix is applied:\n\n\n enum StringUtils {\n ;\n public static final String EMPTY = \"\";\n }\n"
+ "text": "Reports utility classes that can be converted to enums. Some coding style guidelines require implementing utility classes as enums to avoid code coverage issues in 'private' constructors. Example: 'class StringUtils {\n public static final String EMPTY = \"\";\n }' After the quick-fix is applied: 'enum StringUtils {\n ;\n public static final String EMPTY = \"\";\n }'",
+ "markdown": "Reports utility classes that can be converted to enums.\n\nSome coding style guidelines require implementing utility classes as enums\nto avoid code coverage issues in `private` constructors.\n\n**Example:**\n\n\n class StringUtils {\n public static final String EMPTY = \"\";\n }\n\nAfter the quick-fix is applied:\n\n\n enum StringUtils {\n ;\n public static final String EMPTY = \"\";\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -24030,7 +24162,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -24044,7 +24176,7 @@
{
"id": "ExtendsObject",
"shortDescription": {
- "text": "Class explicitly extends 'java.lang.Object'"
+ "text": "Class explicitly extends 'Object'"
},
"fullDescription": {
"text": "Reports any classes that are explicitly declared to extend 'java.lang.Object'. Such declaration is redundant and can be safely removed. Example: 'class MyClass extends Object {\n }' The quick-fix removes the redundant 'extends Object' clause: 'class MyClass {\n }'",
@@ -24076,6 +24208,40 @@
]
},
{
+ "id": "ReassignedVariable",
+ "shortDescription": {
+ "text": "Reassigned variable"
+ },
+ "fullDescription": {
+ "text": "Reports reassigned variables, which complicate reading and understanding the code. Example: 'int value = 2 * (height + width);\n System.out.println(\"perimeter: \" + value);\n\n value = height * width;\n System.out.println(\"area: \" + value);'",
+ "markdown": "Reports reassigned variables, which complicate reading and understanding the code.\n\nExample:\n\n\n int value = 2 * (height + width);\n System.out.println(\"perimeter: \" + value);\n\n value = height * width;\n System.out.println(\"area: \" + value);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "ideaSeverity": "INFORMATION",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Code style issues",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "MethodNameSameAsClassName",
"shortDescription": {
"text": "Method name same as class name"
@@ -24098,7 +24264,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -24132,7 +24298,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -24166,7 +24332,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -24178,16 +24344,16 @@
]
},
{
- "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",
@@ -24199,8 +24365,8 @@
"relationships": [
{
"target": {
- "id": "Java/Error handling",
- "index": 14,
+ "id": "Java/Control flow issues",
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -24212,16 +24378,16 @@
]
},
{
- "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",
@@ -24233,8 +24399,8 @@
"relationships": [
{
"target": {
- "id": "Java/Control flow issues",
- "index": 26,
+ "id": "Java/Error handling",
+ "index": 14,
"toolComponent": {
"name": "QDJVM"
}
@@ -24251,8 +24417,8 @@
"text": "Reference to empty collection field can be replaced with method call"
},
"fullDescription": {
- "text": "Reports usages of 'java.util.Collections' fields: 'EMPTY_LIST', 'EMPTY_MAP' or 'EMPTY_SET'. These field usages may be replaced with the following method calls: 'emptyList()', 'emptyMap()', or 'emptySet()'. Such method calls prevent unchecked warnings by the compiler because the type parameters can be inferred. Example: 'List<Integer> emptyList = Collections.EMPTY_LIST;' After the quick-fix is applied: 'List<Integer> emptyList = Collections.emptyList();' This inspection works only if the language level of a project or a module is 5 or higher.",
- "markdown": "Reports usages of `java.util.Collections` fields: `EMPTY_LIST`, `EMPTY_MAP` or `EMPTY_SET`. These field usages may be replaced with the following method calls: `emptyList()`, `emptyMap()`, or `emptySet()`. Such method calls prevent unchecked warnings by the compiler because the type parameters can be inferred.\n\n**Example:**\n\n List<Integer> emptyList = Collections.EMPTY_LIST;\n\nAfter the quick-fix is applied:\n\n List<Integer> emptyList = Collections.emptyList();\n\nThis inspection works only if the language level of a project or a module is 5 or higher."
+ "text": "Reports usages of 'java.util.Collections' fields: 'EMPTY_LIST', 'EMPTY_MAP' or 'EMPTY_SET'. These field usages may be replaced with the following method calls: 'emptyList()', 'emptyMap()', or 'emptySet()'. Such method calls prevent unchecked warnings by the compiler because the type parameters can be inferred. Example: 'List<Integer> emptyList = Collections.EMPTY_LIST;' After the quick-fix is applied: 'List<Integer> emptyList = Collections.emptyList();' This inspection only reports if the language level of the project or module is 5 or higher.",
+ "markdown": "Reports usages of `java.util.Collections` fields: `EMPTY_LIST`, `EMPTY_MAP` or `EMPTY_SET`. These field usages may be replaced with the following method calls: `emptyList()`, `emptyMap()`, or `emptySet()`. Such method calls prevent unchecked warnings by the compiler because the type parameters can be inferred.\n\n**Example:**\n\n\n List<Integer> emptyList = Collections.EMPTY_LIST;\n\nAfter the quick-fix is applied:\n\n\n List<Integer> emptyList = Collections.emptyList();\n\nThis inspection only reports if the language level of the project or module is 5 or higher."
},
"defaultConfiguration": {
"enabled": false,
@@ -24268,7 +24434,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -24280,16 +24446,16 @@
]
},
{
- "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",
@@ -24301,8 +24467,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Threading issues",
+ "index": 25,
"toolComponent": {
"name": "QDJVM"
}
@@ -24314,16 +24480,16 @@
]
},
{
- "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",
@@ -24335,8 +24501,8 @@
"relationships": [
{
"target": {
- "id": "Java/Threading issues",
- "index": 25,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -24370,7 +24536,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -24382,16 +24548,16 @@
]
},
{
- "id": "UnnecessaryEmptyArrayUsage",
+ "id": "LiteralAsArgToStringEquals",
"shortDescription": {
- "text": "Unnecessary zero length array usage"
+ "text": "String literal may be 'equals()' qualifier"
},
"fullDescription": {
- "text": "Reports allocations of arrays with known lengths of zero when there is a constant for that in the class of the array's element type. As zero-length arrays are immutable, you can save memory reusing the same array instance. Example: 'class Item {\n // Public zero-length array constant that can be reused \n public static final Item[] EMPTY_ARRAY = new Item[0];\n }\n class EmptyNode {\n Item[] getChildren() {\n // Unnecessary zero-length array creation\n return new Item[0];\n }\n }' After the quick-fix is applied: 'class EmptyNode {\n Item[] getChildren() {\n return Item.EMPTY_ARRAY;\n }\n }'",
- "markdown": "Reports allocations of arrays with known lengths of zero when there is a constant for that in the class of the array's element type. As zero-length arrays are immutable, you can save memory reusing the same array instance.\n\n**Example:**\n\n\n class Item {\n // Public zero-length array constant that can be reused \n public static final Item[] EMPTY_ARRAY = new Item[0];\n }\n class EmptyNode {\n Item[] getChildren() {\n // Unnecessary zero-length array creation\n return new Item[0];\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class EmptyNode {\n Item[] getChildren() {\n return Item.EMPTY_ARRAY;\n }\n }\n"
+ "text": "Reports 'String.equals()' or 'String.equalsIgnoreCase()' calls with a string literal argument. Some coding standards specify that string literals should be the qualifier of 'equals()', rather than argument, thus minimizing 'NullPointerException'-s. A quick-fix is available to exchange the literal and the expression. Example: 'boolean isFoo(String value) {\n return value.equals(\"foo\");\n }' After the quick-fix is applied: 'boolean isFoo(String value) {\n return \"foo\".equals(value);\n }'",
+ "markdown": "Reports `String.equals()` or `String.equalsIgnoreCase()` calls with a string literal argument.\n\nSome coding standards specify that string literals should be the qualifier of `equals()`, rather than\nargument, thus minimizing `NullPointerException`-s.\n\nA quick-fix is available to exchange the literal and the expression.\n\n**Example:**\n\n\n boolean isFoo(String value) {\n return value.equals(\"foo\");\n }\n\nAfter the quick-fix is applied:\n\n\n boolean isFoo(String value) {\n return \"foo\".equals(value);\n }\n"
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -24403,8 +24569,8 @@
"relationships": [
{
"target": {
- "id": "Java/Memory",
- "index": 128,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -24416,16 +24582,16 @@
]
},
{
- "id": "LiteralAsArgToStringEquals",
+ "id": "UnnecessaryEmptyArrayUsage",
"shortDescription": {
- "text": "String literal may be 'equals()' qualifier"
+ "text": "Unnecessary zero length array usage"
},
"fullDescription": {
- "text": "Reports 'String.equals()' or 'String.equalsIgnoreCase()' calls with a string literal argument. Some coding standards specify that string literals should be the qualifier of 'equals()', rather than argument, thus minimizing 'NullPointerException'-s. A quick-fix is available to exchange the literal and the expression. Example: 'boolean isFoo(String value) {\n return value.equals(\"foo\");\n }' After the quick-fix is applied: 'boolean isFoo(String value) {\n return \"foo\".equals(value);\n }'",
- "markdown": "Reports `String.equals()` or `String.equalsIgnoreCase()` calls with a string literal argument.\n\nSome coding standards specify that string literals should be the qualifier of `equals()`, rather than\nargument, thus minimizing `NullPointerException`-s.\n\nA quick-fix is available to exchange the literal and the expression.\n\n**Example:**\n\n\n boolean isFoo(String value) {\n return value.equals(\"foo\");\n }\n\nAfter the quick-fix is applied:\n\n\n boolean isFoo(String value) {\n return \"foo\".equals(value);\n }\n"
+ "text": "Reports allocations of arrays with known lengths of zero when there is a constant for that in the class of the array's element type. As zero-length arrays are immutable, you can save memory reusing the same array instance. Example: 'class Item {\n // Public zero-length array constant that can be reused \n public static final Item[] EMPTY_ARRAY = new Item[0];\n }\n class EmptyNode {\n Item[] getChildren() {\n // Unnecessary zero-length array creation\n return new Item[0];\n }\n }' After the quick-fix is applied: 'class EmptyNode {\n Item[] getChildren() {\n return Item.EMPTY_ARRAY;\n }\n }'",
+ "markdown": "Reports allocations of arrays with known lengths of zero when there is a constant for that in the class of the array's element type. As zero-length arrays are immutable, you can save memory reusing the same array instance.\n\n**Example:**\n\n\n class Item {\n // Public zero-length array constant that can be reused \n public static final Item[] EMPTY_ARRAY = new Item[0];\n }\n class EmptyNode {\n Item[] getChildren() {\n // Unnecessary zero-length array creation\n return new Item[0];\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class EmptyNode {\n Item[] getChildren() {\n return Item.EMPTY_ARRAY;\n }\n }\n"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -24437,8 +24603,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Memory",
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -24455,8 +24621,8 @@
"text": "Multiple occurrences of the same expression"
},
"fullDescription": {
- "text": "Reports multiple equivalent occurrences of the same expression within a method (or constructor, or class initializer) if the result of the expression can be reused. The expression is reported if it's free of side effects and its result is always the same (in terms of 'Object.equals()'). The examples of such expressions are 'a + b', 'Math.max(a, b)', 'a.equals(b)', 's.substring(a,b)'. To make sure the result is always the same, it's verified that the variables used in the expression don't change their values between the occurrences of the expression. Such expressions may contain methods of immutable classes like 'String', 'BigDecimal', and so on, and of utility classes like 'Objects', 'Math' (except 'random()'). The well-known methods, such as 'Object.equals()', 'Object.hashCode()', 'Object.toString()', 'Comparable.compareTo()', and 'Comparator.compare()' are OK as well because they normally don't have any observable side effects. Use the Expression complexity threshold option to specify the minimal expression complexity threshold. Specifying bigger numbers will remove reports on short expressions. New in 2018.3",
- "markdown": "Reports multiple equivalent occurrences of the same expression within a method (or constructor, or class initializer) if the result of the expression can be reused.\n\n\nThe expression is reported if it's free of side effects and its result is always the same (in terms of `Object.equals()`).\nThe examples of such expressions are `a + b`, `Math.max(a, b)`, `a.equals(b)`,\n`s.substring(a,b)`. To make sure the result is always the same, it's verified that the variables used in the expression don't\nchange their values between the occurrences of the expression.\n\n\nSuch expressions may contain methods of immutable classes like `String`, `BigDecimal`, and so on,\nand of utility classes like `Objects`, `Math` (except `random()`).\nThe well-known methods, such as `Object.equals()`, `Object.hashCode()`, `Object.toString()`,\n`Comparable.compareTo()`, and `Comparator.compare()` are OK as well because they normally don't have\nany observable side effects.\n\n\nUse the **Expression complexity threshold** option to specify the minimal expression complexity threshold. Specifying bigger\nnumbers will remove reports on short expressions.\n\nNew in 2018.3"
+ "text": "Reports multiple equivalent occurrences of the same expression within a method (or constructor, or class initializer) if the result of the expression can be reused. The expression is reported if it's free of side effects and its result is always the same (in terms of 'Object.equals()'). The examples of such expressions are 'a + b', 'Math.max(a, b)', 'a.equals(b)', 's.substring(a,b)'. To make sure the result is always the same, it's verified that the variables used in the expression don't change their values between the occurrences of the expression. Such expressions may contain methods of immutable classes like 'String', 'BigDecimal', and so on, and of utility classes like 'Objects', 'Math' (except 'random()'). The well-known methods, such as 'Object.equals()', 'Object.hashCode()', 'Object.toString()', 'Comparable.compareTo()', and 'Comparator.compare()' are OK as well because they normally don't have any observable side effects. Use the Expression complexity threshold option to specify the minimal expression complexity threshold. Specifying bigger numbers will remove reports on short expressions. 'Path.of' and 'Paths.get' calls are treated as equivalent calls if they have the same arguments. These calls are always reported no matter how complex their arguments are. This behaviour can be tweaked using different complexity threshold. New in 2018.3",
+ "markdown": "Reports multiple equivalent occurrences of the same expression within a method (or constructor, or class initializer) if the result of the expression can be reused.\n\n\nThe expression is reported if it's free of side effects and its result is always the same (in terms of `Object.equals()`).\nThe examples of such expressions are `a + b`, `Math.max(a, b)`, `a.equals(b)`,\n`s.substring(a,b)`. To make sure the result is always the same, it's verified that the variables used in the expression don't\nchange their values between the occurrences of the expression.\n\n\nSuch expressions may contain methods of immutable classes like `String`, `BigDecimal`, and so on,\nand of utility classes like `Objects`, `Math` (except `random()`).\nThe well-known methods, such as `Object.equals()`, `Object.hashCode()`, `Object.toString()`,\n`Comparable.compareTo()`, and `Comparator.compare()` are OK as well because they normally don't have\nany observable side effects.\n\n\nUse the **Expression complexity threshold** option to specify the minimal expression complexity threshold. Specifying bigger\nnumbers will remove reports on short expressions.\n\n\n`Path.of` and `Paths.get` calls are treated as equivalent calls if they have the same arguments. These calls\nare always reported no matter how complex their arguments are. This behaviour can be tweaked using different complexity threshold.\n\nNew in 2018.3"
},
"defaultConfiguration": {
"enabled": true,
@@ -24472,7 +24638,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -24523,8 +24689,8 @@
"text": "Scope of variable is too broad"
},
"fullDescription": {
- "text": "Reports any variable declarations that can be moved to a smaller scope. This inspection is especially useful for Pascal style declarations at the beginning of a method. Moreover, variables with a too broad scope also often remain after refactorings. Example of 'sb' movement: 'StringBuilder sb = new StringBuilder();\n System.out.println();\n sb.append(1);' After quick-fix is applied: 'System.out.println();\n StringBuilder sb = new StringBuilder();\n sb.append(1);' Configure the inspection: Use the Only report variables that can be moved into inner blocks option to report only those variables that can be moved inside deeper code blocks. For example, when the option is enabled, the movement will be suggested for 'sb' variable, but not for the following code: 'StringBuilder sb = new StringBuilder(a);\n if (flag) {\n sb.append(1);\n }' Use the Report variables with a new expression as initializer (potentially unsafe) option to report variables that are initialized with a new expression. This makes the inspection potentially unsafe when the constructor has non-local side-effects. For example, when the option is enabled, the movement will be suggested for the 'foo' variable: 'class Foo {\n static List<Foo> fooList = new ArrayList<>();\n String bar;\n\n Foo(String bar) {\n this.bar = bar;\n fooList.add(this);\n }\n\n public static void main(String[] args) {\n Foo foo = new Foo(\"bar\"); // the movement is possible even though is unsafe\n System.out.println(fooList.size());\n System.out.println(foo.bar);\n }\n }'",
- "markdown": "Reports any variable declarations that can be moved to a smaller scope.\n\nThis inspection is especially\nuseful for *Pascal style* declarations at the beginning of a method. Moreover, variables with a too broad\nscope also often remain after refactorings.\n\nExample of `sb` movement:\n\n\n StringBuilder sb = new StringBuilder();\n System.out.println();\n sb.append(1);\n\nAfter quick-fix is applied:\n\n\n System.out.println();\n StringBuilder sb = new StringBuilder();\n sb.append(1);\n\nConfigure the inspection:\n\n* Use the **Only report variables that can be moved into inner blocks** option to report only those variables that can be moved inside deeper code blocks. For example, when the option is enabled, the movement will be suggested for `sb` variable, but not for the following code:\n\n\n StringBuilder sb = new StringBuilder(a);\n if (flag) {\n sb.append(1);\n }\n\n* Use the **Report variables with a new expression as initializer\n (potentially unsafe)** option to report variables that are initialized with a new expression. This makes the inspection potentially unsafe when the constructor has non-local side-effects. For example, when the option is enabled, the movement will be suggested for the `foo` variable:\n\n\n class Foo {\n static List<Foo> fooList = new ArrayList<>();\n String bar;\n\n Foo(String bar) {\n this.bar = bar;\n fooList.add(this);\n }\n\n public static void main(String[] args) {\n Foo foo = new Foo(\"bar\"); // the movement is possible even though is unsafe\n System.out.println(fooList.size());\n System.out.println(foo.bar);\n }\n }\n"
+ "text": "Reports any variable declarations that can be moved to a smaller scope. This inspection is especially useful for Pascal style declarations at the beginning of a method. Additionally variables with too broad a scope are also often left behind after refactorings. Example: 'StringBuilder sb = new StringBuilder();\n System.out.println();\n sb.append(1);' After the quick-fix is applied: 'System.out.println();\n StringBuilder sb = new StringBuilder();\n sb.append(1);' Configure the inspection: Use the Only report variables that can be moved into inner blocks option to report only those variables that can be moved inside deeper code blocks. For example, when the option is enabled, the movement will not be suggested for the 'sb' variable above. However, it will be suggested for the following code: 'StringBuilder sb = new StringBuilder(a);\n if (flag) {\n sb.append(1);\n }' Use the Report variables with a new expression as initializer (potentially unsafe) option to report variables that are initialized with a new expression. This makes the inspection potentially unsafe when the constructor has non-local side effects. For example, when the option is enabled, the movement will be suggested for the 'foo' variable: 'class Foo {\n static List<Foo> fooList = new ArrayList<>();\n String bar;\n\n Foo(String bar) {\n this.bar = bar;\n fooList.add(this);\n }\n\n public static void main(String[] args) {\n // movement is possible even though is unsafe\n Foo foo = new Foo(\"bar\");\n System.out.println(fooList.size());\n System.out.println(foo.bar);\n }\n }'",
+ "markdown": "Reports any variable declarations that can be moved to a smaller scope.\n\nThis inspection is especially\nuseful for *Pascal style* declarations at the beginning of a method. Additionally variables with too broad a\nscope are also often left behind after refactorings.\n\n**Example:**\n\n\n StringBuilder sb = new StringBuilder();\n System.out.println();\n sb.append(1);\n\nAfter the quick-fix is applied:\n\n\n System.out.println();\n StringBuilder sb = new StringBuilder();\n sb.append(1);\n\nConfigure the inspection:\n\n* Use the **Only report variables that can be moved into inner blocks** option to report only those variables that can be moved inside deeper code blocks. For example, when the option is enabled, the movement will not be suggested for the `sb` variable above. However, it will be suggested for the following code:\n\n\n StringBuilder sb = new StringBuilder(a);\n if (flag) {\n sb.append(1);\n }\n\n* Use the **Report variables with a new expression as initializer\n (potentially unsafe)** option to report variables that are initialized with a new expression. This makes the inspection potentially unsafe when the constructor has non-local side effects. For example, when the option is enabled, the movement will be suggested for the `foo` variable:\n\n\n class Foo {\n static List<Foo> fooList = new ArrayList<>();\n String bar;\n\n Foo(String bar) {\n this.bar = bar;\n fooList.add(this);\n }\n\n public static void main(String[] args) {\n // movement is possible even though is unsafe\n Foo foo = new Foo(\"bar\");\n System.out.println(fooList.size());\n System.out.println(foo.bar);\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -24540,7 +24706,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -24588,11 +24754,11 @@
{
"id": "RedundantStreamOptionalCall",
"shortDescription": {
- "text": "Redundant step in Stream or Optional call chain"
+ "text": "Redundant step in 'Stream' or 'Optional' call chain"
},
"fullDescription": {
- "text": "Reports redundant Stream or Optional calls like 'map(x -> x)' or 'filter(x -> true)', redundant 'sorted' or 'distinct'. Note that a mapping operation in code like 'streamOfIntegers.map(Integer::valueOf)' works as 'requireNonNull' check: if the stream contains 'null', it throws a 'NullPointerException', thus it's not absolutely redundant. Disable the Report redundant boxing in Stream.map option if you do not want such cases to be reported. This inspection only reports if the language level of the project or module is 8 or higher.",
- "markdown": "Reports redundant Stream or Optional calls like `map(x -> x)` or `filter(x -> true)`, redundant `sorted` or `distinct`.\n\nNote that a mapping operation in code like `streamOfIntegers.map(Integer::valueOf)`\nworks as `requireNonNull` check:\nif the stream contains `null`, it throws a `NullPointerException`, thus it's not absolutely redundant.\nDisable the **Report redundant boxing in Stream.map** option if you do not want such cases to be reported.\n\nThis inspection only reports if the language level of the project or module is 8 or higher."
+ "text": "Reports redundant 'Stream' or 'Optional' calls like 'map(x -> x)', 'filter(x -> true)' or redundant 'sorted()' or 'distinct()' calls. Note that a mapping operation in code like 'streamOfIntegers.map(Integer::valueOf)' works as 'requireNonNull()' check: if the stream contains 'null', it throws a 'NullPointerException', thus it's not absolutely redundant. Disable the Report redundant boxing in Stream.map() option if you do not want such cases to be reported. This inspection only reports if the language level of the project or module is 8 or higher.",
+ "markdown": "Reports redundant `Stream` or `Optional` calls like `map(x -> x)`, `filter(x -> true)` or redundant `sorted()` or `distinct()` calls.\n\nNote that a mapping operation in code like `streamOfIntegers.map(Integer::valueOf)`\nworks as `requireNonNull()` check:\nif the stream contains `null`, it throws a `NullPointerException`, thus it's not absolutely redundant.\nDisable the **Report redundant boxing in Stream.map()** option if you do not want such cases to be reported.\n\nThis inspection only reports if the language level of the project or module is 8 or higher."
},
"defaultConfiguration": {
"enabled": true,
@@ -24608,7 +24774,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -24654,16 +24820,16 @@
]
},
{
- "id": "NonFinalFieldOfException",
+ "id": "JUnitMalformedDeclaration",
"shortDescription": {
- "text": "Non-final field of exception class"
+ "text": "JUnit malformed declaration"
},
"fullDescription": {
- "text": "Reports fields in subclasses of 'java.lang.Exception' that are not declared 'final'. Data on exception objects should not be modified because this may result in losing the error context for later debugging and logging. Example: 'public class EditorException extends Exception {\n private String message; // warning: Non-final field 'message' of exception class\n }'",
- "markdown": "Reports fields in subclasses of `java.lang.Exception` that are not declared `final`.\n\nData on exception objects should not be modified\nbecause this may result in losing the error context for later debugging and logging.\n\n**Example:**\n\n\n public class EditorException extends Exception {\n private String message; // warning: Non-final field 'message' of exception class\n }\n"
+ "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."
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -24675,8 +24841,8 @@
"relationships": [
{
"target": {
- "id": "Java/Error handling",
- "index": 14,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -24722,13 +24888,47 @@
]
},
{
+ "id": "NonFinalFieldOfException",
+ "shortDescription": {
+ "text": "Non-final field of 'Exception' class"
+ },
+ "fullDescription": {
+ "text": "Reports fields in subclasses of 'java.lang.Exception' that are not declared 'final'. Data on exception objects should not be modified because this may result in losing the error context for later debugging and logging. Example: 'public class EditorException extends Exception {\n private String message; // warning: Non-final field 'message' of exception class\n }'",
+ "markdown": "Reports fields in subclasses of `java.lang.Exception` that are not declared `final`.\n\nData on exception objects should not be modified\nbecause this may result in losing the error context for later debugging and logging.\n\n**Example:**\n\n\n public class EditorException extends Exception {\n private String message; // warning: Non-final field 'message' of exception class\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Error handling",
+ "index": 14,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "PointlessNullCheck",
"shortDescription": {
"text": "Unnecessary 'null' check before method call"
},
"fullDescription": {
- "text": "Reports null checks followed by a method call that will definitely return 'false' when 'null' is passed (e.g. 'Class.isInstance'). Such a check seems excessive as the method call will always return 'false' in this case. Example: 'if (x != null && myClass.isInstance(x)) { ... }' After the quick-fix is applied: 'if (myClass.isInstance(x)) { ... }'",
- "markdown": "Reports null checks followed by a method call that will definitely return `false` when `null` is passed (e.g. `Class.isInstance`).\n\nSuch a check seems excessive as the method call will always return `false` in this case.\n\nExample:\n\n\n if (x != null && myClass.isInstance(x)) { ... }\n\nAfter the quick-fix is applied:\n\n\n if (myClass.isInstance(x)) { ... }\n"
+ "text": "Reports 'null' checks followed by a method call that will definitely return 'false' when 'null' is passed (e.g. 'Class.isInstance'). Such a check seems excessive as the method call will always return 'false' in this case. Example: 'if (x != null && myClass.isInstance(x)) { ... }' After the quick-fix is applied: 'if (myClass.isInstance(x)) { ... }'",
+ "markdown": "Reports `null` checks followed by a method call that will definitely return `false` when `null` is passed (e.g. `Class.isInstance`).\n\nSuch a check seems excessive as the method call will always return `false` in this case.\n\n**Example:**\n\n\n if (x != null && myClass.isInstance(x)) { ... }\n\nAfter the quick-fix is applied:\n\n\n if (myClass.isInstance(x)) { ... }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -24744,7 +24944,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -24758,7 +24958,7 @@
{
"id": "MethodOverridesStaticMethod",
"shortDescription": {
- "text": "Method tries to override static method of superclass"
+ "text": "Method tries to override 'static' method of superclass"
},
"fullDescription": {
"text": "Reports 'static' methods with a signature identical to a 'static' method of a superclass. Such a method may look like an override when in fact it hides the method from the superclass because 'static' methods in Java cannot be overridden. Example: 'class Parent {\n static void method(){}\n }\n\n class Example extends Parent {\n static void method(){} //warning\n }'",
@@ -24778,7 +24978,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -24858,13 +25058,13 @@
]
},
{
- "id": "ExtendsUtilityClass",
+ "id": "UtilityClassWithoutPrivateConstructor",
"shortDescription": {
- "text": "Class extends utility class"
+ "text": "Utility class without 'private' constructor"
},
"fullDescription": {
- "text": "Reports classes that extend a utility class. A utility class is a non-empty class in which all fields and methods are static. Extending a utility class also allows for inadvertent object instantiation of the utility class, because the constructor cannot be made private in order to allow extension. Configure the inspection: Use the Ignore if overriding class is a utility class option to ignore any classes that override a utility class but are also utility classes themselves.",
- "markdown": "Reports classes that extend a utility class.\n\n\nA utility class is a non-empty class in which all fields and methods are static.\nExtending a utility class also allows for inadvertent object instantiation of the\nutility class, because the constructor cannot be made private in order to allow extension.\n\n\nConfigure the inspection:\n\n* Use the **Ignore if overriding class is a utility class** option to ignore any classes that override a utility class but are also utility classes themselves."
+ "text": "Reports utility classes without 'private' constructors. Utility classes have all fields and methods declared as 'static'. Creating 'private' constructors in utility classes prevents them from being accidentally instantiated. Use the Ignore if annotated by option to specify special annotations. The inspection ignores classes marked with one of these annotations. Use the Ignore classes with only a main method option to ignore classes with no methods other than the main one.",
+ "markdown": "Reports utility classes without `private` constructors.\n\nUtility classes have all fields and methods declared as `static`. Creating `private`\nconstructors in utility classes prevents them from being accidentally instantiated.\n\n\nUse the **Ignore if annotated by** option to specify special annotations. The inspection ignores classes marked with one of\nthese annotations.\n\n\nUse the **Ignore classes with only a main method** option to ignore classes with no methods other than the main one."
},
"defaultConfiguration": {
"enabled": false,
@@ -24879,8 +25079,8 @@
"relationships": [
{
"target": {
- "id": "Java/Inheritance issues",
- "index": 114,
+ "id": "Java/Class structure",
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -24892,13 +25092,13 @@
]
},
{
- "id": "UtilityClassWithoutPrivateConstructor",
+ "id": "ExtendsUtilityClass",
"shortDescription": {
- "text": "Utility class without 'private' constructor"
+ "text": "Class extends utility class"
},
"fullDescription": {
- "text": "Reports utility classes without 'private' constructors. Utility classes have all fields and methods declared as 'static'. Creating 'private' constructors in utility classes prevents them from being accidentally instantiated. Use the Ignore if annotated by option to specify special annotations. The inspection ignores classes marked with one of these annotations. Use the Ignore classes with only a main method option to ignore classes with no methods other than the main one.",
- "markdown": "Reports utility classes without `private` constructors.\n\nUtility classes have all fields and methods declared as `static`. Creating `private`\nconstructors in utility classes prevents them from being accidentally instantiated.\n\n\nUse the **Ignore if annotated by** option to specify special annotations. The inspection ignores classes marked with one of\nthese annotations.\n\n\nUse the **Ignore classes with only a main method** option to ignore classes with no methods other than the main one."
+ "text": "Reports classes that extend a utility class. A utility class is a non-empty class in which all fields and methods are static. Extending a utility class also allows for inadvertent object instantiation of the utility class, because the constructor cannot be made private in order to allow extension. Configure the inspection: Use the Ignore if overriding class is a utility class option to ignore any classes that override a utility class but are also utility classes themselves.",
+ "markdown": "Reports classes that extend a utility class.\n\n\nA utility class is a non-empty class in which all fields and methods are static.\nExtending a utility class also allows for inadvertent object instantiation of the\nutility class, because the constructor cannot be made private in order to allow extension.\n\n\nConfigure the inspection:\n\n* Use the **Ignore if overriding class is a utility class** option to ignore any classes that override a utility class but are also utility classes themselves."
},
"defaultConfiguration": {
"enabled": false,
@@ -24913,8 +25113,8 @@
"relationships": [
{
"target": {
- "id": "Java/Class structure",
- "index": 18,
+ "id": "Java/Inheritance issues",
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -24965,8 +25165,8 @@
"text": "Pattern variable can be used"
},
"fullDescription": {
- "text": "Reports local variable declarations that can be replaced with pattern variables, which are usually more compact. Example: 'if (obj instanceof String) {\n String str = (String) obj;\n System.out.println(str);\n }' Can be replaced with: 'if (obj instanceof String str) {\n System.out.println(str);\n }' This inspection only reports if the language level of the project or module is 15 (Preview) or higher New in 2020.1",
- "markdown": "Reports local variable declarations that can be replaced with pattern variables, which are usually more compact.\n\n**Example:**\n\n\n if (obj instanceof String) {\n String str = (String) obj;\n System.out.println(str);\n }\n\nCan be replaced with:\n\n\n if (obj instanceof String str) {\n System.out.println(str);\n }\n\nThis inspection only reports if the language level of the project or module is 15 (Preview) or higher\n\nNew in 2020.1"
+ "text": "Reports local variable declarations that can be replaced with pattern variables, which are usually more compact. Example: 'if (obj instanceof String) {\n String str = (String) obj;\n System.out.println(str);\n }' Can be replaced with: 'if (obj instanceof String str) {\n System.out.println(str);\n }' This inspection only reports if the language level of the project or module is 16 or higher New in 2020.1",
+ "markdown": "Reports local variable declarations that can be replaced with pattern variables, which are usually more compact.\n\n**Example:**\n\n\n if (obj instanceof String) {\n String str = (String) obj;\n System.out.println(str);\n }\n\nCan be replaced with:\n\n\n if (obj instanceof String str) {\n System.out.println(str);\n }\n\nThis inspection only reports if the language level of the project or module is 16 or higher\n\nNew in 2020.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -25016,7 +25216,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -25152,7 +25352,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -25186,7 +25386,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -25220,7 +25420,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -25254,7 +25454,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -25288,7 +25488,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -25322,7 +25522,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -25390,7 +25590,7 @@
{
"target": {
"id": "Java/Probable bugs/Nullability problems",
- "index": 134,
+ "index": 132,
"toolComponent": {
"name": "QDJVM"
}
@@ -25424,7 +25624,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -25475,8 +25675,8 @@
"text": "Duplicate condition"
},
"fullDescription": {
- "text": "Reports duplicate conditions in && and || expressions and branches of if statements. While sometimes these duplicate conditions are intended, in most cases they are used due to oversight. Example: 'boolean result = digit1 != digit2 || digit1 != digit2;' To ignore conditions that may produce side effects, use the Ignore conditions with side effects option. Disabling this option may lead to false-positives, for example, when the same method returns different values on subsequent invocations. Example: 'if (iterator.next() != null || iterator.next() != null)\n System.out.println(\"Got it\");\n }' Due to possible side effects of 'iterator.next()' (on the example), the warning will only be triggered if the Ignore conditions with side effects option is disabled.",
- "markdown": "Reports duplicate conditions in \\&\\& and \\|\\| expressions and branches of if statements. While sometimes these duplicate conditions are intended, in most cases they are used due to oversight.\n\nExample:\n\n\n boolean result = digit1 != digit2 || digit1 != digit2;\n\n\nTo ignore conditions that may produce side effects, use the **Ignore conditions with side effects** option.\nDisabling this option may lead to false-positives, for example, when the same method returns different values on subsequent invocations.\n\nExample:\n\n\n if (iterator.next() != null || iterator.next() != null)\n System.out.println(\"Got it\");\n }\n\nDue to possible side effects of `iterator.next()` (on the example), the warning will only be\ntriggered if the **Ignore conditions with side effects** option is disabled."
+ "text": "Reports duplicate conditions in '&&' and '||' expressions and branches of 'if' statements. While sometimes duplicate conditions are intended, in most cases they the result of an oversight. Example: 'boolean result = digit1 != digit2 || digit1 != digit2;' To ignore conditions that may produce side effects, use the Ignore conditions with side effects option. Disabling this option may lead to false-positives, for example, when the same method returns different values on subsequent invocations. Example: 'if (iterator.next() != null || iterator.next() != null) {\n System.out.println(\"Got it\");\n }' Due to possible side effects of 'iterator.next()' (on the example), the warning will only be triggered if the Ignore conditions with side effects option is disabled.",
+ "markdown": "Reports duplicate conditions in `&&` and `||` expressions and branches of `if` statements. While sometimes duplicate conditions are intended, in most cases they the result of an oversight.\n\nExample:\n\n\n boolean result = digit1 != digit2 || digit1 != digit2;\n\n\nTo ignore conditions that may produce side effects, use the **Ignore conditions with side effects** option.\nDisabling this option may lead to false-positives, for example, when the same method returns different values on subsequent invocations.\n\nExample:\n\n\n if (iterator.next() != null || iterator.next() != null) {\n System.out.println(\"Got it\");\n }\n\nDue to possible side effects of `iterator.next()` (on the example), the warning will only be\ntriggered if the **Ignore conditions with side effects** option is disabled."
},
"defaultConfiguration": {
"enabled": true,
@@ -25492,7 +25692,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -25526,7 +25726,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -25543,8 +25743,8 @@
"text": "Redundant 'throws' clause"
},
"fullDescription": {
- "text": "Reports exceptions that are declared in a method's signature but never thrown by the method itself or its implementations and derivatives. The inspection ignores methods related to the serialization, for example methods 'readObject()' or 'writeObject()'. Example: 'void method() throws InterruptedException {\n System.out.println();\n }' The quick-fix removes unnecessary exceptions from the declaration and normalizes the redundant 'try'-'catch' statements: 'void method() {\n System.out.println();\n }' Note: Some exceptions might not be reported during in-editor highlighting. For performance reasons, a non-private method 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 Ignore exceptions thrown by entry points methods option to ignore exceptions thrown by entry points methods. Entry points methods are configured the following inspection: Editor | Inspections | Java | Declaration redundancy | Unused declaration.",
- "markdown": "Reports exceptions that are declared in a method's signature but never thrown by the method itself or its implementations and derivatives.\n\nThe inspection ignores methods related to the serialization, for example methods `readObject()` or `writeObject()`.\n\n**Example:**\n\n\n void method() throws InterruptedException {\n System.out.println();\n }\n\nThe quick-fix removes unnecessary exceptions from the declaration and normalizes the redundant `try`-`catch` statements:\n\n\n void method() {\n System.out.println();\n }\n\n\n**Note:** Some exceptions might not be reported during in-editor highlighting.\nFor performance reasons, a non-private method is checked 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 **Ignore exceptions thrown by entry points methods** option to ignore exceptions thrown by entry points methods.\nEntry points methods are configured the following inspection: **Editor \\| Inspections \\| Java \\| Declaration redundancy \\| Unused declaration**."
+ "text": "Reports exceptions that are declared in a method's signature but never thrown by the method itself or its implementations and overriding methods. The inspection ignores methods related to serialization, for example the methods 'readObject()' and 'writeObject()'. Example: 'void method() throws InterruptedException {\n System.out.println();\n }' The quick-fix removes unnecessary exceptions from the declaration and normalizes redundant 'try'-'catch' statements: 'void method() {\n System.out.println();\n }' Note: Some exceptions may not be reported during in-editor highlighting for performance reasons. 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 Ignore exceptions thrown by entry point methods option to not report exceptions thrown by for example 'main()' methods. Entry point methods can be configured in the settings of the Java | Declaration redundancy | Unused declaration inspection.",
+ "markdown": "Reports exceptions that are declared in a method's signature but never thrown by the method itself or its implementations and overriding methods.\n\nThe inspection ignores methods related to serialization, for example the methods `readObject()` and `writeObject()`.\n\n**Example:**\n\n\n void method() throws InterruptedException {\n System.out.println();\n }\n\nThe quick-fix removes unnecessary exceptions from the declaration and normalizes redundant `try`-`catch` statements:\n\n\n void method() {\n System.out.println();\n }\n\n\n**Note:** Some exceptions may not be reported during in-editor highlighting for performance reasons.\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 **Ignore exceptions thrown by entry point methods** option to not report exceptions thrown by\nfor example `main()` methods.\nEntry point methods can be configured in the settings of the\n[Java \\| Declaration redundancy \\| Unused declaration](settings://Errors?Unused%20Declaration%20entry%20point) inspection.\n\n<br />"
},
"defaultConfiguration": {
"enabled": false,
@@ -25594,7 +25794,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -25628,7 +25828,7 @@
{
"target": {
"id": "Java/Bitwise operation issues",
- "index": 156,
+ "index": 155,
"toolComponent": {
"name": "QDJVM"
}
@@ -25713,8 +25913,8 @@
"text": "Synthetic accessor call"
},
"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 does not report if the language level is set to Java 11 or higher because thanks to nest-based access control (JEP 181), accessor methods are not generated anymore. 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 does not report if the language level is set to Java 11 or higher\nbecause thanks to nest-based access control (JEP 181), accessor methods are not generated anymore.\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"
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -25730,7 +25930,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -25747,8 +25947,8 @@
"text": "Call to 'System.runFinalizersOnExit()'"
},
"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 less than 11.",
- "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 less than 11."
+ "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": true,
@@ -25798,7 +25998,7 @@
{
"target": {
"id": "Java/Modularization issues",
- "index": 52,
+ "index": 53,
"toolComponent": {
"name": "QDJVM"
}
@@ -25832,7 +26032,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -25880,7 +26080,7 @@
{
"id": "StringOperationCanBeSimplified",
"shortDescription": {
- "text": "Redundant String operation"
+ "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",
@@ -25900,7 +26100,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -25934,7 +26134,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -26002,7 +26202,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -26036,7 +26236,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -26070,7 +26270,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -26087,8 +26287,8 @@
"text": "Method call violates Law of Demeter"
},
"fullDescription": {
- "text": "Reports Law of Demeter violations. The Law of Demeter specifies a style guideline: never call a method on an object you got from another call. The code that follows this guideline is easier to maintain, adapt, and refactor, has less coupling between methods, less duplication, and better information hiding. On the other hand, you might need to write many wrapper methods to meet this guideline.",
- "markdown": "Reports [Law of Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter) violations.\n\nThe Law of Demeter specifies a style guideline: never call a method on an object you got from another call.\nThe code that follows this guideline is easier to maintain, adapt, and refactor, has less coupling between methods, less duplication,\nand better information hiding. On the other hand, you might need to write many wrapper methods to meet this guideline."
+ "text": "Reports Law of Demeter violations. The Law of Demeter is not really a law, but specifies a style guideline: never call a method on an object received from another call. The code that follows this guideline is easier to maintain, adapt, and refactor, has less coupling between methods, less duplication, and better information hiding. On the other hand, you may need to write many wrapper methods to meet this guideline. Example: 'boolean pay(Customer c, Invoice invoice) {\n int dollars = c.getWallet().getDollars(); // violation\n if (dollars >= invoice.getAmount()) {\n Wallet w = c.getWallet();\n w.subtract(invoice.getAmount()); // violation\n return true;\n }\n return false;\n }' The above example might be better implemented as a method 'payInvoice(Invoice invoice)' in 'Customer'. Example: 'Engine engine = car.getEngine();\n int cylinders = engine.getNumberOfCylinders();'",
+ "markdown": "Reports [Law of Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter) violations.\n\nThe Law of Demeter is not really a law, but specifies a style guideline: never call a method on an object received from another call.\nThe code that follows this guideline is easier to maintain, adapt, and refactor, has less coupling between methods, less duplication,\nand better information hiding. On the other hand, you may need to write many wrapper methods to meet this guideline.\n\n**Example:**\n\n\n boolean pay(Customer c, Invoice invoice) {\n int dollars = c.getWallet().getDollars(); // violation\n if (dollars >= invoice.getAmount()) {\n Wallet w = c.getWallet();\n w.subtract(invoice.getAmount()); // violation\n return true;\n }\n return false;\n }\n\nThe above example might be better implemented as a method `payInvoice(Invoice invoice)` in `Customer`.\n\n**Example:**\n\n\n Engine engine = car.getEngine();\n int cylinders = engine.getNumberOfCylinders();\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -26104,7 +26304,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -26138,7 +26338,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -26155,8 +26355,8 @@
"text": "Public constructor in abstract class"
},
"fullDescription": {
- "text": "Reports 'public' constructors of 'abstract' classes. Constructors of 'abstract' classes can only be called from the constructors of their subclasses, declaring them 'public' may be confusing. The quick-fix makes such constructors protected. Example: 'public abstract class Foo {\n public Foo () { // warning: has 'public' modifier\n /* ... */\n }\n }' After the quick-fix is applied: 'public abstract class Foo {\n protected Foo () {\n /* ... */\n }\n }' Configure the inspection: Use the option below to ignore non-public classes.",
- "markdown": "Reports `public` constructors of `abstract` classes.\n\n\nConstructors of `abstract` classes can only be called from the constructors of\ntheir subclasses, declaring them `public` may be confusing.\n\nThe quick-fix makes such constructors protected.\n\n**Example:**\n\n\n public abstract class Foo {\n public Foo () { // warning: has 'public' modifier\n /* ... */\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public abstract class Foo {\n protected Foo () {\n /* ... */\n }\n }\n\nConfigure the inspection:\n\nUse the option below to ignore non-public classes."
+ "text": "Reports 'public' constructors of 'abstract' classes. Constructors of 'abstract' classes can only be called from the constructors of their subclasses, declaring them 'public' may be confusing. The quick-fix makes such constructors protected. Example: 'public abstract class Foo {\n public Foo () { // warning: has 'public' modifier\n /* ... */\n }\n }' After the quick-fix is applied: 'public abstract class Foo {\n protected Foo () {\n /* ... */\n }\n }' Configure the inspection: Use the Ignore for non-public classes option below to ignore 'public' constructors in non-public classes.",
+ "markdown": "Reports `public` constructors of `abstract` classes.\n\n\nConstructors of `abstract` classes can only be called from the constructors of\ntheir subclasses, declaring them `public` may be confusing.\n\nThe quick-fix makes such constructors protected.\n\n**Example:**\n\n\n public abstract class Foo {\n public Foo () { // warning: has 'public' modifier\n /* ... */\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public abstract class Foo {\n protected Foo () {\n /* ... */\n }\n }\n\nConfigure the inspection:\n\nUse the **Ignore for non-public classes** option below to ignore `public` constructors in non-public classes."
},
"defaultConfiguration": {
"enabled": false,
@@ -26172,7 +26372,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -26186,7 +26386,7 @@
{
"id": "ComparableImplementedButEqualsNotOverridden",
"shortDescription": {
- "text": "Comparable implemented but 'equals()' not overridden"
+ "text": "'Comparable' implemented but 'equals()' not overridden"
},
"fullDescription": {
"text": "Reports classes that implement 'java.lang.Comparable' but do not override 'equals()'. If 'equals()' is not overridden, the 'equals()' implementation is not consistent with the 'compareTo()' implementation. If an object of such a class is added to a collection such as 'java.util.SortedSet', this collection will violate the contract of 'java.util.Set', which is defined in terms of 'equals()'. Example: 'class Length implements Comparable<Length> {\n private int cm = 0;\n\n @Override\n public int compareTo(@NotNull Length o) {\n if (cm == o.cm) return 0;\n return cm < o.cm ? -1 : 1;\n }\n }' After the quick fix is applied: 'class Length implements Comparable<Length> {\n private int cm = 0;\n\n @Override\n public int compareTo(@NotNull Length o) {\n if (cm == o.cm) return 0;\n return cm < o.cm ? -1 : 1;\n }\n\n @Override\n public boolean equals(Object o) {\n return o instanceof Length && compareTo((Length) o) == 0;\n }\n }'",
@@ -26206,7 +26406,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -26274,7 +26474,7 @@
{
"target": {
"id": "Java/Probable bugs/Nullability problems",
- "index": 134,
+ "index": 132,
"toolComponent": {
"name": "QDJVM"
}
@@ -26288,7 +26488,7 @@
{
"id": "UnpredictableBigDecimalConstructorCall",
"shortDescription": {
- "text": "Unpredictable BigDecimal constructor call"
+ "text": "Unpredictable 'BigDecimal' constructor call"
},
"fullDescription": {
"text": "Reports calls to 'BigDecimal' constructors that accept a 'double' value. These constructors produce 'BigDecimal' that is exactly equal to the supplied 'double' value. However, because doubles are encoded in the IEEE 754 64-bit double-precision binary floating-point format, the exact value can be unexpected. For example, 'new BigDecimal(0.1)' yields a 'BigDecimal' object. Its value is '0.1000000000000000055511151231257827021181583404541015625' which is the nearest number to 0.1 representable as a double. To get 'BigDecimal' that stores the same value as written in the source code, use either 'new BigDecimal(\"0.1\")' or 'BigDecimal.valueOf(0.1)'. Example: 'class Constructor {\n void foo() {\n new BigDecimal(0.1);\n }\n }' After the quick-fix is applied: 'class Constructor {\n void foo() {\n new BigDecimal(\"0.1\");\n }\n }'",
@@ -26308,7 +26508,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -26342,7 +26542,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -26376,7 +26576,7 @@
{
"target": {
"id": "Java/Test frameworks",
- "index": 98,
+ "index": 97,
"toolComponent": {
"name": "QDJVM"
}
@@ -26410,7 +26610,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -26478,7 +26678,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -26512,7 +26712,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -26526,7 +26726,7 @@
{
"id": "JUnit5AssertionsConverter",
"shortDescription": {
- "text": "Obsolete assertions in JUnit 5 tests"
+ "text": "JUnit 5 obsolete assertions"
},
"fullDescription": {
"text": "Reports any calls to methods from the 'junit.framework.Assert', 'org.junit.Assert', or 'org.junit.Assume' classes inside JUnit 5 tests. Although the tests work properly, migration to 'org.junit.jupiter.api.Assertions'/'org.junit.jupiter.api.Assumptions' will help you avoid dependencies on old JUnit version. Example: 'import org.junit.Assert;\n import org.junit.jupiter.api.Test;\n\n public class MyTest {\n @Test\n public void simpleTest() {\n Assert.assertEquals(4, 2 + 2);\n }\n }' After the quick-fix is applied: 'import org.junit.jupiter.api.Assertions;\n import org.junit.jupiter.api.Test;\n\n public class MyTest {\n @Test\n public void simpleTest() {\n Assertions.assertEquals(4, 2 + 2);\n }\n }'",
@@ -26545,8 +26745,8 @@
"relationships": [
{
"target": {
- "id": "JVM languages",
- "index": 1,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -26580,7 +26780,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -26614,7 +26814,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -26648,7 +26848,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -26682,7 +26882,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -26750,7 +26950,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -26784,7 +26984,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -26852,7 +27052,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -26886,7 +27086,7 @@
{
"target": {
"id": "Java/Naming conventions",
- "index": 55,
+ "index": 56,
"toolComponent": {
"name": "QDJVM"
}
@@ -26920,7 +27120,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -26954,7 +27154,7 @@
{
"target": {
"id": "Java/Naming conventions/Class",
- "index": 56,
+ "index": 57,
"toolComponent": {
"name": "QDJVM"
}
@@ -26968,11 +27168,11 @@
{
"id": "SameParameterValue",
"shortDescription": {
- "text": "Actual method parameter is the same constant"
+ "text": "Method parameter is always the same value"
},
"fullDescription": {
- "text": "Reports methods in which a parameter appears to always be the same constant. Example: 'static void printPoint(int x, int y) { // x is always 0\n System.out.println(x + \", \" + y);\n }\n\n public static void main(String[] args) {\n printPoint(0, 1);\n printPoint(0, 2);\n }' The quick-fix inlines the constant value. This may simplify the method implementation. Use the Ignore when inline parameter initializer would not succeed option to suppress the inspections when: the parameter is modified inside the method. the parameter value that is being passed is a reference to an inaccessible field (only in Java). the parameter is a vararg (only in Java). Use the Maximal reported method visibility option to control the maximum visibility of methods to be reported. Use the Minimal reported method usage count field to specify the minimal number of method usages with the same parameter value.",
- "markdown": "Reports methods in which a parameter appears to always be the same constant.\n\nExample:\n\n\n static void printPoint(int x, int y) { // x is always 0\n System.out.println(x + \", \" + y);\n }\n\n public static void main(String[] args) {\n printPoint(0, 1);\n printPoint(0, 2);\n }\n\nThe quick-fix inlines the constant value. This may simplify the method implementation.\n\n\nUse the **Ignore when inline parameter initializer would not succeed** option to suppress the inspections when:\n\n* the parameter is modified inside the method.\n* the parameter value that is being passed is a reference to an inaccessible field (only in Java).\n* the parameter is a vararg (only in Java).\n\n\nUse the **Maximal reported method visibility** option to control the maximum visibility of methods to be reported.\n\n\nUse the **Minimal reported method usage count** field to specify the minimal number of method usages with the same parameter value."
+ "text": "Reports method parameters that always have the same constant value. Example: 'static void printPoint(int x, int y) { // x is always 0\n System.out.println(x + \", \" + y);\n }\n\n public static void main(String[] args) {\n printPoint(0, 1);\n printPoint(0, 2);\n }' The quick-fix inlines the constant value. This may simplify the method implementation. Use the Ignore when inline parameter initializer would not succeed option to suppress the inspections when: the parameter is modified inside the method. the parameter value that is being passed is a reference to an inaccessible field (only in Java). the parameter is a vararg (only in Java). Use the Maximal reported method visibility option to control the maximum visibility of methods to be reported. Use the Minimal reported method usage count field to specify the minimal number of method usages with the same parameter value.",
+ "markdown": "Reports method parameters that always have the same constant value.\n\nExample:\n\n\n static void printPoint(int x, int y) { // x is always 0\n System.out.println(x + \", \" + y);\n }\n\n public static void main(String[] args) {\n printPoint(0, 1);\n printPoint(0, 2);\n }\n\nThe quick-fix inlines the constant value. This may simplify the method implementation.\n\n\nUse the **Ignore when inline parameter initializer would not succeed** option to suppress the inspections when:\n\n* the parameter is modified inside the method.\n* the parameter value that is being passed is a reference to an inaccessible field (only in Java).\n* the parameter is a vararg (only in Java).\n\n\nUse the **Maximal reported method visibility** option to control the maximum visibility of methods to be reported.\n\n\nUse the **Minimal reported method usage count** field to specify the minimal number of method usages with the same parameter value."
},
"defaultConfiguration": {
"enabled": false,
@@ -27056,7 +27256,7 @@
{
"target": {
"id": "Java/Dependency issues",
- "index": 109,
+ "index": 108,
"toolComponent": {
"name": "QDJVM"
}
@@ -27090,7 +27290,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -27124,7 +27324,7 @@
{
"target": {
"id": "Java/toString() issues",
- "index": 159,
+ "index": 158,
"toolComponent": {
"name": "QDJVM"
}
@@ -27158,7 +27358,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -27192,7 +27392,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -27226,7 +27426,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -27306,13 +27506,13 @@
]
},
{
- "id": "SynchronizeOnValueBasedClass",
+ "id": "NonSerializableWithSerialVersionUIDField",
"shortDescription": {
- "text": "Value-based warnings"
+ "text": "Non-serializable class with 'serialVersionUID'"
},
"fullDescription": {
- "text": "Reports attempts to synchronize on an instance of a value-based class that produce compile-time warnings and raise run-time exceptions starting from Java 16. For example, 'java.lang.Double' is annotated with 'jdk.internal.ValueBased', so the following code will produce a compile-time warning: 'Double d = 20.0;\nsynchronized (d) { ... } // javac warning' New in 2021.1",
- "markdown": "Reports attempts to synchronize on an instance of a value-based class that produce compile-time warnings and raise run-time exceptions starting from Java 16.\n\n\nFor example, `java.lang.Double` is annotated with `jdk.internal.ValueBased`, so the following code will\nproduce a compile-time warning:\n\n\n Double d = 20.0;\n synchronized (d) { ... } // javac warning\n\nNew in 2021.1"
+ "text": "Reports non-'Serializable' classes that define a 'serialVersionUID' field. A 'serialVersionUID' field in that context normally indicates an error because the field will be ignored and the class will not be serialized. Example: 'public class IWantToSerializeThis {\n private static final long serialVersionUID = 2669293150219020249L;\n }'",
+ "markdown": "Reports non-`Serializable` classes that define a `serialVersionUID` field. A `serialVersionUID` field in that context normally indicates an error because the field will be ignored and the class will not be serialized.\n\n**Example:**\n\n\n public class IWantToSerializeThis {\n private static final long serialVersionUID = 2669293150219020249L;\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -27327,8 +27527,8 @@
"relationships": [
{
"target": {
- "id": "Java/Compiler issues",
- "index": 124,
+ "id": "Java/Serialization issues",
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -27340,13 +27540,13 @@
]
},
{
- "id": "NonSerializableWithSerialVersionUIDField",
+ "id": "SynchronizeOnValueBasedClass",
"shortDescription": {
- "text": "Non-serializable class with 'serialVersionUID'"
+ "text": "Value-based warnings"
},
"fullDescription": {
- "text": "Reports non-'Serializable' classes that define a 'serialVersionUID' field. A 'serialVersionUID' field in that context normally indicates an error because the field will be ignored and the class will not be serialized. Example: 'public class IWantToSerializeThis {\n private static final long serialVersionUID = 2669293150219020249L;\n }'",
- "markdown": "Reports non-`Serializable` classes that define a `serialVersionUID` field. A `serialVersionUID` field in that context normally indicates an error because the field will be ignored and the class will not be serialized.\n\n**Example:**\n\n\n public class IWantToSerializeThis {\n private static final long serialVersionUID = 2669293150219020249L;\n }\n"
+ "text": "Reports attempts to synchronize on an instance of a value-based class that produce compile-time warnings and raise run-time exceptions starting from Java 16. For example, 'java.lang.Double' is annotated with 'jdk.internal.ValueBased', so the following code will produce a compile-time warning: 'Double d = 20.0;\nsynchronized (d) { ... } // javac warning' New in 2021.1",
+ "markdown": "Reports attempts to synchronize on an instance of a value-based class that produce compile-time warnings and raise run-time exceptions starting from Java 16.\n\n\nFor example, `java.lang.Double` is annotated with `jdk.internal.ValueBased`, so the following code will\nproduce a compile-time warning:\n\n\n Double d = 20.0;\n synchronized (d) { ... } // javac warning\n\nNew in 2021.1"
},
"defaultConfiguration": {
"enabled": false,
@@ -27361,8 +27561,8 @@
"relationships": [
{
"target": {
- "id": "Java/Serialization issues",
- "index": 17,
+ "id": "Java/Compiler issues",
+ "index": 122,
"toolComponent": {
"name": "QDJVM"
}
@@ -27396,7 +27596,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -27430,7 +27630,7 @@
{
"target": {
"id": "Java/Bitwise operation issues",
- "index": 156,
+ "index": 155,
"toolComponent": {
"name": "QDJVM"
}
@@ -27510,13 +27710,13 @@
]
},
{
- "id": "UnnecessaryConstantArrayCreationExpression",
+ "id": "HardcodedLineSeparators",
"shortDescription": {
- "text": "Redundant 'new' expression in constant array creation"
+ "text": "Hardcoded line separator"
},
"fullDescription": {
- "text": "Reports constant new array expressions that can be replaced with an array initializer. Array initializers can omit the type because it is already specified in the left side of the assignment. Example: 'int[] foo = new int[] {42};' After the quick-fix is applied: 'int[] foo = {42};'",
- "markdown": "Reports constant new array expressions that can be replaced with an array initializer. Array initializers can omit the type because it is already specified in the left side of the assignment.\n\n**Example:**\n\n\n int[] foo = new int[] {42};\n\nAfter the quick-fix is applied:\n\n\n int[] foo = {42};\n"
+ "text": "Reports linefeed ('\\n') and carriage return ('\\r') character escape sequences used in string literals, character literals or text blocks. These characters are commonly used as line separators, and portability may suffer if they are hardcoded. Example: 'String count = \"first\\nsecond\\rthird\";'",
+ "markdown": "Reports linefeed (`\\n`) and carriage return (`\\r`) character escape sequences used in string literals, character literals or text blocks. These characters are commonly used as line separators, and portability may suffer if they are hardcoded.\n\n**Example:**\n\n\n String count = \"first\\nsecond\\rthird\";\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -27531,8 +27731,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Portability",
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -27544,13 +27744,13 @@
]
},
{
- "id": "HardcodedLineSeparators",
+ "id": "UnnecessaryConstantArrayCreationExpression",
"shortDescription": {
- "text": "Hardcoded line separator"
+ "text": "Redundant 'new' expression in constant array creation"
},
"fullDescription": {
- "text": "Reports linefeed ('\\n') and carriage return ('\\r') character escape sequences used in string literals, character literals or text blocks. These characters are commonly used as line separators, and portability may suffer if they are hardcoded. Example: 'String count = \"first\\nsecond\\rthird\";'",
- "markdown": "Reports linefeed (`\\n`) and carriage return (`\\r`) character escape sequences used in string literals, character literals or text blocks. These characters are commonly used as line separators, and portability may suffer if they are hardcoded.\n\n**Example:**\n\n\n String count = \"first\\nsecond\\rthird\";\n"
+ "text": "Reports constant new array expressions that can be replaced with an array initializer. Array initializers can omit the type because it is already specified in the left side of the assignment. Example: 'int[] foo = new int[] {42};' After the quick-fix is applied: 'int[] foo = {42};'",
+ "markdown": "Reports constant new array expressions that can be replaced with an array initializer. Array initializers can omit the type because it is already specified in the left side of the assignment.\n\n**Example:**\n\n\n int[] foo = new int[] {42};\n\nAfter the quick-fix is applied:\n\n\n int[] foo = {42};\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -27565,8 +27765,8 @@
"relationships": [
{
"target": {
- "id": "Java/Portability",
- "index": 73,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -27600,7 +27800,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -27634,7 +27834,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -27651,8 +27851,8 @@
"text": "Implicit platform default charset"
},
"fullDescription": {
- "text": "Reports method and constructor calls that implicitly use the platform default charset. These calls can produce different results on systems that use different default charsets. It might result in unexpected behaviour. Example: 'void foo(byte[] bytes) {\n String s = new String(bytes);\n}'\n You can use a quick-fix that specifies the explicit UTF-8 charset if the corresponding overloaded method is available. After the quick-fix is applied: 'void foo(byte[] bytes) {\n String s = new String(bytes, StandardCharsets.UTF_8);\n}'",
- "markdown": "Reports method and constructor calls that implicitly use the platform default charset. These calls can produce different results on systems that use different default charsets. It might result in unexpected behaviour.\n\n**Example:**\n\n void foo(byte[] bytes) {\n String s = new String(bytes);\n }\n\nYou can use a quick-fix that specifies the explicit UTF-8 charset if the corresponding overloaded method is available.\nAfter the quick-fix is applied:\n\n void foo(byte[] bytes) {\n String s = new String(bytes, StandardCharsets.UTF_8);\n }\n"
+ "text": "Reports method and constructor calls that implicitly use the platform default charset. Such calls can produce different results on systems that use a different default charset and may result in unexpected behaviour. Example: 'void foo(byte[] bytes) {\n String s = new String(bytes);\n}'\n You can use a quick-fix that specifies the explicit UTF-8 charset if the corresponding overloaded method is available. After the quick-fix is applied: 'void foo(byte[] bytes) {\n String s = new String(bytes, StandardCharsets.UTF_8);\n}'",
+ "markdown": "Reports method and constructor calls that implicitly use the platform default charset. Such calls can produce different results on systems that use a different default charset and may result in unexpected behaviour.\n\n**Example:**\n\n void foo(byte[] bytes) {\n String s = new String(bytes);\n }\n\nYou can use a quick-fix that specifies the explicit UTF-8 charset if the corresponding overloaded method is available.\nAfter the quick-fix is applied:\n\n void foo(byte[] bytes) {\n String s = new String(bytes, StandardCharsets.UTF_8);\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -27719,8 +27919,8 @@
"text": "Stream API call chain can be simplified"
},
"fullDescription": {
- "text": "Reports stream API call chains that can be simplified. Simplification will often avoid some temporary object creation during collection traversal. The inspection replaces the following call chains: 'collection.stream().forEach()' → 'collection.forEach()' 'collection.stream().collect(toList/toSet/toCollection())' → 'new CollectionType<>(collection)' 'collection.stream().toArray()' → 'collection.toArray()' 'Arrays.asList().stream()' → 'Arrays.stream()' or 'Stream.of()' 'IntStream.range(0, array.length).mapToObj(idx -> array[idx])' → 'Arrays.stream(array)' 'IntStream.range(0, list.size()).mapToObj(idx -> list.get(idx))' → 'list.stream()' 'Collections.singleton().stream()' → 'Stream.of()' 'Collections.emptyList().stream()' → 'Stream.empty()' 'stream.filter().findFirst().isPresent()' → 'stream.anyMatch()' 'stream.collect(counting())' → 'stream.count()' 'stream.collect(maxBy())' → 'stream.max()' 'stream.collect(mapping())' → 'stream.map().collect()' 'stream.collect(reducing())' → 'stream.reduce()' 'stream.collect(summingInt())' → 'stream.mapToInt().sum()' 'stream.mapToObj(x -> x)' → 'stream.boxed()' 'stream.map(x -> {...; return x;})' → 'stream.peek(x -> ...)' '!stream.anyMatch()' → 'stream.noneMatch()' '!stream.anyMatch(x -> !(...))' → 'stream.allMatch()' 'stream.map().anyMatch(Boolean::booleanValue)' → 'stream.anyMatch()' 'IntStream.range(expr1, expr2).mapToObj(x -> array[x])' → 'Arrays.stream(array, expr1, expr2)' 'Collection.nCopies(count, ...)' → 'Stream.generate().limit(count)' 'stream.sorted(comparator).findFirst()' → 'Stream.min(comparator)' 'optional.orElseGet(() -> { throw new ...; })' → 'optional.orElseThrow()' Note that the replacements semantic may have minor difference in some cases. For example, 'Collections.synchronizedList(...).stream().forEach()' is not synchronized while 'Collections.synchronizedList(...).forEach()' is synchronized. Also, 'collect(Collectors.maxBy())' returns an empty 'Optional' if the resulting element is 'null' while 'Stream.max()' throws 'NullPointerException' in this case.",
- "markdown": "Reports stream API call chains that can be simplified. Simplification will often avoid some temporary object creation during collection traversal.\n\n\nThe inspection replaces the following call chains:\n\n* `collection.stream().forEach()` → `collection.forEach()`\n* `collection.stream().collect(toList/toSet/toCollection())` → `new CollectionType<>(collection)`\n* `collection.stream().toArray()` → `collection.toArray()`\n* `Arrays.asList().stream()` → `Arrays.stream()` or `Stream.of()`\n* `IntStream.range(0, array.length).mapToObj(idx -> array[idx])` → `Arrays.stream(array)`\n* `IntStream.range(0, list.size()).mapToObj(idx -> list.get(idx))` → `list.stream()`\n* `Collections.singleton().stream()` → `Stream.of()`\n* `Collections.emptyList().stream()` → `Stream.empty()`\n* `stream.filter().findFirst().isPresent()` → `stream.anyMatch()`\n* `stream.collect(counting())` → `stream.count()`\n* `stream.collect(maxBy())` → `stream.max()`\n* `stream.collect(mapping())` → `stream.map().collect()`\n* `stream.collect(reducing())` → `stream.reduce()`\n* `stream.collect(summingInt())` → `stream.mapToInt().sum()`\n* `stream.mapToObj(x -> x)` → `stream.boxed()`\n* `stream.map(x -> {...; return x;})` → `stream.peek(x -> ...)`\n* `!stream.anyMatch()` → `stream.noneMatch()`\n* `!stream.anyMatch(x -> !(...))` → `stream.allMatch()`\n* `stream.map().anyMatch(Boolean::booleanValue)` → `stream.anyMatch()`\n* `IntStream.range(expr1, expr2).mapToObj(x -> array[x])` → `Arrays.stream(array, expr1, expr2)`\n* `Collection.nCopies(count, ...)` → `Stream.generate().limit(count)`\n* `stream.sorted(comparator).findFirst()` → `Stream.min(comparator)`\n* `optional.orElseGet(() -> { throw new ...; })` → `optional.orElseThrow()`\n\n\nNote that the replacements semantic may have minor difference in some cases. For example,\n`Collections.synchronizedList(...).stream().forEach()` is not synchronized while\n`Collections.synchronizedList(...).forEach()` is synchronized.\nAlso, `collect(Collectors.maxBy())` returns an empty `Optional` if the resulting element is\n`null` while `Stream.max()` throws `NullPointerException` in this case."
+ "text": "Reports stream API call chains that can be simplified. Simplification will often avoid some temporary object creation during collection traversal. The inspection replaces the following call chains: 'collection.stream().forEach()' → 'collection.forEach()' 'collection.stream().collect(toList/toSet/toCollection())' → 'new CollectionType<>(collection)' 'collection.stream().toArray()' → 'collection.toArray()' 'Arrays.asList().stream()' → 'Arrays.stream()' or 'Stream.of()' 'IntStream.range(0, array.length).mapToObj(idx -> array[idx])' → 'Arrays.stream(array)' 'IntStream.range(0, list.size()).mapToObj(idx -> list.get(idx))' → 'list.stream()' 'Collections.singleton().stream()' → 'Stream.of()' 'Collections.emptyList().stream()' → 'Stream.empty()' 'stream.filter().findFirst().isPresent()' → 'stream.anyMatch()' 'stream.collect(counting())' → 'stream.count()' 'stream.collect(maxBy())' → 'stream.max()' 'stream.collect(mapping())' → 'stream.map().collect()' 'stream.collect(reducing())' → 'stream.reduce()' 'stream.collect(summingInt())' → 'stream.mapToInt().sum()' 'stream.mapToObj(x -> x)' → 'stream.boxed()' 'stream.map(x -> {...; return x;})' → 'stream.peek(x -> ...)' '!stream.anyMatch()' → 'stream.noneMatch()' '!stream.anyMatch(x -> !(...))' → 'stream.allMatch()' 'stream.map().anyMatch(Boolean::booleanValue)' → 'stream.anyMatch()' 'IntStream.range(expr1, expr2).mapToObj(x -> array[x])' → 'Arrays.stream(array, expr1, expr2)' 'Collection.nCopies(count, ...)' → 'Stream.generate().limit(count)' 'stream.sorted(comparator).findFirst()' → 'Stream.min(comparator)' 'optional.orElseGet(() -> { throw new ...; })' → 'optional.orElseThrow()' Note that the replacement semantics may have minor differences in some cases. For example, 'Collections.synchronizedList(...).stream().forEach()' is not synchronized while 'Collections.synchronizedList(...).forEach()' is synchronized. Also, 'collect(Collectors.maxBy())' returns an empty 'Optional' if the resulting element is 'null' while 'Stream.max()' throws 'NullPointerException' in this case.",
+ "markdown": "Reports stream API call chains that can be simplified. Simplification will often avoid some temporary object creation during collection traversal.\n\n\nThe inspection replaces the following call chains:\n\n* `collection.stream().forEach()` → `collection.forEach()`\n* `collection.stream().collect(toList/toSet/toCollection())` → `new CollectionType<>(collection)`\n* `collection.stream().toArray()` → `collection.toArray()`\n* `Arrays.asList().stream()` → `Arrays.stream()` or `Stream.of()`\n* `IntStream.range(0, array.length).mapToObj(idx -> array[idx])` → `Arrays.stream(array)`\n* `IntStream.range(0, list.size()).mapToObj(idx -> list.get(idx))` → `list.stream()`\n* `Collections.singleton().stream()` → `Stream.of()`\n* `Collections.emptyList().stream()` → `Stream.empty()`\n* `stream.filter().findFirst().isPresent()` → `stream.anyMatch()`\n* `stream.collect(counting())` → `stream.count()`\n* `stream.collect(maxBy())` → `stream.max()`\n* `stream.collect(mapping())` → `stream.map().collect()`\n* `stream.collect(reducing())` → `stream.reduce()`\n* `stream.collect(summingInt())` → `stream.mapToInt().sum()`\n* `stream.mapToObj(x -> x)` → `stream.boxed()`\n* `stream.map(x -> {...; return x;})` → `stream.peek(x -> ...)`\n* `!stream.anyMatch()` → `stream.noneMatch()`\n* `!stream.anyMatch(x -> !(...))` → `stream.allMatch()`\n* `stream.map().anyMatch(Boolean::booleanValue)` → `stream.anyMatch()`\n* `IntStream.range(expr1, expr2).mapToObj(x -> array[x])` → `Arrays.stream(array, expr1, expr2)`\n* `Collection.nCopies(count, ...)` → `Stream.generate().limit(count)`\n* `stream.sorted(comparator).findFirst()` → `Stream.min(comparator)`\n* `optional.orElseGet(() -> { throw new ...; })` → `optional.orElseThrow()`\n\n\nNote that the replacement semantics may have minor differences in some cases. For example,\n`Collections.synchronizedList(...).stream().forEach()` is not synchronized while\n`Collections.synchronizedList(...).forEach()` is synchronized.\nAlso, `collect(Collectors.maxBy())` returns an empty `Optional` if the resulting element is\n`null` while `Stream.max()` throws `NullPointerException` in this case."
},
"defaultConfiguration": {
"enabled": true,
@@ -27736,7 +27936,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -27750,7 +27950,7 @@
{
"id": "UnknownGuard",
"shortDescription": {
- "text": "Unknown @GuardedBy field"
+ "text": "Unknown '@GuardedBy' field"
},
"fullDescription": {
"text": "Reports '@GuardedBy' annotations in which the specified guarding field is unknown. Example: 'private Object state;\n\n @GuardedBy(\"lock\") //unknown guard reference\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'",
@@ -27770,41 +27970,7 @@
{
"target": {
"id": "Java/Concurrency annotation issues",
- "index": 77,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "BeforeClassOrAfterClassIsPublicStaticVoidNoArg",
- "shortDescription": {
- "text": "Malformed @BeforeClass/@BeforeAll or @AfterClass/@AfterAll method"
- },
- "fullDescription": {
- "text": "Reports JUnit 4.0 '@BeforeClass' or '@AfterClass' methods that are not declared 'public' and 'static', do not return 'void', or take arguments. Such methods are easy to create inadvertently, but they will not be executed by JUnit tests runners. Example: 'public class MainTest {\n @BeforeClass\n String beforeClass(int i) {\n }\n }' After the quick-fix is applied, the method changes to: 'class MainTest {\n @BeforeClass\n public static void beforeClass() {\n }\n }'",
- "markdown": "Reports JUnit 4.0 `@BeforeClass` or `@AfterClass` methods that are not declared `public` and `static`, do not return `void`, or take arguments. Such methods are easy to create inadvertently, but they will not be executed by JUnit tests runners.\n\n**Example:**\n\n\n public class MainTest {\n @BeforeClass\n String beforeClass(int i) {\n }\n }\n\nAfter the quick-fix is applied, the method changes to:\n\n\n class MainTest {\n @BeforeClass\n public static void beforeClass() {\n }\n }\n"
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
+ "index": 76,
"toolComponent": {
"name": "QDJVM"
}
@@ -27838,7 +28004,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -27872,7 +28038,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -27906,41 +28072,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 7",
- "index": 123,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "JUnitDatapoint",
- "shortDescription": {
- "text": "Malformed @DataPoint field"
- },
- "fullDescription": {
- "text": "Reports fields or methods annotated with '@DataPoint' that are not 'public' and/or not 'static'. A theories test class with a malformed '@DataPoint' member cannot be run. For example: '@RunWith(Theories.class)\n public class SeriousTest {\n @DataPoint\n private String dataPoint = \"value\";\n\n @DataPoint(\"generated\")\n private String generatedDataPoint() {\n return \"generated value\";\n }\n\n @Theory\n public void theoryMethod(String param) {\n // ...\n }\n }' A quick fix is provided to fix the modifiers: '@RunWith(Theories.class)\n public class SeriousTest {\n @DataPoint\n public static String dataPoint = \"value\";\n\n @DataPoint(\"generated\")\n public static String generatedDataPoint() {\n return \"generated value\";\n }\n\n @Theory\n public void theoryMethod(String param) {\n // ...\n }\n }'",
- "markdown": "Reports fields or methods annotated with `@DataPoint` that are not `public` and/or not `static`. A [theories](https://github.com/junit-team/junit4/wiki/Theories) test class with a malformed `@DataPoint` member cannot be run.\n\nFor example:\n\n\n @RunWith(Theories.class)\n public class SeriousTest {\n @DataPoint\n private String dataPoint = \"value\";\n\n @DataPoint(\"generated\")\n private String generatedDataPoint() {\n return \"generated value\";\n }\n\n @Theory\n public void theoryMethod(String param) {\n // ...\n }\n }\n\nA quick fix is provided to fix the modifiers:\n\n\n @RunWith(Theories.class)\n public class SeriousTest {\n @DataPoint\n public static String dataPoint = \"value\";\n\n @DataPoint(\"generated\")\n public static String generatedDataPoint() {\n return \"generated value\";\n }\n\n @Theory\n public void theoryMethod(String param) {\n // ...\n }\n }\n"
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
+ "index": 121,
"toolComponent": {
"name": "QDJVM"
}
@@ -27974,7 +28106,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -28008,7 +28140,7 @@
{
"target": {
"id": "Java/Java language level issues",
- "index": 110,
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -28020,13 +28152,13 @@
]
},
{
- "id": "StringTokenizer",
+ "id": "UnnecessaryUnicodeEscape",
"shortDescription": {
- "text": "Use of StringTokenizer"
+ "text": "Unnecessary unicode escape sequence"
},
"fullDescription": {
- "text": "Reports usages of the 'StringTokenizer' class. Excessive use of 'StringTokenizer' is incorrect in an internationalized environment.",
- "markdown": "Reports usages of the `StringTokenizer` class. Excessive use of `StringTokenizer` is incorrect in an internationalized environment."
+ "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": false,
@@ -28054,16 +28186,16 @@
]
},
{
- "id": "PrimitiveArrayArgumentToVariableArgMethod",
+ "id": "StringTokenizer",
"shortDescription": {
- "text": "Confusing primitive array argument to varargs method"
+ "text": "Use of 'StringTokenizer'"
},
"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 usages of the 'StringTokenizer' class. Excessive use of 'StringTokenizer' is incorrect in an internationalized environment.",
+ "markdown": "Reports usages of the `StringTokenizer` class. Excessive use of `StringTokenizer` is incorrect in an internationalized environment."
},
"defaultConfiguration": {
- "enabled": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -28075,8 +28207,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Internationalization",
+ "index": 6,
"toolComponent": {
"name": "QDJVM"
}
@@ -28088,16 +28220,16 @@
]
},
{
- "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",
@@ -28109,8 +28241,8 @@
"relationships": [
{
"target": {
- "id": "Java/Internationalization",
- "index": 6,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -28158,7 +28290,7 @@
{
"id": "BigDecimalEquals",
"shortDescription": {
- "text": "'equals()' called on 'java.math.BigDecimal'"
+ "text": "'equals()' called on 'BigDecimal'"
},
"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) {}'",
@@ -28178,7 +28310,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -28192,7 +28324,7 @@
{
"id": "AccessToNonThreadSafeStaticFieldFromInstance",
"shortDescription": {
- "text": "Non-thread-safe static field access"
+ "text": "Non-thread-safe 'static' field access"
},
"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.",
@@ -28226,7 +28358,7 @@
{
"id": "AssignmentToCatchBlockParameter",
"shortDescription": {
- "text": "Assignment to catch block parameter"
+ "text": "Assignment to 'catch' block parameter"
},
"fullDescription": {
"text": "Reports assignments to, 'catch' block parameters. Changing a 'catch' block parameter is very confusing and should be discouraged. The quick-fix adds a declaration of a new variable. Example: 'void processFile(String fileName) throws Exception {\n try {\n doProcessFile(fileName);\n } catch(Exception ex) {\n if (ex instanceof UncheckedIOException) {\n // Warning: catch block parameter reassigned\n ex = ((UncheckedIOException) ex).getCause();\n }\n throw ex;\n }\n }' After the quick-fix is applied: 'void processFile(String fileName) throws Exception {\n try {\n doProcessFile(fileName);\n } catch(Exception ex) {\n Exception unwrapped = ex;\n if (unwrapped instanceof UncheckedIOException) {\n unwrapped = ((UncheckedIOException)\n unwrapped).getCause();\n }\n throw unwrapped;\n }\n }'",
@@ -28246,7 +28378,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -28280,7 +28412,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -28314,7 +28446,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -28416,7 +28548,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -28430,11 +28562,11 @@
{
"id": "ConstantMathCall",
"shortDescription": {
- "text": "Constant call to 'java.lang.Math'"
+ "text": "Constant call to 'Math'"
},
"fullDescription": {
- "text": "Reports calls to 'java.lang.Math' or 'java.lang.StrictMath' methods that can be determined as simple compile-time constants. Example: 'double v = Math.sin(0.0);' After the quick-fix is applied: 'double v = 0.0;'",
- "markdown": "Reports calls to `java.lang.Math` or `java.lang.StrictMath` methods that can be determined as simple compile-time constants.\n\n**Example:**\n\n double v = Math.sin(0.0);\n\nAfter the quick-fix is applied:\n\n double v = 0.0;\n"
+ "text": "Reports calls to 'java.lang.Math' or 'java.lang.StrictMath' methods that can be replaced with simple compile-time constants. Example: 'double v = Math.sin(0.0);' After the quick-fix is applied: 'double v = 0.0;'",
+ "markdown": "Reports calls to `java.lang.Math` or `java.lang.StrictMath` methods that can be replaced with simple compile-time constants.\n\n**Example:**\n\n double v = Math.sin(0.0);\n\nAfter the quick-fix is applied:\n\n double v = 0.0;\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -28450,7 +28582,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -28501,8 +28633,8 @@
"text": "Transient field in non-serializable class"
},
"fullDescription": {
- "text": "Reports 'transient' fields in classes that do not implement 'java.io.Serializable'. Example: 'public class NonSerializableClass {\n private transient String password; // warning: Field 'password' is marked 'transient', in non-Serializable class\n }'\n After the quick-fix is applied: 'public class NonSerializableClass {\n private String password;\n }'",
- "markdown": "Reports `transient` fields in classes that do not implement `java.io.Serializable`.\n\n**Example:**\n\n\n public class NonSerializableClass {\n private transient String password; // warning: Field 'password' is marked 'transient', in non-Serializable class\n }\n \nAfter the quick-fix is applied:\n\n\n public class NonSerializableClass {\n private String password;\n }\n"
+ "text": "Reports 'transient' fields in classes that do not implement 'java.io.Serializable'. Example: 'public class NonSerializableClass {\n private transient String password;\n }' After the quick-fix is applied: 'public class NonSerializableClass {\n private String password;\n }'",
+ "markdown": "Reports `transient` fields in classes that do not implement `java.io.Serializable`.\n\n**Example:**\n\n\n public class NonSerializableClass {\n private transient String password;\n }\n\nAfter the quick-fix is applied:\n\n\n public class NonSerializableClass {\n private String password;\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -28518,7 +28650,41 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SlowListContainsAll",
+ "shortDescription": {
+ "text": "Call to 'list.containsAll(collection)' may have poor performance"
+ },
+ "fullDescription": {
+ "text": "Reports calls to 'containsAll()' on 'java.util.List'. The time complexity of this method call is O(n·m), where n is the number of elements in the list on which the method is called, and m is the number of elements in the collection passed to the method as a parameter. When the list is large, this can be an expensive operation. The quick-fix wraps the list in 'new java.util.HashSet<>()' since the time required to create 'java.util.HashSet' from 'java.util.List' and execute 'containsAll()' on 'java.util.HashSet' is O(n+m). Example: 'public boolean check(List<String> list, Collection<String> collection) {\n // O(n·m) complexity\n return list.containsAll(collection);\n }' After the quick-fix is applied: 'public boolean check(List<String> list, Collection<String> collection) {\n // O(n+m) complexity\n return new HashSet<>(list).containsAll(collection);\n }' New in 2022.1",
+ "markdown": "Reports calls to `containsAll()` on `java.util.List`.\n\n\nThe time complexity of this method call is O(n·m), where n is the number of elements in the list on which\nthe method is called, and m is the number of elements in the collection passed to the method as a parameter.\nWhen the list is large, this can be an expensive operation.\n\n\nThe quick-fix wraps the list in `new java.util.HashSet<>()` since the time required to create\n`java.util.HashSet` from `java.util.List` and execute `containsAll()` on\n`java.util.HashSet` is O(n+m).\n\n**Example:**\n\n public boolean check(List<String> list, Collection<String> collection) {\n // O(n·m) complexity\n return list.containsAll(collection);\n }\n\nAfter the quick-fix is applied:\n\n public boolean check(List<String> list, Collection<String> collection) {\n // O(n+m) complexity\n return new HashSet<>(list).containsAll(collection);\n }\n\nNew in 2022.1"
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Java/Performance",
+ "index": 10,
"toolComponent": {
"name": "QDJVM"
}
@@ -28566,7 +28732,7 @@
{
"id": "TypeParameterExtendsObject",
"shortDescription": {
- "text": "Type parameter explicitly extends 'java.lang.Object'"
+ "text": "Type parameter explicitly extends 'Object'"
},
"fullDescription": {
"text": "Reports type parameters and wildcard type arguments that are explicitly declared to extend 'java.lang.Object'. Such 'extends' clauses are redundant as 'java.lang.Object' is a supertype for all classes. Example: 'class ClassA<T extends Object> {}' If you need to preserve the 'extends Object' clause because of annotations, disable the Ignore when java.lang.Object is annotated option. This might be useful, for example, when you use a nullness analyzer, and the 'extends Object' clause holds a '@Nullable'/'@NotNull' annotation. Example: 'class MyClass<T extends @NotNull Object> {}'",
@@ -28654,7 +28820,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -28702,7 +28868,7 @@
{
"id": "RedundantCollectionOperation",
"shortDescription": {
- "text": "Redundant Collection operation"
+ "text": "Redundant 'Collection' operation"
},
"fullDescription": {
"text": "Reports unnecessarily complex collection operations which have simpler alternatives. Example: 'void f(String[] array, Collection<String> collection) {\n String[] strings = Arrays.asList(array).subList(0, 10).toArray(new String[0]);\n boolean contains = collection.containsAll(Collections.singletonList(\"x\"));\n }' After the quick-fix is applied: 'void f(String[] array, Collection<String> collection) {\n String[] strings = Arrays.copyOf(array, 10);\n boolean contains = collection.contains(\"x\");\n }' New in 2018.1",
@@ -28722,7 +28888,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -28770,7 +28936,7 @@
{
"id": "AbstractClassWithoutAbstractMethods",
"shortDescription": {
- "text": "Abstract class without abstract methods"
+ "text": "Abstract class without 'abstract' methods"
},
"fullDescription": {
"text": "Reports 'abstract' classes that have no 'abstract' methods.",
@@ -28790,7 +28956,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -28824,7 +28990,7 @@
{
"target": {
"id": "Java/Numeric issues/Cast",
- "index": 104,
+ "index": 103,
"toolComponent": {
"name": "QDJVM"
}
@@ -28838,11 +29004,11 @@
{
"id": "SameReturnValue",
"shortDescription": {
- "text": "Method returns the same value"
+ "text": "Method always returns the same value"
},
"fullDescription": {
- "text": "Reports methods and method hierarchies in which the return value always appears to be the same constant.",
- "markdown": "Reports methods and method hierarchies in which the return value always appears to be the same constant."
+ "text": "Reports methods and method hierarchies that always return the same constant. Example: 'class X {\n int xxx() {\n return 0;\n }\n }'",
+ "markdown": "Reports methods and method hierarchies that always return the same constant.\n\n**Example:**\n\n\n class X {\n int xxx() {\n return 0;\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -28870,16 +29036,16 @@
]
},
{
- "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",
@@ -28891,8 +29057,8 @@
"relationships": [
{
"target": {
- "id": "Java/Performance",
- "index": 10,
+ "id": "Java/Code maturity",
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -28904,16 +29070,16 @@
]
},
{
- "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",
@@ -28925,8 +29091,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code maturity",
- "index": 40,
+ "id": "Java/Performance",
+ "index": 10,
"toolComponent": {
"name": "QDJVM"
}
@@ -28960,7 +29126,7 @@
{
"target": {
"id": "Java/Method metrics",
- "index": 101,
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -28974,7 +29140,7 @@
{
"id": "ThreadWithDefaultRunMethod",
"shortDescription": {
- "text": "Instantiating a Thread with default 'run()' method"
+ "text": "Instantiating a 'Thread' with default 'run()' method"
},
"fullDescription": {
"text": "Reports code that instantiates 'Thread' without specifying a 'Runnable' parameter or overriding the 'run()' method. Such threads do nothing useful.",
@@ -29006,13 +29172,13 @@
]
},
{
- "id": "TestOnlyProblems",
+ "id": "Java8MapApi",
"shortDescription": {
- "text": "Test-only usage in production code"
+ "text": "Simplifiable 'Map' operations"
},
"fullDescription": {
- "text": "Reports '@TestOnly'- and '@VisibleForTesting'-annotated methods and classes that are used in production code. Also reports usage of applying '@TestOnly' '@VisibleForTesting' to the same element. The problems are not reported if such method or class is referenced from: Code under the Test Sources folder A test class (JUnit/TestNG) Another '@TestOnly'-annotated method Example (in production code): '@TestOnly\n fun foo() { ... }\n\n fun main () {\n foo()\n }'",
- "markdown": "Reports `@TestOnly`- and `@VisibleForTesting`-annotated methods and classes that are used in production code. Also reports usage of applying `@TestOnly` `@VisibleForTesting` to the same element.\n\nThe problems are not reported if such method or class is referenced from:\n\n* Code under the **Test Sources** folder\n* A test class (JUnit/TestNG)\n* Another `@TestOnly`-annotated method\n\n**Example (in production code):**\n\n\n @TestOnly\n fun foo() { ... }\n\n fun main () {\n foo()\n }\n"
+ "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."
},
"defaultConfiguration": {
"enabled": false,
@@ -29027,8 +29193,8 @@
"relationships": [
{
"target": {
- "id": "JVM languages",
- "index": 1,
+ "id": "Java/Java language level migration aids/Java 8",
+ "index": 92,
"toolComponent": {
"name": "QDJVM"
}
@@ -29040,13 +29206,13 @@
]
},
{
- "id": "Java8MapApi",
+ "id": "TestOnlyProblems",
"shortDescription": {
- "text": "Simplifiable 'Map' operations"
+ "text": "Test-only usage in production code"
},
"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 '@TestOnly'- and '@VisibleForTesting'-annotated methods and classes that are used in production code. Also reports usage of applying '@TestOnly' '@VisibleForTesting' to the same element. The problems are not reported if such method or class is referenced from: Code under the Test Sources folder A test class (JUnit/TestNG) Another '@TestOnly'-annotated method Example (in production code): '@TestOnly\n fun foo() { ... }\n\n fun main () {\n foo()\n }'",
+ "markdown": "Reports `@TestOnly`- and `@VisibleForTesting`-annotated methods and classes that are used in production code. Also reports usage of applying `@TestOnly` `@VisibleForTesting` to the same element.\n\nThe problems are not reported if such method or class is referenced from:\n\n* Code under the **Test Sources** folder\n* A test class (JUnit/TestNG)\n* Another `@TestOnly`-annotated method\n\n**Example (in production code):**\n\n\n @TestOnly\n fun foo() { ... }\n\n fun main () {\n foo()\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -29061,8 +29227,8 @@
"relationships": [
{
"target": {
- "id": "Java/Java language level migration aids/Java 8",
- "index": 93,
+ "id": "JVM languages/Test frameworks",
+ "index": 141,
"toolComponent": {
"name": "QDJVM"
}
@@ -29096,7 +29262,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -29147,8 +29313,8 @@
"text": "JUnit 3 test can be JUnit 4"
},
"fullDescription": {
- "text": "Reports JUnit 3 test classes that can be converted to JUnit 4 test classes. Example: 'public class MainTestCase extends junit.framework.TestCase {\n public void test() {\n Assert.assertTrue(true);\n }\n }' After the quick-fix is applied: 'public class MainTestCase {\n @org.junit.Test\n public void test() {\n Assert.assertTrue(true);\n }\n }' This inspection reports if the language level of the project or module is 5 or higher and JUnit 4 available on the classpath.",
- "markdown": "Reports JUnit 3 test classes that can be converted to JUnit 4 test classes.\n\n**Example:**\n\n\n public class MainTestCase extends junit.framework.TestCase {\n public void test() {\n Assert.assertTrue(true);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class MainTestCase {\n @org.junit.Test\n public void test() {\n Assert.assertTrue(true);\n }\n }\n\nThis inspection reports if the language level of the project or module is 5 or higher and JUnit 4 available on the classpath."
+ "text": "Reports JUnit 3 test classes that can be converted to JUnit 4 test classes. Example: 'public class MainTestCase extends junit.framework.TestCase {\n public void test() {\n Assert.assertTrue(true);\n }\n }' After the quick-fix is applied: 'public class MainTestCase {\n @org.junit.Test\n public void test() {\n Assert.assertTrue(true);\n }\n }' This inspection only reports if the language level of the project or module is 5 or higher, and JUnit 4 is available on the classpath.",
+ "markdown": "Reports JUnit 3 test classes that can be converted to JUnit 4 test classes.\n\n**Example:**\n\n\n public class MainTestCase extends junit.framework.TestCase {\n public void test() {\n Assert.assertTrue(true);\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class MainTestCase {\n @org.junit.Test\n public void test() {\n Assert.assertTrue(true);\n }\n }\n\nThis inspection only reports if the language level of the project or module is 5 or higher, and JUnit 4 is available on the classpath."
},
"defaultConfiguration": {
"enabled": false,
@@ -29164,7 +29330,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -29198,7 +29364,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -29232,41 +29398,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "TestMethodIsPublicVoidNoArg",
- "shortDescription": {
- "text": "Malformed test method"
- },
- "fullDescription": {
- "text": "Reports any JUnit test methods that are declared 'static', not declared 'public', do not return 'void', or have parameters. Such test methods are easy to create inadvertently, but they will not be executed by JUnit test runners. Example: '@Test\n void test() {\n assertEquals(1, 1);\n }' After the quick-fix is applied: '@Test\n public void test() {\n assertEquals(1, 1);\n }' Use the inspection options to specify annotations. Any parameter annotated with one of these annotations will not be reported.",
- "markdown": "Reports any JUnit test methods that are declared `static`, not declared `public`, do not return `void`, or have parameters. Such test methods are easy to create inadvertently, but they will not be executed by JUnit test runners.\n\n**Example:**\n\n\n @Test\n void test() {\n assertEquals(1, 1);\n }\n\nAfter the quick-fix is applied:\n\n\n @Test\n public void test() {\n assertEquals(1, 1);\n }\n\nUse the inspection options to specify annotations.\nAny parameter annotated with one of these annotations will not be reported."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -29334,7 +29466,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -29382,7 +29514,7 @@
{
"id": "UnnecessaryInheritDoc",
"shortDescription": {
- "text": "Unnecessary {@inheritDoc} Javadoc comment"
+ "text": "Unnecessary '{@inheritDoc}' Javadoc comment"
},
"fullDescription": {
"text": "Reports Javadoc comments that contain only an '{@inheritDoc}' tag. Since Javadoc copies the super class' comment if no comment is present, a comment containing only '{@inheritDoc}' adds nothing. Also, it reports the '{@inheritDoc}' usages in invalid locations, for example, in fields. Suggests removing the unnecessary Javadoc comment. Example: 'class Example implements Comparable<Example> {\n /**\n * {@inheritDoc}\n */\n @Override\n public int compareTo(Example o) {\n return 0;\n }\n }' After the quick-fix is applied: 'class Example implements Comparable<Example> {\n @Override\n public int compareTo(Example o) {\n return 0;\n }\n }'",
@@ -29402,7 +29534,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -29414,13 +29546,13 @@
]
},
{
- "id": "NonReproducibleMathCall",
+ "id": "ParametersPerConstructor",
"shortDescription": {
- "text": "Non-reproducible call to 'java.lang.Math'"
+ "text": "Constructor with too many parameters"
},
"fullDescription": {
- "text": "Reports calls to 'java.lang.Math' methods, which results are not guaranteed to be reproduced precisely. In environments where reproducibility of results is required, 'java.lang.StrictMath' should be used instead.",
- "markdown": "Reports calls to `java.lang.Math` methods, which results are not guaranteed to be reproduced precisely.\n\nIn environments where reproducibility of results is required, `java.lang.StrictMath`\nshould be used instead."
+ "text": "Reports constructors whose number of parameters exceeds the specified maximum. Such objects are hard to instantiate, especially if some parameters are optional. Constructors with too many parameters may indicate that refactoring is necessary. Consider applying the builder pattern, for example. Example: 'public BankAccount(long accountNumber,\n String owner,\n double balance,\n double interestRate) {\n // fields initialization\n }' Configure the inspection: Use the Parameter limit field to specify the maximum allowed number of parameters in a constructor. Use the Ignore constructors with visibility list to specify whether the inspection should ignore constructors with specific visibility.",
+ "markdown": "Reports constructors whose number of parameters exceeds the specified maximum. Such objects are hard to instantiate, especially if some parameters are optional. Constructors with too many parameters may indicate that refactoring is necessary. Consider applying the builder pattern, for example.\n\n**Example:**\n\n\n public BankAccount(long accountNumber,\n String owner,\n double balance,\n double interestRate) {\n // fields initialization\n }\n\nConfigure the inspection:\n\n* Use the **Parameter limit** field to specify the maximum allowed number of parameters in a constructor.\n* Use the **Ignore constructors with visibility** list to specify whether the inspection should ignore constructors with specific visibility."
},
"defaultConfiguration": {
"enabled": false,
@@ -29435,8 +29567,8 @@
"relationships": [
{
"target": {
- "id": "Java/Numeric issues",
- "index": 27,
+ "id": "Java/Method metrics",
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -29448,13 +29580,13 @@
]
},
{
- "id": "ParametersPerConstructor",
+ "id": "NonReproducibleMathCall",
"shortDescription": {
- "text": "Constructor with too many parameters"
+ "text": "Non-reproducible call to 'Math'"
},
"fullDescription": {
- "text": "Reports constructors whose number of parameters exceeds the specified maximum. Such objects are hard to instantiate, especially if some parameters are optional. Constructors with too many parameters may indicate that refactoring is necessary. Consider applying the builder pattern, for example. Example: 'public BankAccount(long accountNumber,\n String owner,\n double balance,\n double interestRate) {\n // fields initialization\n }' Configure the inspection: Use the Parameter limit field to specify the maximum allowed number of parameters in a constructor. Use the Ignore constructors with visibility list to specify whether the inspection should ignore constructors with specific visibility.",
- "markdown": "Reports constructors whose number of parameters exceeds the specified maximum. Such objects are hard to instantiate, especially if some parameters are optional. Constructors with too many parameters may indicate that refactoring is necessary. Consider applying the builder pattern, for example.\n\n**Example:**\n\n\n public BankAccount(long accountNumber,\n String owner,\n double balance,\n double interestRate) {\n // fields initialization\n }\n\nConfigure the inspection:\n\n* Use the **Parameter limit** field to specify the maximum allowed number of parameters in a constructor.\n* Use the **Ignore constructors with visibility** list to specify whether the inspection should ignore constructors with specific visibility."
+ "text": "Reports calls to 'java.lang.Math' methods, which results are not guaranteed to be reproduced precisely. In environments where reproducibility of results is required, 'java.lang.StrictMath' should be used instead.",
+ "markdown": "Reports calls to `java.lang.Math` methods, which results are not guaranteed to be reproduced precisely.\n\nIn environments where reproducibility of results is required, `java.lang.StrictMath`\nshould be used instead."
},
"defaultConfiguration": {
"enabled": false,
@@ -29469,8 +29601,8 @@
"relationships": [
{
"target": {
- "id": "Java/Method metrics",
- "index": 101,
+ "id": "Java/Numeric issues",
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -29572,7 +29704,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -29674,7 +29806,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -29708,7 +29840,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -29742,7 +29874,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -29776,7 +29908,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -29810,7 +29942,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -29878,7 +30010,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -29912,7 +30044,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -29980,7 +30112,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -30026,16 +30158,16 @@
]
},
{
- "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",
@@ -30047,8 +30179,8 @@
"relationships": [
{
"target": {
- "id": "Java/Resource management",
- "index": 102,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -30060,16 +30192,16 @@
]
},
{
- "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",
@@ -30081,8 +30213,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Resource management",
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -30116,7 +30248,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 7",
- "index": 123,
+ "index": 121,
"toolComponent": {
"name": "QDJVM"
}
@@ -30128,19 +30260,19 @@
]
},
{
- "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 or if you need to downgrade to one of the previous Java versions. 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}' This inspection is available in Java 8 and later.",
- "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 or if you need to downgrade to one of the previous Java versions.\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\nThis inspection is available in Java 8 and later."
+ "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",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -30149,8 +30281,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Verbose or redundant code constructs",
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -30162,19 +30294,19 @@
]
},
{
- "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",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -30183,8 +30315,8 @@
"relationships": [
{
"target": {
- "id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "id": "Java/Code style issues",
+ "index": 11,
"toolComponent": {
"name": "QDJVM"
}
@@ -30201,8 +30333,8 @@
"text": "Text block can be replaced with regular string literal"
},
"fullDescription": {
- "text": "Reports text blocks that can be replaced with regular string literals. Occurrences of such text blocks may appear as results of migrating the code back to a Java version earlier than Java 15. 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\");' This inspection only reports if the configured language level is 15 or higher. New in 2019.3",
- "markdown": "Reports text blocks that can be replaced with regular string literals.\n\nOccurrences of such text blocks may appear as results of migrating the code back to a Java version earlier than Java 15.\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\nThis inspection only reports if the configured language level is 15 or higher.\n\nNew in 2019.3"
+ "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,
@@ -30252,7 +30384,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -30320,7 +30452,7 @@
{
"target": {
"id": "Java/Assignment issues",
- "index": 62,
+ "index": 63,
"toolComponent": {
"name": "QDJVM"
}
@@ -30354,7 +30486,7 @@
{
"target": {
"id": "Java/Portability",
- "index": 73,
+ "index": 71,
"toolComponent": {
"name": "QDJVM"
}
@@ -30422,7 +30554,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -30439,8 +30571,8 @@
"text": "'long' literal ending with 'l' instead of 'L'"
},
"fullDescription": {
- "text": "Reports 'long' literals ending with lowercase 'l'. These literals may be confusing, as lowercase 'l' looks very similar to '1'. The quick-fix for this inspection replaces lowercase 'l' with uppercase 'L'.",
- "markdown": "Reports `long` literals ending with lowercase 'l'. These literals may be confusing, as lowercase 'l' looks very similar to '1'.\n\nThe quick-fix for this inspection replaces lowercase 'l' with uppercase 'L'."
+ "text": "Reports 'long' literals ending with lowercase 'l'. These literals may be confusing, as the lowercase 'l' looks very similar to a literal '1' (one). Example: 'long nights = 100l;' After the quick-fix is applied: 'long nights = 100L;'",
+ "markdown": "Reports `long` literals ending with lowercase 'l'. These literals may be confusing, as the lowercase 'l' looks very similar to a literal '1' (one).\n\n**Example:**\n\n\n long nights = 100l;\n\nAfter the quick-fix is applied:\n\n\n long nights = 100L;\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -30456,7 +30588,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -30490,7 +30622,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -30507,8 +30639,8 @@
"text": "Non-short-circuit boolean expression"
},
"fullDescription": {
- "text": "Reports usages of the non-short-circuit forms of boolean 'and' and 'or' ('&' and '|'). Although the non-short-circuit versions are occasionally useful, in most cases the short-circuit forms ('&&' and '||') are intended and such unintentional usages may lead to subtle bugs. A quick-fix is suggested to use the short-circuit versions. Example: 'void foo(boolean x, boolean y) {\n if (x | y) { /**/ }\n }' After the quick-fix is applied: 'void foo(boolean x, boolean y) {\n if (x || y) { /**/ }\n }'",
- "markdown": "Reports usages of the non-short-circuit forms of boolean 'and' and 'or' (`&` and `|`). Although the non-short-circuit versions are occasionally useful, in most cases the short-circuit forms (`&&` and `||`) are intended and such unintentional usages may lead to subtle bugs.\n\n\nA quick-fix is suggested to use the short-circuit versions.\n\n**Example:**\n\n\n void foo(boolean x, boolean y) {\n if (x | y) { /**/ }\n }\n\nAfter the quick-fix is applied:\n\n\n void foo(boolean x, boolean y) {\n if (x || y) { /**/ }\n }\n"
+ "text": "Reports usages of the non-short-circuit forms of boolean 'and' and 'or' ('&', '|', '&=' and '|='). Although the non-short-circuit versions are occasionally useful, in most cases the short-circuit forms ('&&' and '||') are intended and such unintentional usages may lead to subtle bugs. A quick-fix is suggested to use the short-circuit versions. Example: 'void foo(boolean x, boolean y, boolean z) {\n if (x | y) { x |= z; }\n }' After the quick-fix is applied: 'void foo(boolean x, boolean y) {\n if (x || y) { x = x || z; }\n }'",
+ "markdown": "Reports usages of the non-short-circuit forms of boolean 'and' and 'or' (`&`, `|`, `&=` and `|=`). Although the non-short-circuit versions are occasionally useful, in most cases the short-circuit forms (`&&` and `||`) are intended and such unintentional usages may lead to subtle bugs.\n\n\nA quick-fix is suggested to use the short-circuit versions.\n\n**Example:**\n\n\n void foo(boolean x, boolean y, boolean z) {\n if (x | y) { x |= z; }\n }\n\nAfter the quick-fix is applied:\n\n\n void foo(boolean x, boolean y) {\n if (x || y) { x = x || z; }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -30524,7 +30656,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -30558,7 +30690,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -30575,8 +30707,8 @@
"text": "Redundant record constructor"
},
"fullDescription": {
- "text": "Reports redundant constructors declared inside Java records. Example 1: 'record Point(int x, int y) {\n public Point {} // could be removed\n }\n \n record Point(int x, int y) {\n public Point(int x, int y) { // could be removed\n this.x = x;\n this.y = y;\n }\n }' The quick-fix removes the redundant constructors. Example 2: '// could be converted to compact constructor\n record Range(int from, int to) {\n public Range(int from, int to) {\n if (from > to) throw new IllegalArgumentException();\n this.from = from;\n this.to = to;\n }\n }' The quick-fix converts this code into a compact constructor. This inspection only reports if the configured language level is 14 Preview or 15 Preview. New in 2020.1",
- "markdown": "Reports redundant constructors declared inside Java records.\n\n**Example 1:**\n\n\n record Point(int x, int y) {\n public Point {} // could be removed\n }\n \n record Point(int x, int y) {\n public Point(int x, int y) { // could be removed\n this.x = x;\n this.y = y;\n }\n }\n\nThe quick-fix removes the redundant constructors.\n\n**Example 2:**\n\n\n // could be converted to compact constructor\n record Range(int from, int to) {\n public Range(int from, int to) {\n if (from > to) throw new IllegalArgumentException();\n this.from = from;\n this.to = to;\n }\n }\n\nThe quick-fix converts this code into a compact constructor.\n\nThis inspection only reports if the configured language level is 14 Preview or 15 Preview.\n\nNew in 2020.1"
+ "text": "Reports redundant constructors declared inside Java records. Example 1: 'record Point(int x, int y) {\n public Point {} // could be removed\n }\n \n record Point(int x, int y) {\n public Point(int x, int y) { // could be removed\n this.x = x;\n this.y = y;\n }\n }' The quick-fix removes the redundant constructors. Example 2: '// could be converted to compact constructor\n record Range(int from, int to) {\n public Range(int from, int to) {\n if (from > to) throw new IllegalArgumentException();\n this.from = from;\n this.to = to;\n }\n }' The quick-fix converts this code into a compact constructor. This inspection only reports if the language level of the project or module is 16 or higher. New in 2020.1",
+ "markdown": "Reports redundant constructors declared inside Java records.\n\n**Example 1:**\n\n\n record Point(int x, int y) {\n public Point {} // could be removed\n }\n \n record Point(int x, int y) {\n public Point(int x, int y) { // could be removed\n this.x = x;\n this.y = y;\n }\n }\n\nThe quick-fix removes the redundant constructors.\n\n**Example 2:**\n\n\n // could be converted to compact constructor\n record Range(int from, int to) {\n public Range(int from, int to) {\n if (from > to) throw new IllegalArgumentException();\n this.from = from;\n this.to = to;\n }\n }\n\nThe quick-fix converts this code into a compact constructor.\n\nThis inspection only reports if the language level of the project or module is 16 or higher.\n\nNew in 2020.1"
},
"defaultConfiguration": {
"enabled": true,
@@ -30626,7 +30758,7 @@
{
"target": {
"id": "Java/Visibility",
- "index": 76,
+ "index": 75,
"toolComponent": {
"name": "QDJVM"
}
@@ -30660,7 +30792,7 @@
{
"target": {
"id": "Java/Inheritance issues",
- "index": 114,
+ "index": 113,
"toolComponent": {
"name": "QDJVM"
}
@@ -30694,7 +30826,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -30708,7 +30840,7 @@
{
"id": "Convert2Diamond",
"shortDescription": {
- "text": "Explicit type can be replaced with <>"
+ "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.",
@@ -30728,7 +30860,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 7",
- "index": 123,
+ "index": 121,
"toolComponent": {
"name": "QDJVM"
}
@@ -30745,8 +30877,8 @@
"text": "Varargs method"
},
"fullDescription": {
- "text": "Reports methods that accept an arbitrary number of parameters (also known as varargs methods). Such methods are not supported under Java 1.4 or earlier JVMs. Example: 'enum EnumConstants {\n A(null), B, C;\n\n EnumConstants(String... ss) {}\n}' A quick-fix is available to replace a variable argument parameter with an equivalent array parameter. Relevant arguments in method calls are wrapped in an array initializer expression. After the quick-fix is applied: 'enum EnumConstants {\n A(null), B(new String[]{}), C(new String[]{});\n\n EnumConstants(String[] ss) {}\n}'",
- "markdown": "Reports methods that accept an arbitrary number of parameters (also known as varargs methods).\n\nSuch methods are not supported under Java 1.4 or earlier JVMs.\n\n**Example:**\n\n\n enum EnumConstants {\n A(null), B, C;\n\n EnumConstants(String... ss) {}\n }\n\nA quick-fix is available to replace a variable argument\nparameter with an equivalent array parameter. Relevant arguments in method calls are wrapped in an array initializer expression.\nAfter the quick-fix is applied:\n\n\n enum EnumConstants {\n A(null), B(new String[]{}), C(new String[]{});\n\n EnumConstants(String[] ss) {}\n }\n"
+ "text": "Reports methods that accept an arbitrary number of parameters (also known as varargs methods). Example: 'enum EnumConstants {\n A(null), B, C;\n\n EnumConstants(String... ss) {}\n}' A quick-fix is available to replace a variable argument parameter with an equivalent array parameter. Relevant arguments in method calls are wrapped in an array initializer expression. After the quick-fix is applied: 'enum EnumConstants {\n A(null), B(new String[]{}), C(new String[]{});\n\n EnumConstants(String[] ss) {}\n}' Varargs method appeared in Java 5. This inspection can help to downgrade for backward compatibility with earlier Java versions.",
+ "markdown": "Reports methods that accept an arbitrary number of parameters (also known as varargs methods).\n\n**Example:**\n\n\n enum EnumConstants {\n A(null), B, C;\n\n EnumConstants(String... ss) {}\n }\n\nA quick-fix is available to replace a variable argument\nparameter with an equivalent array parameter. Relevant arguments in method calls are wrapped in an array initializer expression.\nAfter the quick-fix is applied:\n\n\n enum EnumConstants {\n A(null), B(new String[]{}), C(new String[]{});\n\n EnumConstants(String[] ss) {}\n }\n\n\n*Varargs method* appeared in Java 5.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions."
},
"defaultConfiguration": {
"enabled": false,
@@ -30762,7 +30894,7 @@
{
"target": {
"id": "Java/Java language level issues",
- "index": 110,
+ "index": 109,
"toolComponent": {
"name": "QDJVM"
}
@@ -30796,7 +30928,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -30830,7 +30962,7 @@
{
"target": {
"id": "Java/Performance/Embedded",
- "index": 131,
+ "index": 129,
"toolComponent": {
"name": "QDJVM"
}
@@ -30864,7 +30996,7 @@
{
"target": {
"id": "Java/JavaBeans issues",
- "index": 106,
+ "index": 105,
"toolComponent": {
"name": "QDJVM"
}
@@ -30898,7 +31030,7 @@
{
"target": {
"id": "Java/Javadoc",
- "index": 53,
+ "index": 54,
"toolComponent": {
"name": "QDJVM"
}
@@ -30932,7 +31064,7 @@
{
"target": {
"id": "Java/Cloning issues",
- "index": 87,
+ "index": 86,
"toolComponent": {
"name": "QDJVM"
}
@@ -30966,7 +31098,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -30983,8 +31115,8 @@
"text": "'Optional' can be replaced with sequence of 'if' statements"
},
"fullDescription": {
- "text": "Reports 'Optional' call chains that can be replaced with a sequence of 'if' statements. Example: 'return Optional.ofNullable(name)\n .map(this::extractInitials)\n .map(initials -> initials.toUpperCase(Locale.ENGLISH))\n .orElseGet(this::getDefault);' After the quick-fix is applied: 'if (name != null) {\n String initials = extractInitials(name);\n if (initials != null) return initials.toUpperCase(Locale.ENGLISH);\n }\n return getDefault();' This inspection only reports if the language level of the project or module is 8 or higher. New in 2020.2",
- "markdown": "Reports `Optional` call chains that can be replaced with a sequence of `if` statements.\n\nExample:\n\n\n return Optional.ofNullable(name)\n .map(this::extractInitials)\n .map(initials -> initials.toUpperCase(Locale.ENGLISH))\n .orElseGet(this::getDefault);\n\nAfter the quick-fix is applied:\n\n\n if (name != null) {\n String initials = extractInitials(name);\n if (initials != null) return initials.toUpperCase(Locale.ENGLISH);\n }\n return getDefault();\n\nThis inspection only reports if the language level of the project or module is 8 or higher.\n\nNew in 2020.2"
+ "text": "Reports 'Optional' call chains that can be replaced with a sequence of 'if' statements. Example: 'return Optional.ofNullable(name)\n .map(this::extractInitials)\n .map(initials -> initials.toUpperCase(Locale.ENGLISH))\n .orElseGet(this::getDefault);' After the quick-fix is applied: 'if (name != null) {\n String initials = extractInitials(name);\n if (initials != null) return initials.toUpperCase(Locale.ENGLISH);\n }\n return getDefault();' 'java.util.Optional' appeared in Java 8. This inspection can help to downgrade for backward compatibility with earlier Java versions. New in 2020.2",
+ "markdown": "Reports `Optional` call chains that can be replaced with a sequence of `if` statements.\n\nExample:\n\n\n return Optional.ofNullable(name)\n .map(this::extractInitials)\n .map(initials -> initials.toUpperCase(Locale.ENGLISH))\n .orElseGet(this::getDefault);\n\nAfter the quick-fix is applied:\n\n\n if (name != null) {\n String initials = extractInitials(name);\n if (initials != null) return initials.toUpperCase(Locale.ENGLISH);\n }\n return getDefault();\n\n\n`java.util.Optional` appeared in Java 8.\nThis inspection can help to downgrade for backward compatibility with earlier Java versions.\n\nNew in 2020.2"
},
"defaultConfiguration": {
"enabled": false,
@@ -31012,6 +31144,40 @@
]
},
{
+ "id": "IllegalDependencyOnInternalPackage",
+ "shortDescription": {
+ "text": "Illegal dependency on internal package"
+ },
+ "fullDescription": {
+ "text": "Reports references in modules without 'module-info.java' on packages which are not exported from named modules. Such configuration may occur when some modules in the project are already migrated to Java modules but others are still non-modular. By analogy to the JDK, such non-modular code should not get access to the code in named modules which is not explicitly exported.",
+ "markdown": "Reports references in modules without `module-info.java` on packages which are not exported from named modules.\n\nSuch configuration may occur when some modules in the project are already migrated to Java modules but others are still non-modular.\nBy analogy to the JDK, such non-modular code should not get access to the code in named modules which is not explicitly exported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "ideaSeverity": "ERROR",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JVM languages",
+ "index": 1,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "BigDecimalMethodWithoutRoundingCalled",
"shortDescription": {
"text": "Call to 'BigDecimal' method without a rounding mode argument"
@@ -31034,7 +31200,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -31068,7 +31234,7 @@
{
"target": {
"id": "Java/Numeric issues",
- "index": 27,
+ "index": 26,
"toolComponent": {
"name": "QDJVM"
}
@@ -31082,7 +31248,7 @@
{
"id": "DriverManagerGetConnection",
"shortDescription": {
- "text": "Use of DriverManager to get JDBC connection"
+ "text": "Use of 'DriverManager' to get JDBC connection"
},
"fullDescription": {
"text": "Reports any uses of 'java.sql.DriverManager' to acquire a JDBC connection. 'java.sql.DriverManager' has been superseded by 'javax.sql.Datasource', which allows for connection pooling and other optimizations. Example: 'Connection conn = DriverManager.getConnection(url, username, password);'",
@@ -31102,7 +31268,7 @@
{
"target": {
"id": "Java/Resource management",
- "index": 102,
+ "index": 101,
"toolComponent": {
"name": "QDJVM"
}
@@ -31136,7 +31302,7 @@
{
"target": {
"id": "Java/Code maturity",
- "index": 40,
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -31238,7 +31404,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -31272,7 +31438,7 @@
{
"target": {
"id": "Java/Encapsulation",
- "index": 97,
+ "index": 96,
"toolComponent": {
"name": "QDJVM"
}
@@ -31306,7 +31472,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 5",
- "index": 92,
+ "index": 91,
"toolComponent": {
"name": "QDJVM"
}
@@ -31339,8 +31505,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code style issues",
- "index": 11,
+ "id": "Java/Code maturity",
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -31374,7 +31540,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -31386,13 +31552,13 @@
]
},
{
- "id": "IteratorHasNextCallsIteratorNext",
+ "id": "EqualsAndHashcode",
"shortDescription": {
- "text": "'Iterator.hasNext()' which calls 'next()'"
+ "text": "'equals()' and 'hashCode()' not paired"
},
"fullDescription": {
- "text": "Reports implementations of 'Iterator.hasNext()' or 'ListIterator.hasPrevious()' that call 'Iterator.next()' or 'ListIterator.previous()' on the iterator instance. Such calls are almost certainly an error, as methods like 'hasNext()' should not modify the iterators state, while 'next()' should. Example: 'class MyIterator implements Iterator<Integer> {\n public boolean hasNext() {\n return next() != null;\n }\n }'",
- "markdown": "Reports implementations of `Iterator.hasNext()` or `ListIterator.hasPrevious()` that call `Iterator.next()` or `ListIterator.previous()` on the iterator instance. Such calls are almost certainly an error, as methods like `hasNext()` should not modify the iterators state, while `next()` should.\n\n**Example:**\n\n\n class MyIterator implements Iterator<Integer> {\n public boolean hasNext() {\n return next() != null;\n }\n }\n"
+ "text": "Reports classes that override the 'equals()' method but do not override the 'hashCode()' method or vice versa, which can potentially lead to problems when the class is added to a 'Collection' or a 'HashMap'. The quick-fix generates the default implementation for an absent method. Example: 'class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n}' After the quick-fix is applied: 'class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n\n @Override\n public boolean equals(Object o) {\n if (this == o) return true;\n if (!(o instanceof StringHolder)) return false;\n\n StringHolder holder = (StringHolder)o;\n\n if (s != null ? !s.equals(holder.s) : holder.s != null) return false;\n\n return true;\n }\n}'",
+ "markdown": "Reports classes that override the `equals()` method but do not override the `hashCode()` method or vice versa, which can potentially lead to problems when the class is added to a `Collection` or a `HashMap`.\n\nThe quick-fix generates the default implementation for an absent method.\n\nExample:\n\n\n class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n\n @Override\n public boolean equals(Object o) {\n if (this == o) return true;\n if (!(o instanceof StringHolder)) return false;\n\n StringHolder holder = (StringHolder)o;\n\n if (s != null ? !s.equals(holder.s) : holder.s != null) return false;\n\n return true;\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -31408,7 +31574,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -31420,13 +31586,13 @@
]
},
{
- "id": "EqualsAndHashcode",
+ "id": "IteratorHasNextCallsIteratorNext",
"shortDescription": {
- "text": "'equals()' and 'hashCode()' not paired"
+ "text": "'Iterator.hasNext()' which calls 'next()'"
},
"fullDescription": {
- "text": "Reports classes that override the 'equals()' method but do not override the 'hashCode()' method or vice versa, which can potentially lead to problems when the class is added to a 'Collection' or a 'HashMap'. The quick-fix generates the default implementation for an absent method. Example: 'class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n}' After the quick-fix is applied: 'class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n\n @Override\n public boolean equals(Object o) {\n if (this == o) return true;\n if (!(o instanceof StringHolder)) return false;\n\n StringHolder holder = (StringHolder)o;\n\n if (s != null ? !s.equals(holder.s) : holder.s != null) return false;\n\n return true;\n }\n}'",
- "markdown": "Reports classes that override the `equals()` method but do not override the `hashCode()` method or vice versa, which can potentially lead to problems when the class is added to a `Collection` or a `HashMap`.\n\nThe quick-fix generates the default implementation for an absent method.\n\nExample:\n\n\n class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n class StringHolder {\n String s;\n\n @Override public int hashCode() {\n return s != null ? s.hashCode() : 0;\n }\n\n @Override\n public boolean equals(Object o) {\n if (this == o) return true;\n if (!(o instanceof StringHolder)) return false;\n\n StringHolder holder = (StringHolder)o;\n\n if (s != null ? !s.equals(holder.s) : holder.s != null) return false;\n\n return true;\n }\n }\n"
+ "text": "Reports implementations of 'Iterator.hasNext()' or 'ListIterator.hasPrevious()' that call 'Iterator.next()' or 'ListIterator.previous()' on the iterator instance. Such calls are almost certainly an error, as methods like 'hasNext()' should not modify the iterators state, while 'next()' should. Example: 'class MyIterator implements Iterator<Integer> {\n public boolean hasNext() {\n return next() != null;\n }\n }'",
+ "markdown": "Reports implementations of `Iterator.hasNext()` or `ListIterator.hasPrevious()` that call `Iterator.next()` or `ListIterator.previous()` on the iterator instance. Such calls are almost certainly an error, as methods like `hasNext()` should not modify the iterators state, while `next()` should.\n\n**Example:**\n\n\n class MyIterator implements Iterator<Integer> {\n public boolean hasNext() {\n return next() != null;\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -31442,7 +31608,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -31476,7 +31642,7 @@
{
"target": {
"id": "Java/Java language level migration aids/Java 11",
- "index": 143,
+ "index": 140,
"toolComponent": {
"name": "QDJVM"
}
@@ -31544,7 +31710,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -31561,8 +31727,8 @@
"text": "Field may be 'final'"
},
"fullDescription": {
- "text": "Reports any fields that can be safely made 'final'. Using the 'final' variable makes code more error-prone. It may also be helpful for compiler optimisations that make your program run faster. A field may be safely made 'final' only if it has the 'private' access modifier (or it is defined in a local / anonymous class) and: It is 'static' and initialized either in its declaration or in one static class initializer. It is non-static and initialized either in its declaration or in one non-static class initializer or in all constructors.",
- "markdown": "Reports any fields that can be safely made `final`.\n\nUsing the `final` variable makes code more error-prone. It may also be helpful for compiler optimisations\nthat make your program run faster.\n\nA field may be safely made `final` only if it has the `private` access modifier\n(or it is defined in a local / anonymous class) and:\n\n\n* It is `static` and initialized either in its declaration or in one static class initializer.\n* It is non-static and initialized either in its declaration or in one non-static class initializer or in all constructors."
+ "text": "Reports fields that can be safely made 'final'. All 'final' fields have a value and this value does not change, which can make the code easier to reason about. To avoid too expensive analysis, this inspection only reports if the field has a 'private' modifier or it is defined in a local or anonymous class. A field can be 'final' if: It is 'static' and initialized once in its declaration or in one 'static' initializer. It is non-'static' and initialized once in its declaration, in one instance initializer or in every constructor And it is not modified anywhere else. Example: 'public class Person {\n private String name; // can be final\n\n Person(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n }' After the quick-fix is applied: 'public class Person {\n private final String name;\n\n Person(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n }'",
+ "markdown": "Reports fields that can be safely made `final`. All `final` fields have a value and this value does not change, which can make the code easier to reason about.\n\nTo avoid too expensive analysis, this inspection only reports if the field has a `private` modifier\nor it is defined in a local or anonymous class.\nA field can be `final` if:\n\n* It is `static` and initialized once in its declaration or in one `static` initializer.\n* It is non-`static` and initialized once in its declaration, in one instance initializer or in every constructor\n\nAnd it is not modified anywhere else.\n\n**Example:**\n\n\n public class Person {\n private String name; // can be final\n\n Person(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n }\n\nAfter the quick-fix is applied:\n\n\n public class Person {\n private final String name;\n\n Person(String name) {\n this.name = name;\n }\n\n public String getName() {\n return name;\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -31592,7 +31758,7 @@
{
"id": "SuspiciousArrayMethodCall",
"shortDescription": {
- "text": "Suspicious 'Arrays' method calls"
+ "text": "Suspicious 'Arrays' method call"
},
"fullDescription": {
"text": "Reports calls to non-generic-array manipulation methods like 'Arrays.fill()' with mismatched argument types. Such calls don't do anything useful and are likely to be mistakes. Example: 'int foo(String[] strings) {\n return Arrays.binarySearch(strings, 1);\n }' New in 2017.2",
@@ -31612,7 +31778,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -31646,7 +31812,7 @@
{
"target": {
"id": "Java/toString() issues",
- "index": 159,
+ "index": 158,
"toolComponent": {
"name": "QDJVM"
}
@@ -31680,7 +31846,7 @@
{
"target": {
"id": "Java/Concurrency annotation issues",
- "index": 77,
+ "index": 76,
"toolComponent": {
"name": "QDJVM"
}
@@ -31748,7 +31914,7 @@
{
"target": {
"id": "Java/Abstraction issues",
- "index": 61,
+ "index": 62,
"toolComponent": {
"name": "QDJVM"
}
@@ -31782,7 +31948,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -31794,16 +31960,16 @@
]
},
{
- "id": "SuspiciousIntegerDivAssignment",
+ "id": "MethodWithMultipleLoops",
"shortDescription": {
- "text": "Suspicious integer division assignment"
+ "text": "Method with multiple loops"
},
"fullDescription": {
- "text": "Reports assignments whose right side is a division that shouldn't be truncated to integer. While occasionally intended, this construction is often buggy. Example: 'int x = 18;\n x *= 3/2; // doesn't change x because of the integer division result' This code should be replaced with: 'int x = 18;\n x *= 3.0/2;' In the inspection options, you can disable warnings for suspicious but possibly correct divisions, for example, when the dividend can't be calculated statically. 'void calc(int d) {\n int x = 18;\n x *= d/2;\n }' New in 2019.2",
- "markdown": "Reports assignments whose right side is a division that shouldn't be truncated to integer.\n\nWhile occasionally intended, this construction is often buggy.\n\n**Example:**\n\n\n int x = 18;\n x *= 3/2; // doesn't change x because of the integer division result\n\n\nThis code should be replaced with:\n\n\n int x = 18;\n x *= 3.0/2;\n\n\nIn the inspection options, you can disable warnings for suspicious but possibly correct divisions,\nfor example, when the dividend can't be calculated statically.\n\n\n void calc(int d) {\n int x = 18;\n x *= d/2;\n }\n\n\nNew in 2019.2"
+ "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": true,
+ "enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -31815,8 +31981,8 @@
"relationships": [
{
"target": {
- "id": "Java/Probable bugs",
- "index": 15,
+ "id": "Java/Method metrics",
+ "index": 100,
"toolComponent": {
"name": "QDJVM"
}
@@ -31828,16 +31994,16 @@
]
},
{
- "id": "MethodWithMultipleLoops",
+ "id": "SuspiciousIntegerDivAssignment",
"shortDescription": {
- "text": "Method with multiple loops"
+ "text": "Suspicious integer division assignment"
},
"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 assignments whose right side is a division that shouldn't be truncated to integer. While occasionally intended, this construction is often buggy. Example: 'int x = 18;\n x *= 3/2; // doesn't change x because of the integer division result' This code should be replaced with: 'int x = 18;\n x *= 3.0/2;' In the inspection options, you can disable warnings for suspicious but possibly correct divisions, for example, when the dividend can't be calculated statically. 'void calc(int d) {\n int x = 18;\n x *= d/2;\n }' New in 2019.2",
+ "markdown": "Reports assignments whose right side is a division that shouldn't be truncated to integer.\n\nWhile occasionally intended, this construction is often buggy.\n\n**Example:**\n\n\n int x = 18;\n x *= 3/2; // doesn't change x because of the integer division result\n\n\nThis code should be replaced with:\n\n\n int x = 18;\n x *= 3.0/2;\n\n\nIn the inspection options, you can disable warnings for suspicious but possibly correct divisions,\nfor example, when the dividend can't be calculated statically.\n\n\n void calc(int d) {\n int x = 18;\n x *= d/2;\n }\n\n\nNew in 2019.2"
},
"defaultConfiguration": {
- "enabled": false,
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -31849,8 +32015,8 @@
"relationships": [
{
"target": {
- "id": "Java/Method metrics",
- "index": 101,
+ "id": "Java/Probable bugs",
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -31884,7 +32050,7 @@
{
"target": {
"id": "Java/Data flow",
- "index": 43,
+ "index": 44,
"toolComponent": {
"name": "QDJVM"
}
@@ -31952,7 +32118,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -31986,7 +32152,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -32020,7 +32186,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -32071,8 +32237,8 @@
"text": "Manual min/max calculation"
},
"fullDescription": {
- "text": "Reports cases where the minimum or the maximum of two numbers can be calculated using a 'Math.max()' or 'Math.min()' call instead of doing it manually. Example: 'public int min(int a, int b) {\n return b < a ? b : a;\n }' After the quick-fix is applied: 'public int min(int a, int b) {\n return Math.min(a, b);\n }' Use the Disable for float and double option to disable this inspection for 'double' and 'float'. This is useful because the quick-fix may slightly break semantics for 'float'/ 'double' when handling 'NaN'. Nevertheless, in most cases it will actually fix the subtle bug when users do not care about 'NaN'. New in 2019.2",
- "markdown": "Reports cases where the minimum or the maximum of two numbers can be calculated using a `Math.max()` or `Math.min()` call instead of doing it manually.\n\nExample:\n\n\n public int min(int a, int b) {\n return b < a ? b : a;\n }\n\nAfter the quick-fix is applied:\n\n\n public int min(int a, int b) {\n return Math.min(a, b);\n }\n\n\nUse the **Disable for float and double** option to disable this inspection for `double` and `float`.\nThis is useful because the quick-fix may slightly break semantics for `float`/\n`double` when handling `NaN`. Nevertheless, in most cases it will actually fix\nthe subtle bug when users do not care about `NaN`.\n\nNew in 2019.2"
+ "text": "Reports cases where the minimum or the maximum of two numbers can be calculated using a 'Math.max()' or 'Math.min()' call, instead of doing it manually. Example: 'public int min(int a, int b) {\n return b < a ? b : a;\n }' After the quick-fix is applied: 'public int min(int a, int b) {\n return Math.min(a, b);\n }' Use the Disable for float and double option to disable this inspection for 'double' and 'float' types. This is useful because the quick-fix may slightly change the semantics for 'float'/ 'double' types when handling 'NaN'. Nevertheless, in most cases this will actually fix a subtle bug where 'NaN' is not taken into account. New in 2019.2",
+ "markdown": "Reports cases where the minimum or the maximum of two numbers can be calculated using a `Math.max()` or `Math.min()` call, instead of doing it manually.\n\n**Example:**\n\n\n public int min(int a, int b) {\n return b < a ? b : a;\n }\n\nAfter the quick-fix is applied:\n\n\n public int min(int a, int b) {\n return Math.min(a, b);\n }\n\n\nUse the **Disable for float and double** option to disable this inspection for `double` and `float` types.\nThis is useful because the quick-fix may slightly change the semantics for `float`/\n`double` types when handling `NaN`. Nevertheless, in most cases this will actually fix\na subtle bug where `NaN` is not taken into account.\n\nNew in 2019.2"
},
"defaultConfiguration": {
"enabled": true,
@@ -32088,7 +32254,7 @@
{
"target": {
"id": "Java/Verbose or redundant code constructs",
- "index": 68,
+ "index": 37,
"toolComponent": {
"name": "QDJVM"
}
@@ -32190,7 +32356,7 @@
{
"target": {
"id": "Java/JUnit",
- "index": 46,
+ "index": 47,
"toolComponent": {
"name": "QDJVM"
}
@@ -32258,7 +32424,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -32272,7 +32438,7 @@
{
"id": "NonSerializableObjectPassedToObjectStream",
"shortDescription": {
- "text": "Non-serializable object passed to ObjectOutputStream"
+ "text": "Non-serializable object passed to 'ObjectOutputStream'"
},
"fullDescription": {
"text": "Reports non-'Serializable' objects used as arguments to 'java.io.ObjectOutputStream.write()'. Such calls will result in runtime exceptions. This inspection assumes objects of the types 'java.util.Collection' and 'java.util.Map' to be 'Serializable', unless the types they are declared in are non-'Serializable'. Example: 'public class IWantToSerializeThis {\n public static void main(String[] args) throws IOException {\n try(var stream = new ObjectOutputStream(Files.newOutputStream(Paths.get(\"output\")))) {\n // Warning -- will fail with NotSerializableException\n stream.writeObject(new IWantToSerializeThis());\n }\n }\n }'",
@@ -32292,7 +32458,7 @@
{
"target": {
"id": "Java/Serialization issues",
- "index": 17,
+ "index": 18,
"toolComponent": {
"name": "QDJVM"
}
@@ -32326,7 +32492,7 @@
{
"target": {
"id": "Java/Probable bugs",
- "index": 15,
+ "index": 16,
"toolComponent": {
"name": "QDJVM"
}
@@ -32338,13 +32504,13 @@
]
},
{
- "id": "UseOfObsoleteDateTimeApi",
+ "id": "ModuleWithTooFewClasses",
"shortDescription": {
- "text": "Use of obsolete date-time API"
+ "text": "Module with too few classes"
},
"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 modules that contain too few classes. Overly small modules may indicate a too fragmented design. Java, Kotlin and Groovy classes are counted. 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 number of classes a module may have.",
+ "markdown": "Reports modules that contain too few classes. Overly small modules may indicate a too fragmented design. Java, Kotlin and Groovy classes are counted.\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 number of classes a module may have."
},
"defaultConfiguration": {
"enabled": false,
@@ -32359,8 +32525,8 @@
"relationships": [
{
"target": {
- "id": "Java/Code maturity",
- "index": 40,
+ "id": "Java/Modularization issues",
+ "index": 53,
"toolComponent": {
"name": "QDJVM"
}
@@ -32372,13 +32538,13 @@
]
},
{
- "id": "ModuleWithTooFewClasses",
+ "id": "UseOfObsoleteDateTimeApi",
"shortDescription": {
- "text": "Module with too few classes"
+ "text": "Use of obsolete date-time API"
},
"fullDescription": {
- "text": "Reports modules that contain too few classes. Overly small modules may indicate a too fragmented design. Java, Kotlin and Groovy classes are counted. 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 number of classes a module may have.",
- "markdown": "Reports modules that contain too few classes. Overly small modules may indicate a too fragmented design. Java, Kotlin and Groovy classes are counted.\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 number of classes a module may have."
+ "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": false,
@@ -32393,8 +32559,8 @@
"relationships": [
{
"target": {
- "id": "Java/Modularization issues",
- "index": 52,
+ "id": "Java/Code maturity",
+ "index": 41,
"toolComponent": {
"name": "QDJVM"
}
@@ -32428,7 +32594,7 @@
{
"target": {
"id": "Java/Naming conventions/Method",
- "index": 83,
+ "index": 82,
"toolComponent": {
"name": "QDJVM"
}
@@ -32462,7 +32628,7 @@
{
"target": {
"id": "Java/Memory",
- "index": 128,
+ "index": 126,
"toolComponent": {
"name": "QDJVM"
}
@@ -32496,7 +32662,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -32513,8 +32679,8 @@
"text": "Minimum 'switch' branches"
},
"fullDescription": {
- "text": "Reports 'switch' statements and expressions with too few 'case' labels, and suggests rewriting them as 'if' and 'else if' statements. Example (minimum branches == 3): 'switch (expression) {\n case \"foo\" -> foo();\n case \"bar\" -> bar();\n }' After the quick-fix is applied: 'if (\"foo\".equals(expression)) {\n foo();\n } else if (\"bar\".equals(expression)) {\n bar();\n }' Configure the inspection: Use the Minimum number of branches field to specify the minimum expected number of 'case' labels.",
- "markdown": "Reports `switch` statements and expressions with too few `case` labels, and suggests rewriting them as `if` and `else if` statements.\n\nExample (minimum branches == 3):\n\n\n switch (expression) {\n case \"foo\" -> foo();\n case \"bar\" -> bar();\n }\n\nAfter the quick-fix is applied:\n\n\n if (\"foo\".equals(expression)) {\n foo();\n } else if (\"bar\".equals(expression)) {\n bar();\n }\n\nConfigure the inspection:\n\nUse the **Minimum number of branches** field to specify the minimum expected number of `case` labels."
+ "text": "Reports 'switch' statements and expressions with too few 'case' labels, and suggests rewriting them as 'if' and 'else if' statements. Example (minimum branches == 3): 'switch (expression) {\n case \"foo\" -> foo();\n case \"bar\" -> bar();\n }' After the quick-fix is applied: 'if (\"foo\".equals(expression)) {\n foo();\n } else if (\"bar\".equals(expression)) {\n bar();\n }' Exhaustive switch expressions (Java 14+) or pattern switch statements (Java 17 preview) without the 'default' branch are not reported. That's because compile-time exhaustiveness check will be lost when the 'switch' is converted to 'if' which might be undesired. Configure the inspection: Use the Minimum number of branches field to specify the minimum expected number of 'case' labels. Use the Do not report pattern switch statements option to avoid reporting switch statements and expressions that have pattern branches. E.g.: 'String result = switch(obj) {\n case String str -> str.trim();\n default -> \"none\";\n };' It might be preferred to keep the switch even with a single pattern branch, rather than using the 'instanceof' statement.",
+ "markdown": "Reports `switch` statements and expressions with too few `case` labels, and suggests rewriting them as `if` and `else if` statements.\n\nExample (minimum branches == 3):\n\n\n switch (expression) {\n case \"foo\" -> foo();\n case \"bar\" -> bar();\n }\n\nAfter the quick-fix is applied:\n\n\n if (\"foo\".equals(expression)) {\n foo();\n } else if (\"bar\".equals(expression)) {\n bar();\n }\n\nExhaustive switch expressions (Java 14+) or pattern switch statements (Java 17 preview) without the 'default' branch are not reported.\nThat's because compile-time exhaustiveness check will be lost when the `switch` is converted to `if`\nwhich might be undesired.\n\nConfigure the inspection:\n\nUse the **Minimum number of branches** field to specify the minimum expected number of `case` labels.\n\nUse the **Do not report pattern switch statements** option to avoid reporting switch statements and expressions that\nhave pattern branches. E.g.:\n\n\n String result = switch(obj) {\n case String str -> str.trim();\n default -> \"none\";\n };\n\nIt might be preferred to keep the switch even with a single pattern branch, rather than using the `instanceof` statement."
},
"defaultConfiguration": {
"enabled": false,
@@ -32530,7 +32696,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -32564,7 +32730,7 @@
{
"target": {
"id": "Java/Class structure",
- "index": 18,
+ "index": 17,
"toolComponent": {
"name": "QDJVM"
}
@@ -32576,13 +32742,13 @@
]
},
{
- "id": "StaticImport",
+ "id": "NoExplicitFinalizeCalls",
"shortDescription": {
- "text": "Static import"
+ "text": "'finalize()' called explicitly"
},
"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 calls to 'Object.finalize()'. Calling 'Object.finalize()' explicitly may result in objects being placed in an inconsistent state. The garbage collector automatically calls this method on an object when it determines that there are no references to this object. The inspection doesn't report calls to 'super.finalize()' from within implementations of 'finalize()' as they're benign. Example: 'MyObject m = new MyObject();\n m.finalize();\n System.gc()'",
+ "markdown": "Reports calls to `Object.finalize()`.\n\nCalling `Object.finalize()` explicitly may result in objects being placed in an\ninconsistent state.\nThe garbage collector automatically calls this method on an object when it determines that there are no references to this object.\n\nThe inspection doesn't report calls to `super.finalize()` from within implementations of `finalize()` as\nthey're benign.\n\n**Example:**\n\n\n MyObject m = new MyObject();\n m.finalize();\n System.gc()\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -32597,8 +32763,8 @@
"relationships": [
{
"target": {
- "id": "Java/Imports",
- "index": 21,
+ "id": "Java/Finalization",
+ "index": 51,
"toolComponent": {
"name": "QDJVM"
}
@@ -32610,13 +32776,13 @@
]
},
{
- "id": "NoExplicitFinalizeCalls",
+ "id": "ReplaceNullCheck",
"shortDescription": {
- "text": "'finalize()' called explicitly"
+ "text": "Null check can be replaced with method call"
},
"fullDescription": {
- "text": "Reports calls to 'Object.finalize()'. Calling 'Object.finalize()' explicitly may result in objects being placed in an inconsistent state. The garbage collector automatically calls this method on an object when it determines that there are no references to this object. The inspection doesn't report calls to 'super.finalize()' from within implementations of 'finalize()' as they're benign. Example: 'MyObject m = new MyObject();\n m.finalize();\n System.gc()'",
- "markdown": "Reports calls to `Object.finalize()`.\n\nCalling `Object.finalize()` explicitly may result in objects being placed in an\ninconsistent state.\nThe garbage collector automatically calls this method on an object when it determines that there are no references to this object.\n\nThe inspection doesn't report calls to `super.finalize()` from within implementations of `finalize()` as\nthey're benign.\n\n**Example:**\n\n\n MyObject m = new MyObject();\n m.finalize();\n System.gc()\n"
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -32631,8 +32797,8 @@
"relationships": [
{
"target": {
- "id": "Java/Finalization",
- "index": 50,
+ "id": "Java/Java language level migration aids/Java 9",
+ "index": 64,
"toolComponent": {
"name": "QDJVM"
}
@@ -32644,13 +32810,13 @@
]
},
{
- "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,
@@ -32665,8 +32831,8 @@
"relationships": [
{
"target": {
- "id": "Java/Java language level migration aids/Java 9",
- "index": 63,
+ "id": "Java/Imports",
+ "index": 21,
"toolComponent": {
"name": "QDJVM"
}
@@ -32700,7 +32866,7 @@
{
"target": {
"id": "Java/Control flow issues",
- "index": 26,
+ "index": 27,
"toolComponent": {
"name": "QDJVM"
}
@@ -32734,7 +32900,7 @@
{
"target": {
"id": "Java/Class metrics",
- "index": 96,
+ "index": 95,
"toolComponent": {
"name": "QDJVM"
}
@@ -32755,7 +32921,7 @@
},
{
"name": "org.jetbrains.kotlin",
- "version": "213-1.5.10-release-949-IJ7162",
+ "version": "222-1.7.10-release-334-IJ4502",
"rules": [
{
"id": "RedundantRunCatching",
@@ -32860,6 +33026,40 @@
]
},
{
+ "id": "NonExhaustiveWhenStatementMigration",
+ "shortDescription": {
+ "text": "Non-exhaustive 'when' statements will be prohibited since 1.7"
+ },
+ "fullDescription": {
+ "text": "Reports a non-exhaustive 'when' statements that will lead to compilation error since 1.7. Motivation types: Problematic/meaningless usage patterns need to be discouraged/blocked (e.g. counterintuitive behaviors) Code is error-prone Inconsistency in the design (things are done differently in different contexts) Impact types: Compilation. Some code that used to compile won't compile any more There were cases when such code worked with no exceptions Some such code could compile without any warnings More details: KT-47709: Make when statements with enum, sealed, and Boolean subjects exhaustive by default The quick-fix adds the missing 'else -> {}' branch. Example: 'sealed class Base {\n class A : Base()\n class B : Base()\n }\n\n fun test(base: Base) {\n when (base) {\n is Base.A -> \"\"\n }\n }' After the quick-fix is applied: 'sealed class Base {\n class A : Base()\n class B : Base()\n }\n\n fun test(base: Base) {\n when (base) {\n is Base.A -> \"\"\n else -> {}\n }\n }' This inspection only reports if the Kotlin language level of the project or module is 1.6 or higher.",
+ "markdown": "Reports a non-exhaustive `when` statements that will lead to compilation error since 1.7.\n\nMotivation types:\n\n* Problematic/meaningless usage patterns need to be discouraged/blocked (e.g. counterintuitive behaviors)\n * Code is error-prone\n* Inconsistency in the design (things are done differently in different contexts)\n\nImpact types:\n\n* Compilation. Some code that used to compile won't compile any more\n * There were cases when such code worked with no exceptions\n * Some such code could compile without any warnings\n\n**More details:** [KT-47709: Make when statements with enum, sealed, and Boolean subjects exhaustive by default](https://youtrack.jetbrains.com/issue/KT-47709)\n\nThe quick-fix adds the missing `else -> {}` branch.\n\n**Example:**\n\n\n sealed class Base {\n class A : Base()\n class B : Base()\n }\n\n fun test(base: Base) {\n when (base) {\n is Base.A -> \"\"\n }\n }\n\nAfter the quick-fix is applied:\n\n\n sealed class Base {\n class A : Base()\n class B : Base()\n }\n\n fun test(base: Base) {\n when (base) {\n is Base.A -> \"\"\n else -> {}\n }\n }\n\nThis inspection only reports if the Kotlin language level of the project or module is 1.6 or higher."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "IncompleteDestructuring",
"shortDescription": {
"text": "Incomplete destructuring declaration"
@@ -33120,7 +33320,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -33154,7 +33354,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -33234,6 +33434,40 @@
]
},
{
+ "id": "AmbiguousExpressionInWhenBranchMigration",
+ "shortDescription": {
+ "text": "Ambiguous logical expressions in 'when' branches since 1.7"
+ },
+ "fullDescription": {
+ "text": "Reports ambiguous logical expressions in 'when' branches which cause compilation errors in Kotlin 1.8 and later. 'fun Int.matches(strict: Boolean): Boolean = when (strict) {\n true -> this == 6\n this in (4..7) -> true // is ambiguous\n else -> false\n }' After the quick-fix is applied: 'fun Int.matches(strict: Boolean): Boolean = when (strict) {\n true -> this == 6\n (this in (4..7)) -> true // wrapped in parentheses\n else -> false\n }' Inspection is available for Kotlin language level starting from 1.7.",
+ "markdown": "Reports ambiguous logical expressions in `when` branches which cause compilation errors in Kotlin 1.8 and later.\n\n\n fun Int.matches(strict: Boolean): Boolean = when (strict) {\n true -> this == 6\n this in (4..7) -> true // is ambiguous\n else -> false\n }\n\nAfter the quick-fix is applied:\n\n\n fun Int.matches(strict: Boolean): Boolean = when (strict) {\n true -> this == 6\n (this in (4..7)) -> true // wrapped in parentheses\n else -> false\n }\n\nInspection is available for Kotlin language level starting from 1.7."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "RedundantEnumConstructorInvocation",
"shortDescription": {
"text": "Redundant enum constructor invocation"
@@ -33324,7 +33558,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -33370,19 +33604,19 @@
]
},
{
- "id": "Reformat",
+ "id": "KotlinTestJUnit",
"shortDescription": {
- "text": "File is not formatted according to project settings"
+ "text": "kotlin-test-junit could be used"
},
"fullDescription": {
- "text": "Reports places that are not formatted according to the project settings. Use the 'Reformat Code' and 'Reformat File...' quick-fixes to format either the highlighted code block or the entire file accordingly.",
- "markdown": "Reports places that are not formatted according to the project settings.\n\nUse the 'Reformat Code' and 'Reformat File...' quick-fixes to format either the highlighted code block\nor the entire file accordingly."
+ "text": "Reports usage of 'kotlin-test' and 'junit' dependency without 'kotlin-test-junit'. It is recommended to use 'kotlin-test-junit' dependency to work with Kotlin and JUnit.",
+ "markdown": "Reports usage of `kotlin-test` and `junit` dependency without `kotlin-test-junit`.\n\nIt is recommended to use `kotlin-test-junit` dependency to work with Kotlin and JUnit."
},
"defaultConfiguration": {
- "enabled": false,
- "level": "note",
+ "enabled": true,
+ "level": "warning",
"parameters": {
- "ideaSeverity": "WEAK WARNING",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -33391,8 +33625,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin/Style issues",
- "index": 3,
+ "id": "Kotlin",
+ "index": 2,
"toolComponent": {
"name": "QDJVM"
}
@@ -33404,19 +33638,19 @@
]
},
{
- "id": "KotlinTestJUnit",
+ "id": "SafeCastWithReturn",
"shortDescription": {
- "text": "kotlin-test-junit could be used"
+ "text": "Safe cast with 'return' should be replaced with 'if' type check"
},
"fullDescription": {
- "text": "Reports usage of 'kotlin-test' and 'junit' dependency without 'kotlin-test-junit'. It is recommended to use 'kotlin-test-junit' dependency to work with Kotlin and JUnit.",
- "markdown": "Reports usage of `kotlin-test` and `junit` dependency without `kotlin-test-junit`.\n\nIt is recommended to use `kotlin-test-junit` dependency to work with Kotlin and JUnit."
+ "text": "Reports safe cast with 'return' that can be replaced with 'if' type check. Using corresponding functions makes your code simpler. The quick-fix replaces the safe cast with 'if' type check. Example: 'fun test(x: Any) {\n x as? String ?: return\n }' After the quick-fix is applied: 'fun test(x: Any) {\n if (x !is String) return\n }'",
+ "markdown": "Reports safe cast with `return` that can be replaced with `if` type check.\n\nUsing corresponding functions makes your code simpler.\n\nThe quick-fix replaces the safe cast with `if` type check.\n\n**Example:**\n\n\n fun test(x: Any) {\n x as? String ?: return\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(x: Any) {\n if (x !is String) return\n }\n"
},
"defaultConfiguration": {
- "enabled": true,
- "level": "warning",
+ "enabled": false,
+ "level": "note",
"parameters": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "WEAK WARNING",
"tags": [
"ideaSeverity"
]
@@ -33425,8 +33659,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin",
- "index": 2,
+ "id": "Kotlin/Style issues",
+ "index": 3,
"toolComponent": {
"name": "QDJVM"
}
@@ -33438,13 +33672,13 @@
]
},
{
- "id": "SafeCastWithReturn",
+ "id": "ReplaceAssertBooleanWithAssertEquality",
"shortDescription": {
- "text": "Safe cast with 'return' should be replaced with 'if' type check"
+ "text": "Assert boolean could be replaced with assert equality"
},
"fullDescription": {
- "text": "Reports safe cast with 'return' that can be replaced with 'if' type check. Using corresponding functions makes your code simpler. The quick-fix replaces the safe cast with 'if' type check. Example: 'fun test(x: Any) {\n x as? String ?: return\n }' After the quick-fix is applied: 'fun test(x: Any) {\n if (x !is String) return\n }'",
- "markdown": "Reports safe cast with `return` that can be replaced with `if` type check.\n\nUsing corresponding functions makes your code simpler.\n\nThe quick-fix replaces the safe cast with `if` type check.\n\n**Example:**\n\n\n fun test(x: Any) {\n x as? String ?: return\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(x: Any) {\n if (x !is String) return\n }\n"
+ "text": "Reports calls to 'assertTrue()' and 'assertFalse()' that can be replaced with assert equality functions. 'assertEquals()', 'assertSame()', and their negating counterparts (-Not-) provide more informative messages on failure. Example: 'assertTrue(a == b)' After the quick-fix is applied: 'assertEquals(a, b)'",
+ "markdown": "Reports calls to `assertTrue()` and `assertFalse()` that can be replaced with assert equality functions.\n\n\n`assertEquals()`, `assertSame()`, and their negating counterparts (-Not-) provide more informative messages on\nfailure.\n\n**Example:**\n\n assertTrue(a == b)\n\nAfter the quick-fix is applied:\n\n assertEquals(a, b)\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -33472,13 +33706,13 @@
]
},
{
- "id": "ReplaceAssertBooleanWithAssertEquality",
+ "id": "UnnecessaryOptInAnnotation",
"shortDescription": {
- "text": "Assert boolean could be replaced with assert equality"
+ "text": "Unnecessary '@OptIn' annotation"
},
"fullDescription": {
- "text": "Reports calls to 'assertTrue()' and 'assertFalse()' that can be replaced with assert equality functions. 'assertEquals()', 'assertSame()', and their negating counterparts (-Not-) provide more informative messages on failure. Example: 'assertTrue(a == b)' After the quick-fix is applied: 'assertEquals(a, b)'",
- "markdown": "Reports calls to `assertTrue()` and `assertFalse()` that can be replaced with assert equality functions.\n\n\n`assertEquals()`, `assertSame()`, and their negating counterparts (-Not-) provide more informative messages on\nfailure.\n\n**Example:**\n\n assertTrue(a == b)\n\nAfter the quick-fix is applied:\n\n assertEquals(a, b)\n"
+ "text": "Reports unnecessary opt-in annotations that can be safely removed. '@OptIn' annotation is required for the code using experimental APIs that can change any time in the future. This annotation becomes useless and possibly misleading if no such API is used (e.g., when the experimental API becomes stable and does not require opting in its usage anymore). Remove annotation quick-fix can be used to remove the unnecessary '@OptIn' annotation. Example: '@OptIn(ExperimentalApi::class)\n fun foo(x: Bar) {\n x.baz()\n }' After the quick-fix is applied: 'fun foo(x: Bar) {\n x.baz()\n }'",
+ "markdown": "Reports unnecessary opt-in annotations that can be safely removed.\n\n`@OptIn` annotation is required for the code using experimental APIs that can change\nany time in the future. This annotation becomes useless and possibly misleading if no such API is used\n(e.g., when the experimental API becomes stable and does not require opting in its usage anymore).\n\n\n**Remove annotation** quick-fix can be used to remove the unnecessary `@OptIn` annotation.\n\nExample:\n\n\n @OptIn(ExperimentalApi::class)\n fun foo(x: Bar) {\n x.baz()\n }\n\nAfter the quick-fix is applied:\n\n\n fun foo(x: Bar) {\n x.baz()\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -33493,8 +33727,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin/Style issues",
- "index": 3,
+ "id": "Kotlin/Redundant constructs",
+ "index": 4,
"toolComponent": {
"name": "QDJVM"
}
@@ -33506,19 +33740,19 @@
]
},
{
- "id": "ReplaceStringFormatWithLiteral",
+ "id": "ReplaceNotNullAssertionWithElvisReturn",
"shortDescription": {
- "text": "'String.format' call can be replaced with string templates"
+ "text": "Not-null assertion can be replaced with 'return'"
},
"fullDescription": {
- "text": "Reports 'String.format' calls that can be replaced with string templates. Using string templates makes your code simpler. The quick-fix replaces the call with a string template. Example: 'fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = String.format(\"%s_%s_%s\", id, date, id)\n }' After the quick-fix is applied: 'fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = \"${id}_${date}_$id\"\n }'",
- "markdown": "Reports `String.format` calls that can be replaced with string templates.\n\nUsing string templates makes your code simpler.\n\nThe quick-fix replaces the call with a string template.\n\n**Example:**\n\n\n fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = String.format(\"%s_%s_%s\", id, date, id)\n }\n\nAfter the quick-fix is applied:\n\n\n fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = \"${id}_${date}_$id\"\n }\n"
+ "text": "Reports not-null assertion ('!!') calls that can be replaced with the elvis operator and return ('?: return'). A not-null assertion can lead to NPE (NullPointerException) that is not expected. Avoiding the use of '!!' is good practice. The quick-fix replaces the not-null assertion with 'return' or 'return null'. Example: 'fun test(number: Int?) {\n val x = number!!\n }' After the quick-fix is applied: 'fun test(number: Int?) {\n val x = number ?: return\n }'",
+ "markdown": "Reports not-null assertion (`!!`) calls that can be replaced with the elvis operator and return (`?: return`).\n\nA not-null assertion can lead to NPE (NullPointerException) that is not expected. Avoiding the use of `!!` is good practice.\n\nThe quick-fix replaces the not-null assertion with `return` or `return null`.\n\n**Example:**\n\n\n fun test(number: Int?) {\n val x = number!!\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(number: Int?) {\n val x = number ?: return\n }\n"
},
"defaultConfiguration": {
"enabled": false,
"level": "note",
"parameters": {
- "ideaSeverity": "INFORMATION",
+ "ideaSeverity": "WEAK WARNING",
"tags": [
"ideaSeverity"
]
@@ -33540,19 +33774,19 @@
]
},
{
- "id": "ReplaceNotNullAssertionWithElvisReturn",
+ "id": "ReplaceStringFormatWithLiteral",
"shortDescription": {
- "text": "Not-null assertion can be replaced with 'return'"
+ "text": "'String.format' call can be replaced with string templates"
},
"fullDescription": {
- "text": "Reports not-null assertion ('!!') calls that can be replaced with the elvis operator and return ('?: return'). A not-null assertion can lead to NPE (NullPointerException) that is not expected. Avoiding the use of '!!' is good practice. The quick-fix replaces the not-null assertion with 'return' or 'return null'. Example: 'fun test(number: Int?) {\n val x = number!!\n }' After the quick-fix is applied: 'fun test(number: Int?) {\n val x = number ?: return\n }'",
- "markdown": "Reports not-null assertion (`!!`) calls that can be replaced with the elvis operator and return (`?: return`).\n\nA not-null assertion can lead to NPE (NullPointerException) that is not expected. Avoiding the use of `!!` is good practice.\n\nThe quick-fix replaces the not-null assertion with `return` or `return null`.\n\n**Example:**\n\n\n fun test(number: Int?) {\n val x = number!!\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(number: Int?) {\n val x = number ?: return\n }\n"
+ "text": "Reports 'String.format' calls that can be replaced with string templates. Using string templates makes your code simpler. The quick-fix replaces the call with a string template. Example: 'fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = String.format(\"%s_%s_%s\", id, date, id)\n }' After the quick-fix is applied: 'fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = \"${id}_${date}_$id\"\n }'",
+ "markdown": "Reports `String.format` calls that can be replaced with string templates.\n\nUsing string templates makes your code simpler.\n\nThe quick-fix replaces the call with a string template.\n\n**Example:**\n\n\n fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = String.format(\"%s_%s_%s\", id, date, id)\n }\n\nAfter the quick-fix is applied:\n\n\n fun main() {\n val id = \"abc\"\n val date = \"123\"\n val s = \"${id}_${date}_$id\"\n }\n"
},
"defaultConfiguration": {
"enabled": false,
"level": "note",
"parameters": {
- "ideaSeverity": "WEAK WARNING",
+ "ideaSeverity": "INFORMATION",
"tags": [
"ideaSeverity"
]
@@ -33778,6 +34012,40 @@
]
},
{
+ "id": "CastDueToProgressionResolutionChangeMigration",
+ "shortDescription": {
+ "text": "Progression resolution change since 1.9"
+ },
+ "fullDescription": {
+ "text": "Reports overloaded function calls where an argument requires an explicit cast to resolve to a proper declaration. The current compiler warning (available since Kotlin 1.6.20) will become an error in Kotlin 1.8. Progressions and ranges types ('kotlin.ranges') will start implementing the 'Collection' interface in Kotlin 1.9 and later. This update will cause a change in resolution for overloaded functions. For instance, in the example below, the 'test(1..5)' call will be resolved to 'test(t: Any)' in Kotlin 1.8 and earlier and to 'test(t: Collection<*>)' in Kotlin 1.9 and later. 'fun test(t: Any) { }\n fun test(t: Collection<*>) { }\n fun invoke() {\n test(1..5) // IntRange becomes Collection in 1.9\n }' The provided quick-fix captures the behaviour specific to the compiler of version 1.8 and earlier: 'fun test(t: Any) { }\n fun test(t: Collection<*>) { }\n\n fun invoke() {\n test(1..5) // resolved to 'test(t: T)' before Kotlin 1.9\n }' After the quick-fix is applied: 'fun test(t: Any) { }\n fun test(t: Collection<*>) { }\n\n fun invoke() {\n test((1..5) as Iterable<Int>) // resolved to 'test(t: T)' in Kotlin 1.9\n }' Inspection is available for the Kotlin language level starting from 1.6.",
+ "markdown": "Reports overloaded function calls where an argument requires an explicit cast to resolve to a proper declaration.\nThe current compiler warning (available since Kotlin 1.6.20) will become an error in Kotlin 1.8.\n\n\nProgressions and ranges types (`kotlin.ranges`) will start implementing the `Collection` interface in Kotlin\n1.9 and later. This update will cause a change in resolution for overloaded functions. For instance, in the example below, the\n`test(1..5)` call will be resolved to `test(t: Any)` in Kotlin 1.8 and earlier and to\n`test(t: Collection<*>)` in Kotlin 1.9 and later.\n\n\n fun test(t: Any) { }\n fun test(t: Collection<*>) { }\n fun invoke() {\n test(1..5) // IntRange becomes Collection in 1.9\n }\n\nThe provided quick-fix captures the behaviour specific to the compiler of version 1.8 and earlier:\n\n\n fun test(t: Any) { }\n fun test(t: Collection<*>) { }\n\n fun invoke() {\n test(1..5) // resolved to 'test(t: T)' before Kotlin 1.9\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(t: Any) { }\n fun test(t: Collection<*>) { }\n\n fun invoke() {\n test((1..5) as Iterable<Int>) // resolved to 'test(t: T)' in Kotlin 1.9\n }\n\nInspection is available for the Kotlin language level starting from 1.6."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "ConvertReferenceToLambda",
"shortDescription": {
"text": "Can be replaced with lambda"
@@ -33846,13 +34114,47 @@
]
},
{
+ "id": "AddConversionCallMigration",
+ "shortDescription": {
+ "text": "Explicit conversion from `Int` needed since 1.9"
+ },
+ "fullDescription": {
+ "text": "Reports expressions that will be of type 'Int', thus causing compilation errors in Kotlin 1.9 and later. Example: 'fun takeByte(x: Byte) {}\n\n fun foo() {\n takeByte(1 + 1) // will be resolved to Int in 1.9\n }' After the quick-fix is applied: 'fun takeByte(x: Byte) {}\n\n fun foo() {\n takeByte((1 + 1).toByte()) // will be resolved to Int in 1.9\n }' Inspection is available for Kotlin language level starting from 1.7.",
+ "markdown": "Reports expressions that will be of type `Int`, thus causing compilation errors in Kotlin 1.9 and later.\n\nExample:\n\n\n fun takeByte(x: Byte) {}\n\n fun foo() {\n takeByte(1 + 1) // will be resolved to Int in 1.9\n }\n\nAfter the quick-fix is applied:\n\n\n fun takeByte(x: Byte) {}\n\n fun foo() {\n takeByte((1 + 1).toByte()) // will be resolved to Int in 1.9\n }\n\nInspection is available for Kotlin language level starting from 1.7."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "LateinitVarOverridesLateinitVar",
"shortDescription": {
- "text": "lateinit var property overrides lateinit var property"
+ "text": "'lateinit var' property overrides 'lateinit var' property"
},
"fullDescription": {
- "text": "Reports 'lateinit var' properties that override another 'lateinit var' property. A subclass instance will have two fields for the single property, and the one from the superclass will remain effectively unused. Example: open class BaseClass { open lateinit var name: String } class RealClass : BaseClass() { override lateinit var name: String } ''",
- "markdown": "Reports `lateinit var` properties that override another `lateinit var` property.\n\n\nA subclass instance will have two fields for the single property, and the one from the superclass will remain effectively unused.\n\n**Example:**\nopen class BaseClass { open lateinit var name: String } class RealClass : BaseClass() { override lateinit var name: String }\n\n```\n\n```"
+ "text": "Reports 'lateinit var' properties that override other 'lateinit var' properties. A subclass instance will have two fields for a single property, and the one from the superclass will remain effectively unused. Example: 'open class BaseClass {\n open lateinit var name: String\n }\n\n class RealClass : BaseClass() {\n override lateinit var name: String\n }'",
+ "markdown": "Reports `lateinit var` properties that override other `lateinit var` properties.\n\nA subclass instance will have two fields for a single property, and the one from the superclass will remain effectively unused.\n\n**Example:**\n\n\n open class BaseClass {\n open lateinit var name: String\n }\n\n class RealClass : BaseClass() {\n override lateinit var name: String\n }\n"
},
"defaultConfiguration": {
"enabled": true,
@@ -33880,19 +34182,19 @@
]
},
{
- "id": "DifferentKotlinGradleVersion",
+ "id": "VerboseNullabilityAndEmptiness",
"shortDescription": {
- "text": "Kotlin Gradle and IDE plugins versions are different"
+ "text": "Verbose nullability and emptiness check"
},
"fullDescription": {
- "text": "Reports that different IDE and Gradle plugin versions are used. This can cause inconsistencies between IDE and Gradle builds in error reporting or code behavior. Example: 'dependencies {\n classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:0.0.1\"\n }' To fix the problem change the kotlin gradle plugin version to match the version of kotlin that is bundled into the IDE plugin.",
- "markdown": "Reports that different IDE and Gradle plugin versions are used.\n\nThis can cause inconsistencies between IDE and Gradle builds in error reporting or code behavior.\n\n**Example:**\n\n\n dependencies {\n classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:0.0.1\"\n }\n\nTo fix the problem change the kotlin gradle plugin version to match the version of kotlin that is bundled into the IDE plugin."
+ "text": "Reports combination of 'null' and emptiness checks that can be simplified into a single check. The quick-fix replaces highlighted checks with a combined check call, such as 'isNullOrEmpty()'. Example: 'fun test(list: List<Int>?) {\n if (list == null || list.isEmpty()) {\n println(\"List is empty!\")\n } else {\n println(list.joinToString())\n }\n }' After the quick-fix is applied: 'fun test(list: List<Int>?) {\n if (list.isNullOrEmpty()) {\n println(\"List is empty!\")\n } else {\n println(list.joinToString())\n }\n }'",
+ "markdown": "Reports combination of `null` and emptiness checks that can be simplified into a single check.\n\nThe quick-fix replaces highlighted checks with a combined check call, such as `isNullOrEmpty()`.\n\n**Example:**\n\n\n fun test(list: List<Int>?) {\n if (list == null || list.isEmpty()) {\n println(\"List is empty!\")\n } else {\n println(list.joinToString())\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun test(list: List<Int>?) {\n if (list.isNullOrEmpty()) {\n println(\"List is empty!\")\n } else {\n println(list.joinToString())\n }\n }\n"
},
"defaultConfiguration": {
- "enabled": true,
- "level": "warning",
+ "enabled": false,
+ "level": "note",
"parameters": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "WEAK WARNING",
"tags": [
"ideaSeverity"
]
@@ -33901,8 +34203,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin",
- "index": 2,
+ "id": "Kotlin/Style issues",
+ "index": 3,
"toolComponent": {
"name": "QDJVM"
}
@@ -33914,13 +34216,13 @@
]
},
{
- "id": "KotlinEqualsBetweenInconvertibleTypes",
+ "id": "DifferentKotlinGradleVersion",
"shortDescription": {
- "text": "'equals()' between objects of inconvertible types"
+ "text": "Kotlin Gradle and IDE plugins versions are different"
},
"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 that Gradle plugin version isn't properly supported in the current IDE plugin. This can cause inconsistencies between IDE and Gradle builds in error reporting or code behavior. Example: 'dependencies {\n classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:0.0.1\"\n }' To fix the problem change the kotlin gradle plugin version to match the version of kotlin that is bundled into the IDE plugin.",
+ "markdown": "Reports that Gradle plugin version isn't properly supported in the current IDE plugin.\n\nThis can cause inconsistencies between IDE and Gradle builds in error reporting or code behavior.\n\n**Example:**\n\n\n dependencies {\n classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:0.0.1\"\n }\n\nTo fix the problem change the kotlin gradle plugin version to match the version of kotlin that is bundled into the IDE plugin."
},
"defaultConfiguration": {
"enabled": true,
@@ -33935,8 +34237,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin/Probable bugs",
- "index": 24,
+ "id": "Kotlin",
+ "index": 2,
"toolComponent": {
"name": "QDJVM"
}
@@ -33982,6 +34284,40 @@
]
},
{
+ "id": "KotlinEqualsBetweenInconvertibleTypes",
+ "shortDescription": {
+ "text": "'equals()' between objects of inconvertible types"
+ },
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Probable bugs",
+ "index": 24,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "HasPlatformType",
"shortDescription": {
"text": "Function or property has platform type"
@@ -34004,7 +34340,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -34106,7 +34442,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -34140,7 +34476,7 @@
{
"target": {
"id": "Kotlin/Migration/Maven",
- "index": 119,
+ "index": 117,
"toolComponent": {
"name": "QDJVM"
}
@@ -34186,19 +34522,19 @@
]
},
{
- "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",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -34207,8 +34543,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin/Redundant constructs",
- "index": 4,
+ "id": "Kotlin",
+ "index": 2,
"toolComponent": {
"name": "QDJVM"
}
@@ -34220,19 +34556,19 @@
]
},
{
- "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",
+ "ideaSeverity": "WEAK WARNING",
"tags": [
"ideaSeverity"
]
@@ -34241,8 +34577,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin",
- "index": 2,
+ "id": "Kotlin/Redundant constructs",
+ "index": 4,
"toolComponent": {
"name": "QDJVM"
}
@@ -34310,7 +34646,7 @@
{
"target": {
"id": "Kotlin/Migration/Gradle",
- "index": 127,
+ "index": 125,
"toolComponent": {
"name": "QDJVM"
}
@@ -34358,7 +34694,7 @@
{
"id": "WarningOnMainUnusedParameterMigration",
"shortDescription": {
- "text": "Unused `args` on `main` since 1.4"
+ "text": "Unused 'args' on 'main' since 1.4"
},
"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.",
@@ -34378,7 +34714,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -34412,7 +34748,41 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KotlinRedundantDiagnosticSuppress",
+ "shortDescription": {
+ "text": "Redundant diagnostic suppression"
+ },
+ "fullDescription": {
+ "text": "Reports usages of '@Suppress' annotations that can be safely removed because the compiler diagnostic they affect is no longer applicable in this context. Example: 'fun doSmth(@Suppress(\"UNUSED_PARAMETER\") used: Int) {\n println(used)\n }' After the quick-fix is applied: 'fun doSmth(used: Int) {\n println(used)\n }'",
+ "markdown": "Reports usages of `@Suppress` annotations that can be safely removed because the compiler diagnostic they affect is no longer applicable in this context.\n\n**Example:**\n\n\n fun doSmth(@Suppress(\"UNUSED_PARAMETER\") used: Int) {\n println(used)\n }\n\nAfter the quick-fix is applied:\n\n\n fun doSmth(used: Int) {\n println(used)\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Redundant constructs",
+ "index": 4,
"toolComponent": {
"name": "QDJVM"
}
@@ -34582,7 +34952,41 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NoConstructorMigration",
+ "shortDescription": {
+ "text": "Forbidden constructor call"
+ },
+ "fullDescription": {
+ "text": "Reports a constructor calls on functional supertypes that will lead to compilation error since 1.9. Motivation types: The implementation does not abide by a published spec or documentation More details: KT-46344: No error for a super class constructor call on a function interface in supertypes list The quick-fix removes a constructor call. Example: 'abstract class A : () -> Int()' After the quick-fix is applied: 'abstract class A : () -> Int' This inspection only reports if the Kotlin language level of the project or module is 1.7 or higher.",
+ "markdown": "Reports a constructor calls on functional supertypes that will lead to compilation error since 1.9.\n\nMotivation types:\n\n* The implementation does not abide by a published spec or documentation\n\n**More details:** [KT-46344: No error for a super class constructor call on a function interface in supertypes list](https://youtrack.jetbrains.com/issue/KT-46344)\n\nThe quick-fix removes a constructor call.\n\n**Example:**\n\n\n abstract class A : () -> Int()\n\nAfter the quick-fix is applied:\n\n\n abstract class A : () -> Int\n\nThis inspection only reports if the Kotlin language level of the project or module is 1.7 or higher."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "ideaSeverity": "ERROR",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -34970,7 +35374,7 @@
{
"id": "InconsistentCommentForJavaParameter",
"shortDescription": {
- "text": "Inconsistent comment for java parameter"
+ "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 }'",
@@ -34990,7 +35394,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -35092,7 +35496,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -35344,7 +35748,7 @@
{
"id": "FunctionWithLambdaExpressionBody",
"shortDescription": {
- "text": "Function with `= { ... }` and inferred return type"
+ "text": "Function with '= { ... }' and inferred return type"
},
"fullDescription": {
"text": "Reports functions with '= { ... }' and inferred return type. Example: 'fun sum(a: Int, b: Int) = { a + b } // The return type of this function is '() -> Int'.' The quick fix removes braces: 'fun sum(a: Int, b: Int) = a + b'",
@@ -35466,7 +35870,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -35614,40 +36018,6 @@
]
},
{
- "id": "OverridingDeprecatedMember",
- "shortDescription": {
- "text": "Overriding deprecated member"
- },
- "fullDescription": {
- "text": "Reports declarations that inherit from deprecated members. Example: 'open class BaseService {\n @Deprecated(\"obsolete\", replaceWith = ReplaceWith(\"connection\"))\n open fun connect() {}\n\n open fun connection() {}\n} \n\nclass SomeService: BaseService() {\n override fun connect() {\n super.connect()\n }\n}'",
- "markdown": "Reports declarations that inherit from deprecated members.\n\n**Example:**\n\n\n open class BaseService {\n @Deprecated(\"obsolete\", replaceWith = ReplaceWith(\"connection\"))\n open fun connect() {}\n\n open fun connection() {}\n } \n\n class SomeService: BaseService() {\n override fun connect() {\n super.connect()\n }\n }\n"
- },
- "defaultConfiguration": {
- "enabled": true,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Kotlin/Other problems",
- "index": 148,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
"id": "ProhibitTypeParametersForLocalVariablesMigration",
"shortDescription": {
"text": "Local variable with type parameters"
@@ -35670,7 +36040,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -35704,7 +36074,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -35806,7 +36176,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -36010,7 +36380,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -36027,8 +36397,8 @@
"text": "Maven and IDE plugins versions are different"
},
"fullDescription": {
- "text": "Reports the Maven plugin version of the Kotlin compiler that is different from the one that is used in the IDE plugin. This inconsistency may lead to different error reporting behavior in the IDE and the compiler",
- "markdown": "Reports the Maven plugin version of the Kotlin compiler that is different from the one that is used in the IDE plugin.\n\nThis inconsistency may lead to different error reporting behavior in the IDE and the compiler"
+ "text": "Reports that Maven plugin version isn't properly supported in the current IDE plugin. This inconsistency may lead to different error reporting behavior in the IDE and the compiler",
+ "markdown": "Reports that Maven plugin version isn't properly supported in the current IDE plugin.\n\nThis inconsistency may lead to different error reporting behavior in the IDE and the compiler"
},
"defaultConfiguration": {
"enabled": true,
@@ -36328,6 +36698,40 @@
]
},
{
+ "id": "InlineClassDeprecatedMigration",
+ "shortDescription": {
+ "text": "Inline classes are deprecated since 1.5"
+ },
+ "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."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "PropertyName",
"shortDescription": {
"text": "Property naming convention"
@@ -36350,7 +36754,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -36588,7 +36992,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -36860,7 +37264,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -36874,7 +37278,7 @@
{
"id": "ComplexRedundantLet",
"shortDescription": {
- "text": "Redundant argument-based `let` call"
+ "text": "Redundant argument-based 'let' call"
},
"fullDescription": {
"text": "Reports a redundant argument-based 'let' call. 'let' is redundant when the lambda parameter is only used as a qualifier in a call expression. If you need to give a name to the qualifying expression, declare a local variable. Example: 'fun splitNumbers() {\n \"1,2,3\".let { it.split(',') }\n }' A quick-fix removes the extra 'let()' call: 'fun example() {\n \"1,2,3\".split(',')\n }' Alternative: 'fun splitNumbers() {\n val numbers = \"1,2,3\"\n numbers.split(',')\n }'",
@@ -36962,7 +37366,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -37350,7 +37754,7 @@
{
"id": "MoveVariableDeclarationIntoWhen",
"shortDescription": {
- "text": "Variable declaration could be moved inside `when`"
+ "text": "Variable declaration could be moved inside 'when'"
},
"fullDescription": {
"text": "Reports variable declarations that can be moved inside a 'when' expression. Example: 'fun someCalc(x: Int) = x * 42\n\nfun foo(x: Int): Int {\n val a = someCalc(x)\n return when (a) {\n 1 -> a\n 2 -> 2 * a\n else -> 24\n }\n}' After the quick-fix is applied: 'fun foo(x: Int): Int {\n return when (val a = someCalc(x)) {\n 1 -> a\n 2 -> 2 * a\n else -> 24\n }\n}'",
@@ -37574,7 +37978,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -37676,7 +38080,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -37812,7 +38216,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -38050,7 +38454,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -38186,7 +38590,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -38436,13 +38840,47 @@
]
},
{
+ "id": "OverrideDeprecatedMigration",
+ "shortDescription": {
+ "text": "Do not propagate method deprecation through overrides since 1.9"
+ },
+ "fullDescription": {
+ "text": "Reports a declarations that are propagated by '@Deprecated' annotation that will lead to compilation error since 1.9. Motivation types: Implementation changes are required for implementation design/architectural reasons Inconsistency in the design (things are done differently in different contexts) More details: KT-47902: Do not propagate method deprecation through overrides The quick-fix copies '@Deprecated' annotation from the parent declaration. Example: 'open class Base {\n @Deprecated(\"Don't use\")\n open fun foo() {}\n }\n\n class Derived : Base() {\n override fun foo() {}\n }' After the quick-fix is applied: 'open class Base {\n @Deprecated(\"Don't use\")\n open fun foo() {}\n }\n\n class Derived : Base() {\n @Deprecated(\"Don't use\")\n override fun foo() {}\n }' This inspection only reports if the Kotlin language level of the project or module is 1.6 or higher.",
+ "markdown": "Reports a declarations that are propagated by `@Deprecated` annotation that will lead to compilation error since 1.9.\n\nMotivation types:\n\n* Implementation changes are required for implementation design/architectural reasons\n* Inconsistency in the design (things are done differently in different contexts)\n\n**More details:** [KT-47902: Do not propagate method deprecation through overrides](https://youtrack.jetbrains.com/issue/KT-47902)\n\nThe quick-fix copies `@Deprecated` annotation from the parent declaration.\n\n**Example:**\n\n\n open class Base {\n @Deprecated(\"Don't use\")\n open fun foo() {}\n }\n\n class Derived : Base() {\n override fun foo() {}\n }\n\nAfter the quick-fix is applied:\n\n\n open class Base {\n @Deprecated(\"Don't use\")\n open fun foo() {}\n }\n\n class Derived : Base() {\n @Deprecated(\"Don't use\")\n override fun foo() {}\n }\n\nThis inspection only reports if the Kotlin language level of the project or module is 1.6 or higher."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "ideaSeverity": "ERROR",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Migration",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "RedundantModalityModifier",
"shortDescription": {
"text": "Redundant modality modifier"
},
"fullDescription": {
- "text": "Reports the modality modifiers that match the default modality of an element ('final' for most elements, 'open' for members with an 'override'). Example: 'final class Foo\n\n open class Bar : Comparable<Bar> {\n open override fun compareTo(other: Bar): Int = 0\n }' After the quick-fix is applied: 'class Foo\n\n open class Bar : Comparable<Bar> {\n open override fun compareTo(other: Bar): Int = 0\n }'",
- "markdown": "Reports the modality modifiers that match the default modality of an element (`final` for most elements, `open` for members with an `override`).\n\n**Example:**\n\n\n final class Foo\n\n open class Bar : Comparable<Bar> {\n open override fun compareTo(other: Bar): Int = 0\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo\n\n open class Bar : Comparable<Bar> {\n open override fun compareTo(other: Bar): Int = 0\n }\n"
+ "text": "Reports the modality modifiers that match the default modality of an element ('final' for most elements, 'open' for members with an 'override'). Example: 'final class Foo\n\n open class Bar : Comparable<Bar> {\n open override fun compareTo(other: Bar): Int = 0\n }' After the quick-fix is applied: 'class Foo\n\n open class Bar : Comparable<Bar> {\n override fun compareTo(other: Bar): Int = 0\n }'",
+ "markdown": "Reports the modality modifiers that match the default modality of an element (`final` for most elements, `open` for members with an `override`).\n\n**Example:**\n\n\n final class Foo\n\n open class Bar : Comparable<Bar> {\n open override fun compareTo(other: Bar): Int = 0\n }\n\nAfter the quick-fix is applied:\n\n\n class Foo\n\n open class Bar : Comparable<Bar> {\n override fun compareTo(other: Bar): Int = 0\n }\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -38538,6 +38976,40 @@
]
},
{
+ "id": "KotlinPlaceholderCountMatchesArgumentCount",
+ "shortDescription": {
+ "text": "Number of placeholders does not match number of arguments in logging call"
+ },
+ "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."
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Logging",
+ "index": 157,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "ReplaceManualRangeWithIndicesCalls",
"shortDescription": {
"text": "Range can be converted to indices or iteration"
@@ -38594,7 +39066,7 @@
{
"target": {
"id": "Kotlin/Logging",
- "index": 158,
+ "index": 157,
"toolComponent": {
"name": "QDJVM"
}
@@ -38606,13 +39078,13 @@
]
},
{
- "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,
@@ -38627,8 +39099,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin/Style issues",
- "index": 3,
+ "id": "Kotlin/Redundant constructs",
+ "index": 4,
"toolComponent": {
"name": "QDJVM"
}
@@ -38640,13 +39112,13 @@
]
},
{
- "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,
@@ -38661,8 +39133,8 @@
"relationships": [
{
"target": {
- "id": "Kotlin/Redundant constructs",
- "index": 4,
+ "id": "Kotlin/Style issues",
+ "index": 3,
"toolComponent": {
"name": "QDJVM"
}
@@ -38880,7 +39352,7 @@
{
"id": "ImplicitNullableNothingType",
"shortDescription": {
- "text": "Implicit `Nothing?` type"
+ "text": "Implicit 'Nothing?' type"
},
"fullDescription": {
"text": "Reports variables and functions with the implicit Nothing? type. Example: 'fun foo() = null' The quick fix specifies the return type explicitly: 'fun foo(): Nothing? = null'",
@@ -38968,7 +39440,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -39308,7 +39780,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -39444,7 +39916,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -39682,7 +40154,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -39716,7 +40188,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -39750,7 +40222,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -39818,7 +40290,7 @@
{
"target": {
"id": "Kotlin/Java interop issues",
- "index": 54,
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -39886,7 +40358,41 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KotlinJvmAnnotationInJava",
+ "shortDescription": {
+ "text": "Kotlin JVM annotation in Java"
+ },
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kotlin/Java interop issues",
+ "index": 55,
"toolComponent": {
"name": "QDJVM"
}
@@ -39920,7 +40426,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -40124,7 +40630,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -40158,7 +40664,7 @@
{
"target": {
"id": "Kotlin/Other problems",
- "index": 148,
+ "index": 152,
"toolComponent": {
"name": "QDJVM"
}
@@ -40240,11 +40746,11 @@
{
"id": "MainFunctionReturnUnit",
"shortDescription": {
- "text": "Entry point function should return Unit"
+ "text": "Main function should return 'Unit'"
},
"fullDescription": {
- "text": "Reports entry point functions with an incorrect return type (should be 'Unit'). Example: 'fun main() = \"Hello world!\"'",
- "markdown": "Reports entry point functions with an incorrect return type (should be `Unit`).\n\n**Example:**\n`fun main() = \"Hello world!\"`"
+ "text": "Reports when a main function does not have a return type of 'Unit'. Example: 'fun main() = \"Hello world!\"'",
+ "markdown": "Reports when a main function does not have a return type of `Unit`.\n\n**Example:**\n`fun main() = \"Hello world!\"`"
},
"defaultConfiguration": {
"enabled": true,
@@ -40396,7 +40902,7 @@
{
"target": {
"id": "Kotlin/Migration",
- "index": 118,
+ "index": 15,
"toolComponent": {
"name": "QDJVM"
}
@@ -40634,7 +41140,7 @@
{
"target": {
"id": "Kotlin/Naming conventions",
- "index": 47,
+ "index": 48,
"toolComponent": {
"name": "QDJVM"
}
@@ -40757,7 +41263,7 @@
},
{
"name": "com.intellij.spring",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "SpringBeanConstructorArgInspection",
@@ -40884,7 +41390,7 @@
{
"target": {
"id": "Spring/Spring Core/Setup",
- "index": 66,
+ "index": 67,
"toolComponent": {
"name": "QDJVM"
}
@@ -41224,7 +41730,7 @@
{
"target": {
"id": "Spring/Spring AOP",
- "index": 100,
+ "index": 99,
"toolComponent": {
"name": "QDJVM"
}
@@ -41496,7 +42002,7 @@
{
"target": {
"id": "Spring/Spring Core/Setup",
- "index": 66,
+ "index": 67,
"toolComponent": {
"name": "QDJVM"
}
@@ -41632,7 +42138,7 @@
{
"target": {
"id": "Spring/Spring Core/Setup",
- "index": 66,
+ "index": 67,
"toolComponent": {
"name": "QDJVM"
}
@@ -41700,7 +42206,7 @@
{
"target": {
"id": "Spring/Spring AOP",
- "index": 100,
+ "index": 99,
"toolComponent": {
"name": "QDJVM"
}
@@ -42040,7 +42546,7 @@
{
"target": {
"id": "Spring/Spring AOP",
- "index": 100,
+ "index": 99,
"toolComponent": {
"name": "QDJVM"
}
@@ -42278,7 +42784,7 @@
{
"target": {
"id": "Spring/Spring AOP",
- "index": 100,
+ "index": 99,
"toolComponent": {
"name": "QDJVM"
}
@@ -42312,7 +42818,7 @@
{
"target": {
"id": "Spring/Spring AOP",
- "index": 100,
+ "index": 99,
"toolComponent": {
"name": "QDJVM"
}
@@ -42842,292 +43348,8 @@
"isComprehensive": false
},
{
- "name": "com.intellij.spring.boot",
- "version": "213.7162",
- "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",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Cloud",
- "index": 16,
- "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",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Cloud Stream",
- "index": 141,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "SpringBootApplicationSetup",
- "shortDescription": {
- "text": "Invalid Spring Boot application setup"
- },
- "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"
- },
- "defaultConfiguration": {
- "enabled": true,
- "level": "error",
- "parameters": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Boot",
- "index": 142,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "SpringBootAdditionalConfig",
- "shortDescription": {
- "text": "Invalid additional-spring-configuration-metadata.json"
- },
- "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"
- },
- "defaultConfiguration": {
- "enabled": true,
- "level": "error",
- "parameters": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Boot",
- "index": 142,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "SpringBootReactorHooksOnDebug",
- "shortDescription": {
- "text": "Suspicious Hooks.onOperatorDebug() usage"
- },
- "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."
- },
- "defaultConfiguration": {
- "enabled": true,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Boot",
- "index": 142,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "ConfigurationProperties",
- "shortDescription": {
- "text": "Invalid @ConfigurationProperties"
- },
- "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"
- },
- "defaultConfiguration": {
- "enabled": true,
- "level": "error",
- "parameters": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Boot",
- "index": 142,
- "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"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Boot",
- "index": 142,
- "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",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Spring/Spring Cloud Stream",
- "index": 141,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- }
- ],
- "language": "en-US",
- "contents": [
- "localizedData",
- "nonLocalizedData"
- ],
- "isComprehensive": false
- },
- {
"name": "org.intellij.groovy",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "GroovyListSetCanBeKeyedAccess",
@@ -43220,7 +43442,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -43288,7 +43510,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -43322,7 +43544,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -43356,7 +43578,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -43424,7 +43646,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -43458,7 +43680,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -43492,7 +43714,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -43526,7 +43748,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -43560,7 +43782,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -43594,7 +43816,7 @@
{
"target": {
"id": "Groovy/Annotations",
- "index": 84,
+ "index": 83,
"toolComponent": {
"name": "QDJVM"
}
@@ -43628,7 +43850,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -43662,7 +43884,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -43696,7 +43918,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -43764,7 +43986,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -43798,7 +44020,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -43832,7 +44054,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -43866,7 +44088,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -43900,7 +44122,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -43934,7 +44156,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -43968,7 +44190,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44036,7 +44258,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44070,7 +44292,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -44138,7 +44360,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44150,13 +44372,13 @@
]
},
{
- "id": "GrReassignedInClosureLocalVar",
+ "id": "GroovyMethodParameterCount",
"shortDescription": {
- "text": "Local variable is reassigned in closure or anonymous class"
+ "text": "Method with too many parameters"
},
"fullDescription": {
- "text": "Reports local variables assigned to expression with different type inside of closure or anonymous class. Example: 'int sum = 0\n [1, 2, 3].each { sum += 'as' }\n println(sum)' As a result, the 'integer' variable sum is reassigned to a 'String' expression.",
- "markdown": "Reports local variables assigned to expression with different type inside of closure or anonymous class.\n\n**Example:**\n\n\n int sum = 0\n [1, 2, 3].each { sum += 'as' }\n println(sum)\n\nAs a result, the `integer` variable **sum** is reassigned to a `String` expression."
+ "text": "Reports methods with too many parameters. Method with too many parameters is a good sign that refactoring is necessary. Methods whose signatures are inherited from library classes are ignored by this inspection. Use the Maximum number of parameters: field to specify the maximum acceptable number of parameters a method might have.",
+ "markdown": "Reports methods with too many parameters. Method with too many parameters is a good sign that refactoring is necessary. Methods whose signatures are inherited from library classes are ignored by this inspection.\n\n\nUse the **Maximum number of parameters:** field to specify the maximum acceptable number of parameters a method might have."
},
"defaultConfiguration": {
"enabled": false,
@@ -44171,8 +44393,8 @@
"relationships": [
{
"target": {
- "id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "id": "Groovy/Method metrics",
+ "index": 111,
"toolComponent": {
"name": "QDJVM"
}
@@ -44184,13 +44406,13 @@
]
},
{
- "id": "GroovyMethodParameterCount",
+ "id": "GrReassignedInClosureLocalVar",
"shortDescription": {
- "text": "Method with too many parameters"
+ "text": "Local variable is reassigned in closure or anonymous class"
},
"fullDescription": {
- "text": "Reports methods with too many parameters. Method with too many parameters is a good sign that refactoring is necessary. Methods whose signatures are inherited from library classes are ignored by this inspection. Use the Maximum number of parameters: field to specify the maximum acceptable number of parameters a method might have.",
- "markdown": "Reports methods with too many parameters. Method with too many parameters is a good sign that refactoring is necessary. Methods whose signatures are inherited from library classes are ignored by this inspection.\n\n\nUse the **Maximum number of parameters:** field to specify the maximum acceptable number of parameters a method might have."
+ "text": "Reports local variables assigned to expression with different type inside of closure or anonymous class. Example: 'int sum = 0\n [1, 2, 3].each { sum += 'as' }\n println(sum)' As a result, the 'integer' variable sum is reassigned to a 'String' expression.",
+ "markdown": "Reports local variables assigned to expression with different type inside of closure or anonymous class.\n\n**Example:**\n\n\n int sum = 0\n [1, 2, 3].each { sum += 'as' }\n println(sum)\n\nAs a result, the `integer` variable **sum** is reassigned to a `String` expression."
},
"defaultConfiguration": {
"enabled": false,
@@ -44205,8 +44427,8 @@
"relationships": [
{
"target": {
- "id": "Groovy/Method metrics",
- "index": 112,
+ "id": "Groovy/Potentially confusing code constructs",
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44240,7 +44462,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44252,13 +44474,13 @@
]
},
{
- "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,
@@ -44273,8 +44495,8 @@
"relationships": [
{
"target": {
- "id": "Groovy/Probable bugs",
- "index": 42,
+ "id": "Groovy/Potentially confusing code constructs",
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44286,13 +44508,13 @@
]
},
{
- "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,
@@ -44307,8 +44529,8 @@
"relationships": [
{
"target": {
- "id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "id": "Groovy/Probable bugs",
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -44342,7 +44564,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -44376,7 +44598,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -44410,7 +44632,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44444,7 +44666,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -44478,7 +44700,7 @@
{
"target": {
"id": "Groovy/Annotations",
- "index": 84,
+ "index": 83,
"toolComponent": {
"name": "QDJVM"
}
@@ -44512,7 +44734,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -44546,7 +44768,7 @@
{
"target": {
"id": "Groovy/Annotations",
- "index": 84,
+ "index": 83,
"toolComponent": {
"name": "QDJVM"
}
@@ -44580,7 +44802,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -44614,7 +44836,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -44648,7 +44870,7 @@
{
"target": {
"id": "Groovy/Method metrics",
- "index": 112,
+ "index": 111,
"toolComponent": {
"name": "QDJVM"
}
@@ -44682,7 +44904,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -44716,7 +44938,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44750,7 +44972,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -44784,7 +45006,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -44818,7 +45040,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -44852,7 +45074,7 @@
{
"target": {
"id": "Groovy/Annotations",
- "index": 84,
+ "index": 83,
"toolComponent": {
"name": "QDJVM"
}
@@ -44886,7 +45108,7 @@
{
"target": {
"id": "Groovy/Data flow",
- "index": 147,
+ "index": 145,
"toolComponent": {
"name": "QDJVM"
}
@@ -44920,7 +45142,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -44954,7 +45176,7 @@
{
"target": {
"id": "Groovy/Method metrics",
- "index": 112,
+ "index": 111,
"toolComponent": {
"name": "QDJVM"
}
@@ -44988,7 +45210,7 @@
{
"target": {
"id": "Groovy/Data flow",
- "index": 147,
+ "index": 145,
"toolComponent": {
"name": "QDJVM"
}
@@ -45022,7 +45244,7 @@
{
"target": {
"id": "Groovy/Method metrics",
- "index": 112,
+ "index": 111,
"toolComponent": {
"name": "QDJVM"
}
@@ -45056,7 +45278,7 @@
{
"target": {
"id": "Groovy/Annotations",
- "index": 84,
+ "index": 83,
"toolComponent": {
"name": "QDJVM"
}
@@ -45090,7 +45312,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -45124,7 +45346,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -45158,7 +45380,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -45192,7 +45414,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -45226,7 +45448,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -45260,7 +45482,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -45294,7 +45516,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -45328,7 +45550,7 @@
{
"target": {
"id": "Groovy/Data flow",
- "index": 147,
+ "index": 145,
"toolComponent": {
"name": "QDJVM"
}
@@ -45362,7 +45584,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -45396,7 +45618,7 @@
{
"target": {
"id": "Groovy/Data flow",
- "index": 147,
+ "index": 145,
"toolComponent": {
"name": "QDJVM"
}
@@ -45430,7 +45652,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -45464,7 +45686,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -45498,7 +45720,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -45532,7 +45754,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -45566,7 +45788,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -45600,7 +45822,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -45634,7 +45856,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -45668,7 +45890,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -45736,7 +45958,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -45770,7 +45992,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -45804,7 +46026,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -45838,7 +46060,7 @@
{
"target": {
"id": "Groovy/Other",
- "index": 155,
+ "index": 154,
"toolComponent": {
"name": "QDJVM"
}
@@ -45872,7 +46094,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -45906,7 +46128,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -45940,7 +46162,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -45974,7 +46196,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -46008,7 +46230,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -46042,7 +46264,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -46076,7 +46298,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -46110,7 +46332,7 @@
{
"target": {
"id": "Groovy/Assignment issues",
- "index": 95,
+ "index": 94,
"toolComponent": {
"name": "QDJVM"
}
@@ -46144,7 +46366,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -46178,7 +46400,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -46212,7 +46434,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -46246,7 +46468,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -46314,7 +46536,7 @@
{
"target": {
"id": "Groovy/Validity issues",
- "index": 157,
+ "index": 156,
"toolComponent": {
"name": "QDJVM"
}
@@ -46348,7 +46570,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -46382,7 +46604,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -46416,7 +46638,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -46450,7 +46672,7 @@
{
"target": {
"id": "Groovy/Data flow",
- "index": 147,
+ "index": 145,
"toolComponent": {
"name": "QDJVM"
}
@@ -46484,7 +46706,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -46518,7 +46740,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -46552,7 +46774,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -46586,7 +46808,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -46620,7 +46842,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -46654,7 +46876,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -46688,7 +46910,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -46722,7 +46944,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -46756,7 +46978,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -46790,7 +47012,7 @@
{
"target": {
"id": "Groovy/Method metrics",
- "index": 112,
+ "index": 111,
"toolComponent": {
"name": "QDJVM"
}
@@ -46824,7 +47046,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -46858,7 +47080,7 @@
{
"target": {
"id": "Groovy/Validity issues",
- "index": 157,
+ "index": 156,
"toolComponent": {
"name": "QDJVM"
}
@@ -46926,7 +47148,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -46994,7 +47216,7 @@
{
"target": {
"id": "Groovy/Style",
- "index": 71,
+ "index": 69,
"toolComponent": {
"name": "QDJVM"
}
@@ -47028,7 +47250,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -47096,7 +47318,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -47130,7 +47352,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -47164,7 +47386,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -47198,7 +47420,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -47232,7 +47454,7 @@
{
"target": {
"id": "Groovy/Method metrics",
- "index": 112,
+ "index": 111,
"toolComponent": {
"name": "QDJVM"
}
@@ -47266,7 +47488,7 @@
{
"target": {
"id": "Groovy/Other",
- "index": 155,
+ "index": 154,
"toolComponent": {
"name": "QDJVM"
}
@@ -47300,7 +47522,7 @@
{
"target": {
"id": "Groovy/Potentially confusing code constructs",
- "index": 89,
+ "index": 88,
"toolComponent": {
"name": "QDJVM"
}
@@ -47334,7 +47556,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -47368,7 +47590,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -47402,7 +47624,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -47436,7 +47658,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -47470,7 +47692,7 @@
{
"target": {
"id": "Groovy/Probable bugs",
- "index": 42,
+ "index": 43,
"toolComponent": {
"name": "QDJVM"
}
@@ -47504,7 +47726,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -47538,7 +47760,7 @@
{
"target": {
"id": "Groovy/Threading issues",
- "index": 64,
+ "index": 65,
"toolComponent": {
"name": "QDJVM"
}
@@ -47572,7 +47794,7 @@
{
"target": {
"id": "Groovy/Error handling",
- "index": 91,
+ "index": 90,
"toolComponent": {
"name": "QDJVM"
}
@@ -47606,7 +47828,7 @@
{
"target": {
"id": "Groovy/Declaration redundancy",
- "index": 160,
+ "index": 159,
"toolComponent": {
"name": "QDJVM"
}
@@ -47640,7 +47862,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -47674,7 +47896,7 @@
{
"target": {
"id": "Groovy/Control flow issues",
- "index": 65,
+ "index": 66,
"toolComponent": {
"name": "QDJVM"
}
@@ -47695,7 +47917,7 @@
},
{
"name": "org.jetbrains.idea.maven",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "MavenDuplicatePluginInspection",
@@ -47911,7 +48133,7 @@
},
{
"name": "com.intellij.database",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "MysqlLoadDataPathInspection",
@@ -47970,7 +48192,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48004,7 +48226,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48038,7 +48260,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48072,7 +48294,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48106,7 +48328,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48140,7 +48362,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48174,7 +48396,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48208,7 +48430,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48242,7 +48464,7 @@
{
"target": {
"id": "Oracle",
- "index": 117,
+ "index": 116,
"toolComponent": {
"name": "QDJVM"
}
@@ -48276,7 +48498,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48310,7 +48532,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48344,7 +48566,7 @@
{
"target": {
"id": "MongoJS",
- "index": 126,
+ "index": 124,
"toolComponent": {
"name": "QDJVM"
}
@@ -48378,7 +48600,7 @@
{
"target": {
"id": "MongoJS",
- "index": 126,
+ "index": 124,
"toolComponent": {
"name": "QDJVM"
}
@@ -48412,7 +48634,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48446,7 +48668,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48480,7 +48702,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48514,7 +48736,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48548,7 +48770,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48582,7 +48804,7 @@
{
"target": {
"id": "MongoJS",
- "index": 126,
+ "index": 124,
"toolComponent": {
"name": "QDJVM"
}
@@ -48616,7 +48838,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48650,7 +48872,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48684,7 +48906,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48718,7 +48940,7 @@
{
"target": {
"id": "PostgreSQL",
- "index": 144,
+ "index": 142,
"toolComponent": {
"name": "QDJVM"
}
@@ -48752,7 +48974,7 @@
{
"target": {
"id": "SQL server",
- "index": 146,
+ "index": 144,
"toolComponent": {
"name": "QDJVM"
}
@@ -48786,7 +49008,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48820,7 +49042,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48854,7 +49076,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48888,7 +49110,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48922,7 +49144,7 @@
{
"target": {
"id": "Oracle",
- "index": 117,
+ "index": 116,
"toolComponent": {
"name": "QDJVM"
}
@@ -48956,7 +49178,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -48990,7 +49212,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49024,7 +49246,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49058,7 +49280,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49092,7 +49314,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49126,7 +49348,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49160,7 +49382,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49228,7 +49450,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49262,7 +49484,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49296,7 +49518,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49330,7 +49552,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49364,7 +49586,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49398,7 +49620,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49432,7 +49654,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49466,7 +49688,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49500,7 +49722,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49534,7 +49756,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49568,7 +49790,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49602,7 +49824,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49636,7 +49858,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49670,7 +49892,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49704,7 +49926,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49738,7 +49960,7 @@
{
"target": {
"id": "Oracle",
- "index": 117,
+ "index": 116,
"toolComponent": {
"name": "QDJVM"
}
@@ -49772,7 +49994,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49806,7 +50028,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49840,7 +50062,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49874,7 +50096,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49908,7 +50130,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49942,7 +50164,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -49976,7 +50198,7 @@
{
"target": {
"id": "SQL server",
- "index": 146,
+ "index": 144,
"toolComponent": {
"name": "QDJVM"
}
@@ -50010,7 +50232,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -50044,7 +50266,7 @@
{
"target": {
"id": "SQL",
- "index": 41,
+ "index": 42,
"toolComponent": {
"name": "QDJVM"
}
@@ -50065,7 +50287,7 @@
},
{
"name": "com.intellij.javaee.jpa",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "JpaObjectClassSignatureInspection",
@@ -50587,7 +50809,7 @@
},
{
"name": "com.intellij",
- "version": "213.7162.133",
+ "version": "222.4502.199",
"rules": [
{
"id": "HtmlUnknownBooleanAttribute",
@@ -50629,8 +50851,8 @@
"text": "Duplicated code fragment"
},
"fullDescription": {
- "text": "Reports duplicated blocks of code from the selected scope: the same file, same module, dependent modules, or the entire project. The inspection features quick-fixes that help you to set the size of detected duplicates, navigate to repetitive code fragments, and compare them in a tool window. When possible, the inspection provides a quick-fix to extract a method from the duplicated code. The inspection options allow you to select the scope of the reported duplicated fragments and set the initial size for the duplicated language constructs. You can also configure the constructs that you want to anonymize in File | Settings | Editor | Duplicates.",
- "markdown": "Reports duplicated blocks of code from the selected scope: the same file, same module, dependent modules, or the entire project. The inspection features quick-fixes that help you to set the size of detected duplicates, navigate to repetitive code fragments, and compare them in a tool window. When possible, the inspection provides a quick-fix to extract a method from the duplicated code. The inspection options allow you to select the scope of the reported duplicated fragments and set the initial size for the duplicated language constructs. You can also configure the constructs that you want to anonymize in [File \\| Settings \\| Editor \\| Duplicates](settings://duplicates.index)."
+ "text": "Reports duplicated blocks of code from the selected scope: the same file or the entire project. The inspection features quick-fixes that help you to set the size of detected duplicates, navigate to repetitive code fragments, and compare them in a tool window. The inspection options allow you to select the scope of the reported duplicated fragments and set the initial size for the duplicated language constructs. You can also configure the constructs that you want to anonymize in File | Settings | Editor | Duplicates.",
+ "markdown": "Reports duplicated blocks of code from the selected scope: the same file or the entire project. The inspection features quick-fixes that help you to set the size of detected duplicates, navigate to repetitive code fragments, and compare them in a tool window. The inspection options allow you to select the scope of the reported duplicated fragments and set the initial size for the duplicated language constructs. You can also configure the constructs that you want to anonymize in [File \\| Settings \\| Editor \\| Duplicates](settings://duplicates.index)."
},
"defaultConfiguration": {
"enabled": false,
@@ -50646,7 +50868,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -50680,7 +50902,41 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IncorrectFormatting",
+ "shortDescription": {
+ "text": "Incorrect formatting"
+ },
+ "fullDescription": {
+ "text": "Reports formatting issues that appear if your code doesn't follow your project's code style settings. This inspection is not compatible with languages that require third-party formatters for code formatting, for example, Go or C with CLangFormat enabled.",
+ "markdown": "Reports formatting issues that appear if your code doesn't\nfollow your project's code style settings.\n\n\nThis inspection is not compatible with languages that require\nthird-party formatters for code formatting, for example, Go or\nC with CLangFormat enabled."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "ideaSeverity": "WEAK WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -50714,7 +50970,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -50748,7 +51004,7 @@
{
"target": {
"id": "Proofreading",
- "index": 85,
+ "index": 84,
"toolComponent": {
"name": "QDJVM"
}
@@ -50782,7 +51038,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -50816,7 +51072,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -50850,7 +51106,41 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpSimplifiable",
+ "shortDescription": {
+ "text": "Regular expression can be simplified"
+ },
+ "fullDescription": {
+ "text": "Reports regular expressions that can be simplified. Example: '[a] xx* [ah-hz]' After the quick-fix is applied: 'a x+ [ahz]' New in 2022.1",
+ "markdown": "Reports regular expressions that can be simplified.\n\n**Example:**\n\n\n [a] xx* [ah-hz]\n\nAfter the quick-fix is applied:\n\n\n a x+ [ahz]\n\nNew in 2022.1"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -50884,7 +51174,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -50918,7 +51208,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -50935,8 +51225,8 @@
"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 efficient if you run it in the batch mode.",
- "markdown": "Reports **TODO** comments in your code.\n\nYou can configure the format for **TODO** comments in [Settings \\| Editor \\| TODO](settings://preferences.toDoOptions). Since\nsyntax highlighting for **TODO** comments is already provided, this inspection is efficient if you run it in the batch mode."
+ "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."
},
"defaultConfiguration": {
"enabled": false,
@@ -50952,7 +51242,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -50986,7 +51276,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -51020,7 +51310,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -51054,7 +51344,41 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EmptyDirectory",
+ "shortDescription": {
+ "text": "Empty directory"
+ },
+ "fullDescription": {
+ "text": "Reports empty directories. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Only report empty directories located under a source folder option to have only directories under source roots reported.",
+ "markdown": "Reports empty directories.\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 **Only report empty directories located under a source folder** option to have only directories under source\nroots reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -51088,7 +51412,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -51122,7 +51446,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -51139,8 +51463,8 @@
"text": "Non-ASCII characters"
},
"fullDescription": {
- "text": "Reports code elements that uses non-ASCII symbols in an unusual context. Example: Non-ASCII characters used in identifiers, strings, or comments. Identifiers written in different languages, such as 'myCollection' with the letter 'C' written in Cyrillic. Comments or strings containing Unicode symbols, such as long dashes and arrows.",
- "markdown": "Reports code elements that uses non-ASCII symbols in an unusual context.\n\nExample:\n\n* Non-ASCII characters used in identifiers, strings, or comments.\n* Identifiers written in different languages, such as `my`**C**`ollection` with the letter **C** written in Cyrillic.\n* Comments or strings containing Unicode symbols, such as long dashes and arrows."
+ "text": "Reports code elements that use non-ASCII symbols in an unusual context. Example: Non-ASCII characters used in identifiers, strings, or comments. Identifiers written in different languages, such as 'myСollection' with the letter 'C' written in Cyrillic. Comments or strings containing Unicode symbols, such as long dashes and arrows.",
+ "markdown": "Reports code elements that use non-ASCII symbols in an unusual context.\n\nExample:\n\n* Non-ASCII characters used in identifiers, strings, or comments.\n* Identifiers written in different languages, such as `my`**С**`ollection` with the letter **C** written in Cyrillic.\n* Comments or strings containing Unicode symbols, such as long dashes and arrows."
},
"defaultConfiguration": {
"enabled": false,
@@ -51156,7 +51480,7 @@
{
"target": {
"id": "Internationalization",
- "index": 120,
+ "index": 118,
"toolComponent": {
"name": "QDJVM"
}
@@ -51190,7 +51514,7 @@
{
"target": {
"id": "Version control",
- "index": 125,
+ "index": 123,
"toolComponent": {
"name": "QDJVM"
}
@@ -51224,7 +51548,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -51258,7 +51582,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -51292,7 +51616,41 @@
{
"target": {
"id": "Structural search",
- "index": 129,
+ "index": 127,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpSuspiciousBackref",
+ "shortDescription": {
+ "text": "Suspicious back reference"
+ },
+ "fullDescription": {
+ "text": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation. Example of a group defined after its back reference: '\\1(abc)' Example of a group and a back reference in different branches: 'a(b)c|(xy)\\1z' New in 2022.1",
+ "markdown": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation.\n\n**Example of a group defined after its back reference:**\n\n\n \\1(abc)\n\n**Example of a group and a back reference in different branches:**\n\n\n a(b)c|(xy)\\1z\n\nNew in 2022.1"
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -51326,7 +51684,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -51343,8 +51701,8 @@
"text": "Empty element content"
},
"fullDescription": {
- "text": "Reports an element with empty contents.",
- "markdown": "Reports an element with empty contents."
+ "text": "Reports XML elements without contents. Example: '<user>\n <name></name>\n </user>' After the quick-fix is applied: '<user>\n <name/>\n </user>'",
+ "markdown": "Reports XML elements without contents.\n\n**Example:**\n\n\n <user>\n <name></name>\n </user>\n\nAfter the quick-fix is applied:\n\n\n <user>\n <name/>\n </user>\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -51360,7 +51718,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -51394,7 +51752,7 @@
{
"target": {
"id": "RELAX NG",
- "index": 135,
+ "index": 133,
"toolComponent": {
"name": "QDJVM"
}
@@ -51462,7 +51820,41 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ReassignedToPlainText",
+ "shortDescription": {
+ "text": "Reassigned to plain text"
+ },
+ "fullDescription": {
+ "text": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically. You can dismiss this warning by removing the file type association in Settings | Editor | File Types | Text.",
+ "markdown": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically.\n\nYou can dismiss this warning by removing the file type association\nin **Settings \\| Editor \\| File Types \\| Text**."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -51496,7 +51888,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -51530,7 +51922,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -51564,7 +51956,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -51581,8 +51973,8 @@
"text": "Empty tag"
},
"fullDescription": {
- "text": "Reports an empty tag (such as 'script') that does not work in some browsers.",
- "markdown": "Reports an empty tag (such as `script`) that does not work in some browsers."
+ "text": "Reports empty tags that do not work in some browsers. Example: '<html>\n <script/>\n </html>' After the quick-fix is applied: '<html>\n <script></script>\n </html>'",
+ "markdown": "Reports empty tags that do not work in some browsers.\n\n**Example:**\n\n\n <html>\n <script/>\n </html>\n\nAfter the quick-fix is applied:\n\n\n <html>\n <script></script>\n </html>\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -51632,7 +52024,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -51650,7 +52042,7 @@
},
"fullDescription": {
"text": "Reports files with line separators different from the ones that are specified in the project's settings. For example, the inspection will be triggered if you set the line separator to '\\n' in Settings | Editor | Code Style | Line separator, while the file you are editing uses '\\r\\n' as a line separator. The inspection also warns you about mixed line separators within a file.",
- "markdown": "Reports files with line separators different from the ones that are specified in the project's settings.\n\nFor example, the inspection will be triggered if you set the line separator to `\\n` in **Settings \\| Editor \\| Code Style \\| Line separator** ,\nwhile the file you are editing uses `\\r\\n` as a line separator.\n\nThe inspection also warns you about mixed line separators within a file."
+ "markdown": "Reports files with line separators different from the ones that are specified in the project's settings.\n\nFor example, the inspection will be triggered if you set the line separator to `\\n` in\n[Settings \\| Editor \\| Code Style \\| Line separator](settings://preferences.sourceCode?Line%20separator),\nwhile the file you are editing uses `\\r\\n` as a line separator.\n\nThe inspection also warns you about mixed line separators within a file."
},
"defaultConfiguration": {
"enabled": false,
@@ -51666,7 +52058,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -51700,7 +52092,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -51748,11 +52140,11 @@
{
"id": "LongLine",
"shortDescription": {
- "text": "The line is longer than allowed by code style"
+ "text": "Line is longer than allowed by code style"
},
"fullDescription": {
- "text": "Reports lines that are longer than the right margin parameter specified in the Code Style settings.",
- "markdown": "Reports lines that are longer than the **right margin** parameter specified in the **Code Style** settings."
+ "text": "Reports lines that are longer than the Hard wrap at parameter specified in Settings | Editor | Code Style | General.",
+ "markdown": "Reports lines that are longer than the **Hard wrap at** parameter specified in [Settings \\| Editor \\| Code Style \\| General](settings://preferences.sourceCode?Hard%20wrap%20at)."
},
"defaultConfiguration": {
"enabled": false,
@@ -51768,7 +52160,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -51802,7 +52194,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -51853,8 +52245,8 @@
"text": "Redundant character escape"
},
"fullDescription": {
- "text": "Reports character escapes that are replaceable with the unescaped character without a change in meaning. Note that inside the square brackets of a character class, many escapes are unnecessary that would be necessary outside of a character class. Example: '\\-\\;[\\.]' After the quick-fix is applied: '-;[.]' New in 2017.3",
- "markdown": "Reports character escapes that are replaceable with the unescaped character without a change in meaning. Note that inside the square brackets of a character class, many escapes are unnecessary that would be necessary outside of a character class.\n\n**Example:**\n\n\n \\-\\;[\\.]\n\nAfter the quick-fix is applied:\n\n\n -;[.]\n\nNew in 2017.3"
+ "text": "Reports redundant character escape sequences that can be replaced with unescaped characters preserving the meaning. Many escape sequences that are necessary outside of a character class are redundant inside square brackets '[]' of a character class. Although unescaped opening curly braces '{' outside of character classes are allowed in some dialects (JavaScript, Python, and so on), it can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters. For this reason the inspection does not report escaped opening curly braces. Example: '\\-\\;[\\.]' After the quick-fix is applied: '-;[.]' The Ignore escaped closing brackets '}' and ']' option specifies whether to report '\\}' and '\\]' outside of a character class when they are allowed to be unescaped by the RegExp dialect. New in 2017.3",
+ "markdown": "Reports redundant character escape sequences that can be replaced with unescaped characters preserving the meaning. Many escape sequences that are necessary outside of a character class are redundant inside square brackets `[]` of a character class.\n\n\nAlthough unescaped opening curly braces `{` outside of character classes are allowed in some dialects (JavaScript, Python, and so on),\nit can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters.\nFor this reason the inspection does not report escaped opening curly braces.\n\n**Example:**\n\n\n \\-\\;[\\.]\n\nAfter the quick-fix is applied:\n\n\n -;[.]\n\n\nThe **Ignore escaped closing brackets '}' and '\\]'** option specifies whether to report `\\}` and `\\]` outside of a character class\nwhen they are allowed to be unescaped by the RegExp dialect.\n\nNew in 2017.3"
},
"defaultConfiguration": {
"enabled": true,
@@ -51870,7 +52262,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -51887,8 +52279,8 @@
"text": "Redundant closing tag"
},
"fullDescription": {
- "text": "Reports a redundant closing tag for an empty element, for example, 'img' or 'br'. Example: '<html>\n <body>\n <br></br>\n </body>\n </html>' After the quick-fix is applied: '<html>\n <body>\n <br>\n </body>\n </html>'",
- "markdown": "Reports a redundant closing tag for an empty element, for example, `img` or `br`.\n\n**Example:**\n\n\n <html>\n <body>\n <br></br>\n </body>\n </html>\n\nAfter the quick-fix is applied:\n\n\n <html>\n <body>\n <br>\n </body>\n </html>\n"
+ "text": "Reports redundant closing tags on empty elements, for example, 'img' or 'br'. Example: '<html>\n <body>\n <br></br>\n </body>\n </html>' After the quick-fix is applied: '<html>\n <body>\n <br>\n </body>\n </html>'",
+ "markdown": "Reports redundant closing tags on empty elements, for example, `img` or `br`.\n\n**Example:**\n\n\n <html>\n <body>\n <br></br>\n </body>\n </html>\n\nAfter the quick-fix is applied:\n\n\n <html>\n <body>\n <br>\n </body>\n </html>\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -51972,7 +52364,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -52006,7 +52398,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -52040,7 +52432,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -52074,7 +52466,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -52120,6 +52512,40 @@
]
},
{
+ "id": "RegExpRedundantClassElement",
+ "shortDescription": {
+ "text": "Redundant '\\d', '[:digit:]', or '\\D' class elements"
+ },
+ "fullDescription": {
+ "text": "Reports redundant '\\d' or '[:digit:]' that are used in one class with '\\w' or '[:word:]' ('\\D' with '\\W') and can be removed. Example: '[\\w\\d]' After the quick-fix is applied: '[\\w]' New in 2022.2",
+ "markdown": "Reports redundant `\\d` or `[:digit:]` that are used in one class with `\\w` or `[:word:]` (`\\D` with `\\W`) and can be removed.\n\n**Example:**\n\n\n [\\w\\d]\n\nAfter the quick-fix is applied:\n\n\n [\\w]\n\nNew in 2022.2"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "ideaSeverity": "WEAK WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 80,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
"id": "XmlPathReference",
"shortDescription": {
"text": "Unresolved file reference"
@@ -52142,7 +52568,7 @@
{
"target": {
"id": "XML",
- "index": 86,
+ "index": 85,
"toolComponent": {
"name": "QDJVM"
}
@@ -52176,7 +52602,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -52210,7 +52636,7 @@
{
"target": {
"id": "Internationalization",
- "index": 120,
+ "index": 118,
"toolComponent": {
"name": "QDJVM"
}
@@ -52244,7 +52670,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -52261,8 +52687,8 @@
"text": "Malformed content of 'script' tag"
},
"fullDescription": {
- "text": "Reports invalid XML contents of a 'script' tag.",
- "markdown": "Reports invalid XML contents of a `script` tag. "
+ "text": "Reports contents of 'script' tags that are invalid XML. Example: '<script type=\"text/javascript\">\n console.log('<');\n </script>' After the quick-fix is applied: '<script type=\"text/javascript\">\n console.log('&lt;');\n </script>'",
+ "markdown": "Reports contents of `script` tags that are invalid XML. \n\n**Example:**\n\n\n <script type=\"text/javascript\">\n console.log('<');\n </script>\n\nAfter the quick-fix is applied:\n\n\n <script type=\"text/javascript\">\n console.log('&lt;');\n </script>\n"
},
"defaultConfiguration": {
"enabled": false,
@@ -52346,7 +52772,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -52380,7 +52806,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -52414,7 +52840,7 @@
{
"target": {
"id": "JSON and JSON5",
- "index": 108,
+ "index": 107,
"toolComponent": {
"name": "QDJVM"
}
@@ -52448,7 +52874,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -52482,7 +52908,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -52516,7 +52942,7 @@
{
"target": {
"id": "RELAX NG",
- "index": 135,
+ "index": 133,
"toolComponent": {
"name": "QDJVM"
}
@@ -52550,7 +52976,7 @@
{
"target": {
"id": "RegExp",
- "index": 81,
+ "index": 80,
"toolComponent": {
"name": "QDJVM"
}
@@ -52571,7 +52997,7 @@
},
{
"name": "com.intellij.java-i18n",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "UnusedMessageFormatParameter",
@@ -52664,7 +53090,7 @@
{
"target": {
"id": "Java/Properties files",
- "index": 138,
+ "index": 135,
"toolComponent": {
"name": "QDJVM"
}
@@ -52855,7 +53281,7 @@
},
{
"name": "com.intellij.freemarker",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "FtlFileReferencesInspection",
@@ -52880,7 +53306,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -52914,7 +53340,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -52948,7 +53374,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -52982,7 +53408,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -53016,7 +53442,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -53050,7 +53476,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -53084,7 +53510,7 @@
{
"target": {
"id": "FreeMarker",
- "index": 38,
+ "index": 39,
"toolComponent": {
"name": "QDJVM"
}
@@ -53105,7 +53531,7 @@
},
{
"name": "org.editorconfig.editorconfigjetbrains",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "EditorConfigNumerousWildcards",
@@ -53130,7 +53556,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53164,7 +53590,41 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigEncoding",
+ "shortDescription": {
+ "text": "File encoding doesn't match EditorConfig charset"
+ },
+ "fullDescription": {
+ "text": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file.",
+ "markdown": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53198,7 +53658,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53232,7 +53692,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53266,7 +53726,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53300,7 +53760,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53334,7 +53794,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53368,7 +53828,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53402,7 +53862,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53436,7 +53896,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53470,7 +53930,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53504,7 +53964,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53538,7 +53998,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53572,7 +54032,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53606,7 +54066,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53640,7 +54100,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53674,7 +54134,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53708,7 +54168,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53742,7 +54202,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53776,7 +54236,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53810,7 +54270,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53844,7 +54304,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53878,7 +54338,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53912,7 +54372,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53946,7 +54406,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -53980,7 +54440,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -54014,7 +54474,7 @@
{
"target": {
"id": "EditorConfig",
- "index": 39,
+ "index": 40,
"toolComponent": {
"name": "QDJVM"
}
@@ -54035,7 +54495,7 @@
},
{
"name": "com.intellij.cdi",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "CdiUnknownProducersForDisposerMethodInspection",
@@ -54060,7 +54520,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54094,7 +54554,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54128,7 +54588,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54162,7 +54622,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54196,7 +54656,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54230,7 +54690,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54264,7 +54724,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54298,7 +54758,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54332,7 +54792,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54366,7 +54826,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54400,7 +54860,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54434,7 +54894,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54468,7 +54928,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54502,7 +54962,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54536,7 +54996,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54570,7 +55030,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54604,7 +55064,7 @@
{
"target": {
"id": "CDI (Contexts and Dependency Injection)",
- "index": 44,
+ "index": 45,
"toolComponent": {
"name": "QDJVM"
}
@@ -54625,7 +55085,7 @@
},
{
"name": "com.intellij.velocity",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "VtlInterpolationsInspection",
@@ -54650,7 +55110,7 @@
{
"target": {
"id": "Velocity",
- "index": 45,
+ "index": 46,
"toolComponent": {
"name": "QDJVM"
}
@@ -54684,7 +55144,7 @@
{
"target": {
"id": "Velocity",
- "index": 45,
+ "index": 46,
"toolComponent": {
"name": "QDJVM"
}
@@ -54718,7 +55178,7 @@
{
"target": {
"id": "Velocity",
- "index": 45,
+ "index": 46,
"toolComponent": {
"name": "QDJVM"
}
@@ -54752,7 +55212,7 @@
{
"target": {
"id": "Velocity",
- "index": 45,
+ "index": 46,
"toolComponent": {
"name": "QDJVM"
}
@@ -54786,7 +55246,7 @@
{
"target": {
"id": "Velocity",
- "index": 45,
+ "index": 46,
"toolComponent": {
"name": "QDJVM"
}
@@ -54807,7 +55267,7 @@
},
{
"name": "com.intellij.css",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "CssInvalidFunction",
@@ -54832,7 +55292,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -54866,7 +55326,7 @@
{
"target": {
"id": "CSS/Probable bugs",
- "index": 78,
+ "index": 77,
"toolComponent": {
"name": "QDJVM"
}
@@ -54900,7 +55360,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -54934,7 +55394,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -54968,7 +55428,7 @@
{
"target": {
"id": "CSS/Probable bugs",
- "index": 78,
+ "index": 77,
"toolComponent": {
"name": "QDJVM"
}
@@ -55002,7 +55462,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -55036,7 +55496,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55070,7 +55530,7 @@
{
"target": {
"id": "CSS/Code style issues",
- "index": 153,
+ "index": 151,
"toolComponent": {
"name": "QDJVM"
}
@@ -55104,7 +55564,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -55138,7 +55598,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55172,7 +55632,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55206,7 +55666,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55240,7 +55700,7 @@
{
"target": {
"id": "CSS/Probable bugs",
- "index": 78,
+ "index": 77,
"toolComponent": {
"name": "QDJVM"
}
@@ -55274,7 +55734,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55308,7 +55768,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55342,7 +55802,7 @@
{
"target": {
"id": "CSS/Code style issues",
- "index": 153,
+ "index": 151,
"toolComponent": {
"name": "QDJVM"
}
@@ -55376,7 +55836,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55410,7 +55870,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -55444,7 +55904,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -55478,7 +55938,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55512,7 +55972,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55546,7 +56006,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55580,7 +56040,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55614,7 +56074,7 @@
{
"target": {
"id": "CSS",
- "index": 48,
+ "index": 49,
"toolComponent": {
"name": "QDJVM"
}
@@ -55648,7 +56108,7 @@
{
"target": {
"id": "CSS/Invalid elements",
- "index": 49,
+ "index": 50,
"toolComponent": {
"name": "QDJVM"
}
@@ -55669,7 +56129,7 @@
},
{
"name": "com.intellij.hibernate",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "CriteriaApiResolveInspection",
@@ -55694,7 +56154,7 @@
{
"target": {
"id": "Hibernate",
- "index": 57,
+ "index": 58,
"toolComponent": {
"name": "QDJVM"
}
@@ -55728,7 +56188,7 @@
{
"target": {
"id": "Hibernate",
- "index": 57,
+ "index": 58,
"toolComponent": {
"name": "QDJVM"
}
@@ -55762,7 +56222,7 @@
{
"target": {
"id": "Hibernate",
- "index": 57,
+ "index": 58,
"toolComponent": {
"name": "QDJVM"
}
@@ -55796,7 +56256,7 @@
{
"target": {
"id": "Hibernate",
- "index": 57,
+ "index": 58,
"toolComponent": {
"name": "QDJVM"
}
@@ -55830,7 +56290,7 @@
{
"target": {
"id": "Hibernate",
- "index": 57,
+ "index": 58,
"toolComponent": {
"name": "QDJVM"
}
@@ -55851,7 +56311,7 @@
},
{
"name": "com.intellij.spring.integration",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "UnresolvedMessageChannel",
@@ -55876,7 +56336,7 @@
{
"target": {
"id": "Spring/Spring Integration",
- "index": 58,
+ "index": 59,
"toolComponent": {
"name": "QDJVM"
}
@@ -55910,7 +56370,7 @@
{
"target": {
"id": "Spring/Spring Integration",
- "index": 58,
+ "index": 59,
"toolComponent": {
"name": "QDJVM"
}
@@ -55944,7 +56404,7 @@
{
"target": {
"id": "Spring/Spring Integration",
- "index": 58,
+ "index": 59,
"toolComponent": {
"name": "QDJVM"
}
@@ -55978,7 +56438,7 @@
{
"target": {
"id": "Spring/Spring Integration",
- "index": 58,
+ "index": 59,
"toolComponent": {
"name": "QDJVM"
}
@@ -55999,7 +56459,7 @@
},
{
"name": "DevKit",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "PluginXmlCapitalization",
@@ -56024,41 +56484,7 @@
{
"target": {
"id": "Plugin DevKit/Plugin descriptor",
- "index": 60,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "StatisticsCollectorNotRegistered",
- "shortDescription": {
- "text": "Statistics collector not registered"
- },
- "fullDescription": {
- "text": "Reports statistics collectors not registered in 'plugin.xml' descriptor. Internal inspection for IntelliJ IDEA project. Quick-fix adds necessary registration.",
- "markdown": "Reports statistics collectors not registered in `plugin.xml` descriptor.\n\n\nInternal inspection for IntelliJ IDEA project.\n\n\nQuick-fix adds necessary registration."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 61,
"toolComponent": {
"name": "QDJVM"
}
@@ -56092,7 +56518,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56126,7 +56552,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56160,7 +56586,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56194,7 +56620,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56228,7 +56654,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56262,7 +56688,7 @@
{
"target": {
"id": "Plugin DevKit/Plugin descriptor",
- "index": 60,
+ "index": 61,
"toolComponent": {
"name": "QDJVM"
}
@@ -56279,8 +56705,8 @@
"text": "Intention description checker"
},
"fullDescription": {
- "text": "Reports missing HTML description file and 'before/after.template' for an intention. These are shown in Settings/Preferences | Editor | Intentions. Quick-fix Create description file creates template description HTML file.",
- "markdown": "Reports missing HTML description file and `before/after.template` for an intention.\n\n\nThese are shown in **Settings/Preferences \\| Editor \\| Intentions**.\n\n\nQuick-fix **Create description file** creates template description HTML file."
+ "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,
@@ -56296,7 +56722,7 @@
{
"target": {
"id": "Plugin DevKit/Description file",
- "index": 105,
+ "index": 104,
"toolComponent": {
"name": "QDJVM"
}
@@ -56330,7 +56756,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56342,19 +56768,19 @@
]
},
{
- "id": "HighlightVisitorInternal",
+ "id": "UElementAsPsi",
"shortDescription": {
- "text": "Good code is red"
+ "text": "UElement as PsiElement usage"
},
"fullDescription": {
- "text": "Reports \"good code is red\" problems for Java/Groovy code. Must be run in batch mode, IDE internal mode must be enabled.",
- "markdown": "Reports \"good code is red\" problems for Java/Groovy code.\n\n\nMust be run in batch mode, IDE internal mode must be enabled."
+ "text": "Reports usage of UAST 'UElement' as 'PsiElement'. The 'PsiElement' obtained this way is ambiguous. To obtain \"physical\" 'PsiElement' use 'UElementKt.getSourcePsiElement()', for 'PsiElement' that \"emulates\" behaviour of Java-elements ('PsiClass', 'PsiMethod', etc.) use 'UElementKt.getAsJavaPsiElement()'. See UAST - Unified Abstract Syntax Tree in SDK Docs.",
+ "markdown": "Reports usage of UAST `UElement` as `PsiElement`.\n\n\nThe `PsiElement` obtained this way is ambiguous.\n\n\nTo obtain \"physical\" `PsiElement` use `UElementKt.getSourcePsiElement()`,\nfor `PsiElement` that \"emulates\" behaviour of Java-elements (`PsiClass`, `PsiMethod`, etc.)\nuse `UElementKt.getAsJavaPsiElement()`.\n\n\nSee [UAST - Unified Abstract Syntax Tree](https://plugins.jetbrains.com/docs/intellij/uast.html) in SDK Docs."
},
"defaultConfiguration": {
"enabled": false,
- "level": "error",
+ "level": "warning",
"parameters": {
- "ideaSeverity": "ERROR",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -56364,7 +56790,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56376,13 +56802,13 @@
]
},
{
- "id": "UElementAsPsi",
+ "id": "MissingActionUpdateThread",
"shortDescription": {
- "text": "UElement as PsiElement usage"
+ "text": "ActionUpdateThread is missing"
},
"fullDescription": {
- "text": "Reports usage of UAST 'UElement' as 'PsiElement'. The 'PsiElement' obtained this way is ambiguous. To obtain \"physical\" 'PsiElement' use 'UElementKt.getSourcePsiElement()', for 'PsiElement' that \"emulates\" behaviour of Java-elements ('PsiClass', 'PsiMethod', etc.) use 'UElementKt.getAsJavaPsiElement()'. See UAST - Unified Abstract Syntax Tree in SDK Docs.",
- "markdown": "Reports usage of UAST `UElement` as `PsiElement`.\n\n\nThe `PsiElement` obtained this way is ambiguous.\n\n\nTo obtain \"physical\" `PsiElement` use `UElementKt.getSourcePsiElement()`,\nfor `PsiElement` that \"emulates\" behaviour of Java-elements (`PsiClass`, `PsiMethod`, etc.)\nuse `UElementKt.getAsJavaPsiElement()`.\n\n\nSee [UAST - Unified Abstract Syntax Tree](https://plugins.jetbrains.com/docs/intellij/uast.html) in SDK Docs."
+ "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`"
},
"defaultConfiguration": {
"enabled": false,
@@ -56398,7 +56824,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56432,7 +56858,7 @@
{
"target": {
"id": "Plugin DevKit/Plugin descriptor",
- "index": 60,
+ "index": 61,
"toolComponent": {
"name": "QDJVM"
}
@@ -56466,7 +56892,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56500,7 +56926,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56534,7 +56960,7 @@
{
"target": {
"id": "Plugin DevKit",
- "index": 59,
+ "index": 60,
"toolComponent": {
"name": "QDJVM"
}
@@ -56568,7 +56994,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56602,7 +57028,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56636,7 +57062,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56670,7 +57096,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56682,13 +57108,47 @@
]
},
{
- "id": "UnregisteredNamedColor",
+ "id": "WorkspaceImplObsolete",
"shortDescription": {
- "text": "Unregistered named color"
+ "text": "Obsolete version of entity implementation"
},
"fullDescription": {
- "text": "Reports usages of 'JBColor.namedColor()' with unregistered key. All keys must be registered with corresponding metadata in '*.themeMetadata.json'. Quick-fix offers navigation to all known '*.themeMetadata.json' candidate files to add necessary entry. See Exposing Theme Metadata in SDK Docs for more information.",
- "markdown": "Reports usages of `JBColor.namedColor()` with unregistered key.\n\n\nAll keys must be registered with corresponding metadata in `*.themeMetadata.json`.\n\n\nQuick-fix offers navigation to all known `*.themeMetadata.json` candidate files to add necessary entry.\n\n\nSee [Exposing Theme Metadata](https://plugins.jetbrains.com/docs/intellij/themes-metadata.html) in SDK Docs for more\ninformation."
+ "text": "Reports existence of the obsolete implementation for the entity. Verifies that existing implementation for entities has the same API version as described at 'com.intellij.workspaceModel.storage.CodeGeneratorVersions' from dependencies. Suggests regenerating implementation for the whole entities in the current module.",
+ "markdown": "Reports existence of the obsolete implementation for the entity.\n\n\nVerifies that existing implementation for entities has the same API version as described at `com.intellij.workspaceModel.storage.CodeGeneratorVersions` from dependencies.\n\n\nSuggests regenerating implementation for the whole entities in the current module."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Plugin DevKit/Workspace model",
+ "index": 153,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ActionIsNotPreviewFriendly",
+ "shortDescription": {
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -56704,7 +57164,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56738,7 +57198,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56772,7 +57232,7 @@
{
"target": {
"id": "Plugin DevKit/Plugin descriptor",
- "index": 60,
+ "index": 61,
"toolComponent": {
"name": "QDJVM"
}
@@ -56806,7 +57266,7 @@
{
"target": {
"id": "Plugin DevKit",
- "index": 59,
+ "index": 60,
"toolComponent": {
"name": "QDJVM"
}
@@ -56840,7 +57300,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56874,7 +57334,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56908,7 +57368,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56942,7 +57402,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -56976,7 +57436,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57010,7 +57470,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57044,7 +57504,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57078,7 +57538,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57112,7 +57572,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57124,19 +57584,19 @@
]
},
{
- "id": "InspectionDescriptionNotFoundInspection",
+ "id": "PluginXmlValidity",
"shortDescription": {
- "text": "Inspection description checker"
+ "text": "Plugin.xml validity"
},
"fullDescription": {
- "text": "Reports missing HTML description file for an inspection. Descriptions are shown in Settings/Preferences | Editor | Inspections. Quick-fix Create description file creates template description HTML file.",
- "markdown": "Reports missing HTML description file for an inspection.\n\n\nDescriptions are shown in **Settings/Preferences \\| Editor \\| Inspections**.\n\n\nQuick-fix **Create description file** creates template description HTML file."
+ "text": "Reports problems in 'plugin.xml'. Invalid configuration can lead to problems at runtime.",
+ "markdown": "Reports problems in `plugin.xml`.\n\n\nInvalid configuration can lead to problems at runtime."
},
"defaultConfiguration": {
"enabled": false,
- "level": "warning",
+ "level": "error",
"parameters": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
@@ -57145,8 +57605,8 @@
"relationships": [
{
"target": {
- "id": "Plugin DevKit/Description file",
- "index": 105,
+ "id": "Plugin DevKit/Plugin descriptor",
+ "index": 61,
"toolComponent": {
"name": "QDJVM"
}
@@ -57158,19 +57618,19 @@
]
},
{
- "id": "PluginXmlValidity",
+ "id": "InspectionDescriptionNotFoundInspection",
"shortDescription": {
- "text": "Plugin.xml validity"
+ "text": "Inspection description checker"
},
"fullDescription": {
- "text": "Reports problems in 'plugin.xml'. Invalid configuration can lead to problems at runtime.",
- "markdown": "Reports problems in `plugin.xml`.\n\n\nInvalid configuration can lead to problems at runtime."
+ "text": "Reports inspections that are missing an HTML description file, i.e. a file containing a text like this. The Create description file quick-fix creates a template HTML description file.",
+ "markdown": "Reports inspections that are missing an HTML description file, i.e. a file containing a text like this.\n\n\nThe **Create description file** quick-fix creates a template HTML description file."
},
"defaultConfiguration": {
"enabled": false,
- "level": "error",
+ "level": "warning",
"parameters": {
- "ideaSeverity": "ERROR",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -57179,8 +57639,8 @@
"relationships": [
{
"target": {
- "id": "Plugin DevKit/Plugin descriptor",
- "index": 60,
+ "id": "Plugin DevKit/Description file",
+ "index": 104,
"toolComponent": {
"name": "QDJVM"
}
@@ -57214,7 +57674,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57231,8 +57691,8 @@
"text": "Postfix template description checker"
},
"fullDescription": {
- "text": "Reports missing HTML description file and 'before/after.template' for postfix template. These are shown in Settings/Preferences | Editor | General | Postfix Completion. Quick-fix Create description file creates template description HTML file.",
- "markdown": "Reports missing HTML description file and `before/after.template` for postfix template.\n\n\nThese are shown in **Settings/Preferences \\| Editor \\| General \\| Postfix Completion**.\n\n\nQuick-fix **Create description file** creates template description HTML file."
+ "text": "Reports postfix templates missing an HTML description file, 'before.template' file or 'after.template' file. These are shown in Settings | Editor | General | Postfix Completion. The Create description file quick-fix creates a template HTML description file.",
+ "markdown": "Reports postfix templates missing an HTML description file, `before.template` file or `after.template` file. These are shown in [Settings \\| Editor \\| General \\| Postfix Completion](settings://reference.settingsdialog.IDE.editor.postfix.templates).\n\n\nThe **Create description file** quick-fix creates a template HTML description file."
},
"defaultConfiguration": {
"enabled": false,
@@ -57248,7 +57708,7 @@
{
"target": {
"id": "Plugin DevKit/Description file",
- "index": 105,
+ "index": 104,
"toolComponent": {
"name": "QDJVM"
}
@@ -57282,7 +57742,7 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
"toolComponent": {
"name": "QDJVM"
}
@@ -57316,7 +57776,41 @@
{
"target": {
"id": "Plugin DevKit/Code",
- "index": 67,
+ "index": 73,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "WorkspaceImplAbsent",
+ "shortDescription": {
+ "text": "Absent entity implementation"
+ },
+ "fullDescription": {
+ "text": "Reports absent of implementation for the entity. Verifies that each entity in the project has the implementation. Suggests generation implementation for the whole entities in the current module.",
+ "markdown": "Reports absent of implementation for the entity.\n\n\nVerifies that each entity in the project has the implementation.\n\n\nSuggests generation implementation for the whole entities in the current module."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Plugin DevKit/Workspace model",
+ "index": 153,
"toolComponent": {
"name": "QDJVM"
}
@@ -57337,7 +57831,7 @@
},
{
"name": "com.intellij.properties",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "UseEllipsisInPropertyInspection",
@@ -57553,7 +58047,7 @@
},
{
"name": "XPathView",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "XsltUnusedDeclaration",
@@ -57578,7 +58072,7 @@
{
"target": {
"id": "XSLT",
- "index": 69,
+ "index": 68,
"toolComponent": {
"name": "QDJVM"
}
@@ -57612,7 +58106,7 @@
{
"target": {
"id": "XPath",
- "index": 113,
+ "index": 112,
"toolComponent": {
"name": "QDJVM"
}
@@ -57646,7 +58140,7 @@
{
"target": {
"id": "XPath",
- "index": 113,
+ "index": 112,
"toolComponent": {
"name": "QDJVM"
}
@@ -57680,7 +58174,7 @@
{
"target": {
"id": "XPath",
- "index": 113,
+ "index": 112,
"toolComponent": {
"name": "QDJVM"
}
@@ -57714,7 +58208,7 @@
{
"target": {
"id": "XSLT",
- "index": 69,
+ "index": 68,
"toolComponent": {
"name": "QDJVM"
}
@@ -57748,7 +58242,7 @@
{
"target": {
"id": "XPath",
- "index": 113,
+ "index": 112,
"toolComponent": {
"name": "QDJVM"
}
@@ -57782,7 +58276,7 @@
{
"target": {
"id": "XSLT",
- "index": 69,
+ "index": 68,
"toolComponent": {
"name": "QDJVM"
}
@@ -57816,7 +58310,7 @@
{
"target": {
"id": "XPath",
- "index": 113,
+ "index": 112,
"toolComponent": {
"name": "QDJVM"
}
@@ -57850,121 +58344,7 @@
{
"target": {
"id": "XSLT",
- "index": 69,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- }
- ],
- "language": "en-US",
- "contents": [
- "localizedData",
- "nonLocalizedData"
- ],
- "isComprehensive": false
- },
- {
- "name": "JUnit",
- "version": "213.7162",
- "rules": [
- {
- "id": "Junit5MalformedParameterized",
- "shortDescription": {
- "text": "Malformed Parameterized inspection"
- },
- "fullDescription": {
- "text": "Reports parameterized tests that have malformed sources: 'MethodSource' has an unknown target or the method is not static, 'no-arg'. 'ValueSource' and 'EnumSource' types cannot be converted to method parameters. No sources are defined. Example: 'class Test {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n void foo(String param) {}\n }' After the quick-fix is applied: 'class Test {\n private static Stream<Arguments> parameters() {\n return Stream.empty();\n }\n\n @MethodSource(\"parameters\")\n @ParameterizedTest\n void foo(String param) {}\n }'",
- "markdown": "Reports parameterized tests that have malformed sources:\n\n* `MethodSource` has an unknown target or the method is not static, `no-arg`.\n* `ValueSource` and `EnumSource` types cannot be converted to method parameters.\n* No sources are defined.\n\nExample:\n\n\n class Test {\n @MethodSource(\"parameters\")\n @ParameterizedTest\n void foo(String param) {}\n }\n\nAfter the quick-fix is applied:\n\n\n class Test {\n private static Stream<Arguments> parameters() {\n return Stream.empty();\n }\n\n @MethodSource(\"parameters\")\n @ParameterizedTest\n void foo(String param) {}\n }\n"
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "JUnit",
- "index": 70,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "JUnit5MalformedNestedClass",
- "shortDescription": {
- "text": "JUnit 5 malformed '@Nested' class"
- },
- "fullDescription": {
- "text": "Reports 'static' inner classes annotated with '@Nested'. The '@Nested' annotation cannot be used on 'static' classes.",
- "markdown": "Reports `static` inner classes annotated with `@Nested`.\n\nThe `@Nested` annotation cannot be used on `static` classes."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
- "toolComponent": {
- "name": "QDJVM"
- }
- },
- "kinds": [
- "superset"
- ]
- }
- ]
- },
- {
- "id": "JUnit5MalformedRepeated",
- "shortDescription": {
- "text": "JUnit 5 malformed repeated test"
- },
- "fullDescription": {
- "text": "Reports the following problems with JUnit 5 '@RepeatedTest': '@Test' and '@RepeatedTest' are used on the same method. Even though it is allowed to use them, they have no additional effect together. 'RepetitionInfo' parameter is used in the '@BeforeAll' and '@AfterAll' methods. The parameter is not injected in these methods. 'RepetitionInfo' parameter is used in the '@BeforeEach' and '@AfterEach' methods in classes with '@Test' methods. In this case, the parameter won't be injected in '@Test' methods.",
- "markdown": "Reports the following problems with JUnit 5 `@RepeatedTest`:\n\n* `@Test` and `@RepeatedTest` are used on the same method. Even though it is allowed to use them, they have no additional effect together.\n* `RepetitionInfo` parameter is used in the `@BeforeAll` and `@AfterAll` methods. The parameter is not injected in these methods.\n* `RepetitionInfo` parameter is used in the `@BeforeEach` and `@AfterEach` methods in classes with `@Test` methods. In this case, the parameter won't be injected in `@Test` methods."
- },
- "defaultConfiguration": {
- "enabled": false,
- "level": "warning",
- "parameters": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- "relationships": [
- {
- "target": {
- "id": "Java/JUnit",
- "index": 46,
+ "index": 68,
"toolComponent": {
"name": "QDJVM"
}
@@ -57985,7 +58365,7 @@
},
{
"name": "com.intellij.javaee",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "JavaeeApplicationDomInspection",
@@ -58010,7 +58390,7 @@
{
"target": {
"id": "Java EE",
- "index": 72,
+ "index": 70,
"toolComponent": {
"name": "QDJVM"
}
@@ -58044,7 +58424,7 @@
{
"target": {
"id": "Java EE",
- "index": 72,
+ "index": 70,
"toolComponent": {
"name": "QDJVM"
}
@@ -58065,7 +58445,7 @@
},
{
"name": "TestNG-J",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "ConvertJavadoc",
@@ -58090,7 +58470,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58124,7 +58504,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58158,7 +58538,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58192,7 +58572,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58226,7 +58606,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58260,7 +58640,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58294,7 +58674,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58328,7 +58708,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58362,7 +58742,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58396,7 +58776,7 @@
{
"target": {
"id": "Java/TestNG",
- "index": 74,
+ "index": 72,
"toolComponent": {
"name": "QDJVM"
}
@@ -58417,7 +58797,7 @@
},
{
"name": "com.intellij.jsp",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "ELDeferredExpressionsInspection",
@@ -58442,7 +58822,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58476,7 +58856,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58510,7 +58890,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58544,7 +58924,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58578,7 +58958,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58612,7 +58992,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58646,7 +59026,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58680,7 +59060,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58714,7 +59094,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58748,7 +59128,41 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FunctionELReferenceInspection",
+ "shortDescription": {
+ "text": "EL method function parameters count"
+ },
+ "fullDescription": {
+ "text": "Reports different number of formal and actual parameters in EL function call.",
+ "markdown": "Reports different number of formal and actual parameters in EL function call."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "ideaSeverity": "ERROR",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSP",
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58782,7 +59196,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58816,7 +59230,7 @@
{
"target": {
"id": "JSP",
- "index": 75,
+ "index": 74,
"toolComponent": {
"name": "QDJVM"
}
@@ -58837,7 +59251,7 @@
},
{
"name": "Lombook Plugin",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "RedundantModifiersUtilityClassLombok",
@@ -58862,7 +59276,7 @@
{
"target": {
"id": "Java/Lombok/Redundant modifiers",
- "index": 80,
+ "index": 79,
"toolComponent": {
"name": "QDJVM"
}
@@ -58896,7 +59310,7 @@
{
"target": {
"id": "Java/Lombok",
- "index": 79,
+ "index": 78,
"toolComponent": {
"name": "QDJVM"
}
@@ -58930,7 +59344,7 @@
{
"target": {
"id": "Java/Lombok/Redundant modifiers",
- "index": 80,
+ "index": 79,
"toolComponent": {
"name": "QDJVM"
}
@@ -58964,7 +59378,7 @@
{
"target": {
"id": "Java/Lombok/Redundant definitions",
- "index": 151,
+ "index": 149,
"toolComponent": {
"name": "QDJVM"
}
@@ -58998,7 +59412,7 @@
{
"target": {
"id": "Java/Lombok/Redundant modifiers",
- "index": 80,
+ "index": 79,
"toolComponent": {
"name": "QDJVM"
}
@@ -59032,7 +59446,7 @@
{
"target": {
"id": "Java/Lombok",
- "index": 79,
+ "index": 78,
"toolComponent": {
"name": "QDJVM"
}
@@ -59066,7 +59480,7 @@
{
"target": {
"id": "Java/Lombok",
- "index": 79,
+ "index": 78,
"toolComponent": {
"name": "QDJVM"
}
@@ -59087,7 +59501,7 @@
},
{
"name": "com.intellij.javaee.web",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "MimeType",
@@ -59112,7 +59526,7 @@
{
"target": {
"id": "Java EE",
- "index": 72,
+ "index": 70,
"toolComponent": {
"name": "QDJVM"
}
@@ -59146,7 +59560,7 @@
{
"target": {
"id": "Java EE",
- "index": 72,
+ "index": 70,
"toolComponent": {
"name": "QDJVM"
}
@@ -59180,7 +59594,7 @@
{
"target": {
"id": "Java EE",
- "index": 72,
+ "index": 70,
"toolComponent": {
"name": "QDJVM"
}
@@ -59214,7 +59628,7 @@
{
"target": {
"id": "Java EE",
- "index": 72,
+ "index": 70,
"toolComponent": {
"name": "QDJVM"
}
@@ -59235,7 +59649,7 @@
},
{
"name": "com.intellij.uiDesigner",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "InvalidPropertyKeyForm",
@@ -59260,7 +59674,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59294,7 +59708,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59328,7 +59742,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59362,7 +59776,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59396,7 +59810,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59430,7 +59844,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59464,7 +59878,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59498,7 +59912,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59532,7 +59946,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59566,7 +59980,7 @@
{
"target": {
"id": "UI form",
- "index": 82,
+ "index": 81,
"toolComponent": {
"name": "QDJVM"
}
@@ -59587,7 +60001,7 @@
},
{
"name": "org.intellij.plugins.staticAnalysis",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "JavaAnnotator",
@@ -59612,7 +60026,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -59646,7 +60060,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -59680,7 +60094,7 @@
{
"target": {
"id": "General",
- "index": 37,
+ "index": 38,
"toolComponent": {
"name": "QDJVM"
}
@@ -59701,7 +60115,7 @@
},
{
"name": "AntSupport",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "AntMissingPropertiesFileInspection",
@@ -59726,7 +60140,7 @@
{
"target": {
"id": "Ant",
- "index": 90,
+ "index": 89,
"toolComponent": {
"name": "QDJVM"
}
@@ -59760,7 +60174,7 @@
{
"target": {
"id": "Ant",
- "index": 90,
+ "index": 89,
"toolComponent": {
"name": "QDJVM"
}
@@ -59794,7 +60208,7 @@
{
"target": {
"id": "Ant",
- "index": 90,
+ "index": 89,
"toolComponent": {
"name": "QDJVM"
}
@@ -59815,7 +60229,7 @@
},
{
"name": "com.jetbrains.jax.ws",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "ValidExternallyBoundObject",
@@ -59840,7 +60254,7 @@
{
"target": {
"id": "Web services",
- "index": 94,
+ "index": 93,
"toolComponent": {
"name": "QDJVM"
}
@@ -59874,7 +60288,7 @@
{
"target": {
"id": "Web services",
- "index": 94,
+ "index": 93,
"toolComponent": {
"name": "QDJVM"
}
@@ -59908,7 +60322,7 @@
{
"target": {
"id": "Web services",
- "index": 94,
+ "index": 93,
"toolComponent": {
"name": "QDJVM"
}
@@ -59942,7 +60356,7 @@
{
"target": {
"id": "Web services",
- "index": 94,
+ "index": 93,
"toolComponent": {
"name": "QDJVM"
}
@@ -59976,7 +60390,7 @@
{
"target": {
"id": "WSDL",
- "index": 150,
+ "index": 148,
"toolComponent": {
"name": "QDJVM"
}
@@ -60010,7 +60424,7 @@
{
"target": {
"id": "Web services",
- "index": 94,
+ "index": 93,
"toolComponent": {
"name": "QDJVM"
}
@@ -60044,7 +60458,7 @@
{
"target": {
"id": "Web services",
- "index": 94,
+ "index": 93,
"toolComponent": {
"name": "QDJVM"
}
@@ -60065,7 +60479,7 @@
},
{
"name": "HtmlTools",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "HtmlDeprecatedTag",
@@ -60124,7 +60538,7 @@
{
"target": {
"id": "HTML/Accessibility",
- "index": 111,
+ "index": 110,
"toolComponent": {
"name": "QDJVM"
}
@@ -60192,7 +60606,7 @@
{
"target": {
"id": "HTML/Accessibility",
- "index": 111,
+ "index": 110,
"toolComponent": {
"name": "QDJVM"
}
@@ -60226,7 +60640,7 @@
{
"target": {
"id": "HTML/Accessibility",
- "index": 111,
+ "index": 110,
"toolComponent": {
"name": "QDJVM"
}
@@ -60260,7 +60674,7 @@
{
"target": {
"id": "HTML/Accessibility",
- "index": 111,
+ "index": 110,
"toolComponent": {
"name": "QDJVM"
}
@@ -60328,7 +60742,7 @@
{
"target": {
"id": "HTML/Accessibility",
- "index": 111,
+ "index": 110,
"toolComponent": {
"name": "QDJVM"
}
@@ -60396,7 +60810,7 @@
{
"target": {
"id": "HTML/Accessibility",
- "index": 111,
+ "index": 110,
"toolComponent": {
"name": "QDJVM"
}
@@ -60451,7 +60865,7 @@
},
{
"name": "com.intellij.aop",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "DeclareParentsInspection",
@@ -60476,7 +60890,7 @@
{
"target": {
"id": "AOP",
- "index": 115,
+ "index": 114,
"toolComponent": {
"name": "QDJVM"
}
@@ -60510,7 +60924,7 @@
{
"target": {
"id": "AOP",
- "index": 115,
+ "index": 114,
"toolComponent": {
"name": "QDJVM"
}
@@ -60544,7 +60958,7 @@
{
"target": {
"id": "AOP",
- "index": 115,
+ "index": 114,
"toolComponent": {
"name": "QDJVM"
}
@@ -60578,7 +60992,7 @@
{
"target": {
"id": "AOP",
- "index": 115,
+ "index": 114,
"toolComponent": {
"name": "QDJVM"
}
@@ -60612,7 +61026,7 @@
{
"target": {
"id": "AOP",
- "index": 115,
+ "index": 114,
"toolComponent": {
"name": "QDJVM"
}
@@ -60633,7 +61047,7 @@
},
{
"name": "com.intellij.beanValidation",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "BvConfigDomInspection",
@@ -60658,7 +61072,7 @@
{
"target": {
"id": "Bean Validation",
- "index": 116,
+ "index": 115,
"toolComponent": {
"name": "QDJVM"
}
@@ -60692,7 +61106,7 @@
{
"target": {
"id": "Bean Validation",
- "index": 116,
+ "index": 115,
"toolComponent": {
"name": "QDJVM"
}
@@ -60726,7 +61140,7 @@
{
"target": {
"id": "Bean Validation",
- "index": 116,
+ "index": 115,
"toolComponent": {
"name": "QDJVM"
}
@@ -60747,7 +61161,7 @@
},
{
"name": "com.intellij.spring.websocket",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "SpringWebSocketConfigurationInspection",
@@ -60772,7 +61186,7 @@
{
"target": {
"id": "Spring/Spring WebSocket",
- "index": 121,
+ "index": 119,
"toolComponent": {
"name": "QDJVM"
}
@@ -60793,7 +61207,7 @@
},
{
"name": "com.intellij.spring.security",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "SpringSecurityModelInspection",
@@ -60818,7 +61232,7 @@
{
"target": {
"id": "Spring/Spring Security",
- "index": 130,
+ "index": 128,
"toolComponent": {
"name": "QDJVM"
}
@@ -60852,7 +61266,7 @@
{
"target": {
"id": "Spring/Spring Security",
- "index": 130,
+ "index": 128,
"toolComponent": {
"name": "QDJVM"
}
@@ -60886,7 +61300,7 @@
{
"target": {
"id": "Spring/Spring Security",
- "index": 130,
+ "index": 128,
"toolComponent": {
"name": "QDJVM"
}
@@ -60932,7 +61346,7 @@
{
"target": {
"id": "Feature usage statistics",
- "index": 132,
+ "index": 130,
"toolComponent": {
"name": "QDJVM"
}
@@ -60966,7 +61380,7 @@
{
"target": {
"id": "Feature usage statistics",
- "index": 132,
+ "index": 130,
"toolComponent": {
"name": "QDJVM"
}
@@ -60987,7 +61401,7 @@
},
{
"name": "com.intellij.spring.data",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "SpringDataMethodInconsistencyInspection",
@@ -61012,7 +61426,7 @@
{
"target": {
"id": "Spring/Spring Data",
- "index": 133,
+ "index": 131,
"toolComponent": {
"name": "QDJVM"
}
@@ -61046,7 +61460,7 @@
{
"target": {
"id": "Spring/Spring Data",
- "index": 133,
+ "index": 131,
"toolComponent": {
"name": "QDJVM"
}
@@ -61080,7 +61494,7 @@
{
"target": {
"id": "Spring/Spring Data",
- "index": 133,
+ "index": 131,
"toolComponent": {
"name": "QDJVM"
}
@@ -61100,23 +61514,23 @@
"isComprehensive": false
},
{
- "name": "Weblogic",
- "version": "213.7162",
+ "name": "W3Validators",
+ "version": "222.4502",
"rules": [
{
- "id": "Weblogic",
+ "id": "W3CssValidation",
"shortDescription": {
- "text": "WebLogic"
+ "text": "W3C CSS validator"
},
"fullDescription": {
- "text": "Reports incorrect JBoss-specific XML deployment descriptors. References to non-instantiable classes References to classes that do not extend a required class References to classes with inappropriate scope Empty tag and attribute values Tag and attribute values that do not match a required pattern (for example, Java Identifiers) Tags that do not include required children tags or attributes Tags that define objects with duplicate names",
- "markdown": "Reports incorrect JBoss-specific XML deployment descriptors.\n\n* References to non-instantiable classes\n* References to classes that do not extend a required class\n* References to classes with inappropriate scope\n* Empty tag and attribute values\n* Tag and attribute values that do not match a required pattern (for example, Java Identifiers)\n* Tags that do not include required children tags or attributes\n* Tags that define objects with duplicate names"
+ "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/)."
},
"defaultConfiguration": {
"enabled": false,
- "level": "error",
+ "level": "warning",
"parameters": {
- "ideaSeverity": "ERROR",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -61125,8 +61539,8 @@
"relationships": [
{
"target": {
- "id": "Application servers",
- "index": 136,
+ "id": "CSS/Code quality tools",
+ "index": 134,
"toolComponent": {
"name": "QDJVM"
}
@@ -61146,17 +61560,17 @@
"isComprehensive": false
},
{
- "name": "W3Validators",
- "version": "213.7162",
+ "name": "org.jetbrains.plugins.gradle",
+ "version": "222.4502",
"rules": [
{
- "id": "W3CssValidation",
+ "id": "MultipleRepositoryUrls",
"shortDescription": {
- "text": "W3C CSS validator"
+ "text": "Multiple repository urls"
},
"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 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,
@@ -61171,7 +61585,75 @@
"relationships": [
{
"target": {
- "id": "CSS/Code quality tools",
+ "id": "Gradle/Probable bugs",
+ "index": 137,
+ "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",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Gradle/Probable bugs",
+ "index": 137,
+ "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",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Gradle/Probable bugs",
"index": 137,
"toolComponent": {
"name": "QDJVM"
@@ -61192,17 +61674,51 @@
"isComprehensive": false
},
{
- "name": "org.jetbrains.plugins.gradle",
- "version": "213.7162",
+ "name": "com.intellij.spring.boot",
+ "version": "222.4502",
"rules": [
{
- "id": "MultipleRepositoryUrls",
+ "id": "SpringBootApplicationSetup",
"shortDescription": {
- "text": "Multiple repository urls"
+ "text": "Invalid Spring Boot application setup"
},
"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."
+ "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": true,
+ "level": "error",
+ "parameters": {
+ "ideaSeverity": "ERROR",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Spring/Spring Boot",
+ "index": 138,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SpringShellReferencesInspection",
+ "shortDescription": {
+ "text": "Invalid Spring Shell references"
+ },
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -61217,8 +61733,8 @@
"relationships": [
{
"target": {
- "id": "Gradle/Probable bugs",
- "index": 140,
+ "id": "Spring/Spring Shell",
+ "index": 139,
"toolComponent": {
"name": "QDJVM"
}
@@ -61230,16 +61746,50 @@
]
},
{
- "id": "BintrayPublishingPlugin",
+ "id": "SpringBootAdditionalConfig",
"shortDescription": {
- "text": "Bintray publishing plugin may stop working on May 1st, 2021"
+ "text": "Invalid additional-spring-configuration-metadata.json"
},
"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 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": false,
+ "enabled": true,
+ "level": "error",
+ "parameters": {
+ "ideaSeverity": "ERROR",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Spring/Spring Boot",
+ "index": 138,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SpringBootReactorHooksOnDebug",
+ "shortDescription": {
+ "text": "Suspicious Hooks.onOperatorDebug() usage"
+ },
+ "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."
+ },
+ "defaultConfiguration": {
+ "enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING",
@@ -61251,8 +61801,8 @@
"relationships": [
{
"target": {
- "id": "Gradle/Probable bugs",
- "index": 140,
+ "id": "Spring/Spring Boot",
+ "index": 138,
"toolComponent": {
"name": "QDJVM"
}
@@ -61264,13 +61814,81 @@
]
},
{
- "id": "JCenterRepository",
+ "id": "ConfigurationProperties",
"shortDescription": {
- "text": "Builds will no longer be able to resolve artifacts from JCenter after February 1st, 2022"
+ "text": "Invalid @ConfigurationProperties"
},
"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 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": "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"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Spring/Spring Boot",
+ "index": 138,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SpringShellCommandInspection",
+ "shortDescription": {
+ "text": "Incorrect Spring Shell command declarations"
+ },
+ "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"
},
"defaultConfiguration": {
"enabled": false,
@@ -61285,8 +61903,8 @@
"relationships": [
{
"target": {
- "id": "Gradle/Probable bugs",
- "index": 140,
+ "id": "Spring/Spring Shell",
+ "index": 139,
"toolComponent": {
"name": "QDJVM"
}
@@ -61306,8 +61924,8 @@
"isComprehensive": false
},
{
- "name": "com.intellij.microservices.uast",
- "version": "213.7162",
+ "name": "com.intellij.microservices.jvm",
+ "version": "222.4502",
"rules": [
{
"id": "UastIncorrectMimeTypeInspection",
@@ -61387,7 +62005,7 @@
},
{
"name": "com.intellij.spring.ws",
- "version": "213.7162",
+ "version": "222.4502",
"rules": [
{
"id": "SpringWebServiceAnnotationsInconsistencyInspection",
@@ -61412,7 +62030,7 @@
{
"target": {
"id": "Spring/Spring Web Services",
- "index": 145,
+ "index": 143,
"toolComponent": {
"name": "QDJVM"
}
@@ -61446,7 +62064,7 @@
{
"target": {
"id": "Spring/Spring Web Services",
- "index": 145,
+ "index": 143,
"toolComponent": {
"name": "QDJVM"
}
@@ -61480,7 +62098,7 @@
{
"target": {
"id": "Spring/Spring Web Services",
- "index": 145,
+ "index": 143,
"toolComponent": {
"name": "QDJVM"
}
@@ -61500,17 +62118,17 @@
"isComprehensive": false
},
{
- "name": "com.intellij.javaee.el",
- "version": "213.7162",
+ "name": "com.intellij.plugins.dependencyAnalysis",
+ "version": "222.4502",
"rules": [
{
- "id": "ELValidationInspection",
+ "id": "CheckDependencyLicenses",
"shortDescription": {
- "text": "EL validation"
+ "text": "Check dependency licenses"
},
"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": "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,
@@ -61525,8 +62143,8 @@
"relationships": [
{
"target": {
- "id": "EL",
- "index": 149,
+ "id": "Dependency analysis",
+ "index": 146,
"toolComponent": {
"name": "QDJVM"
}
@@ -61536,27 +62154,15 @@
]
}
]
- }
- ],
- "language": "en-US",
- "contents": [
- "localizedData",
- "nonLocalizedData"
- ],
- "isComprehensive": false
- },
- {
- "name": "com.intellij.spring.mvc",
- "version": "213.7162",
- "rules": [
+ },
{
- "id": "SpringMVCViewInspection",
+ "id": "CheckModuleLicenses",
"shortDescription": {
- "text": "Unresolved view reference"
+ "text": "Check module licenses"
},
"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": "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,
@@ -61571,8 +62177,8 @@
"relationships": [
{
"target": {
- "id": "Spring/Spring MVC",
- "index": 152,
+ "id": "Dependency analysis",
+ "index": 146,
"toolComponent": {
"name": "QDJVM"
}
@@ -61584,19 +62190,19 @@
]
},
{
- "id": "SpringMVCInitBinder",
+ "id": "IncorrectProjectDependenciesConfiguration",
"shortDescription": {
- "text": "Non-void @InitBinder method"
+ "text": "Check configuration of project dependencies"
},
"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`."
+ "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": false,
- "level": "error",
+ "level": "warning",
"parameters": {
- "ideaSeverity": "ERROR",
+ "ideaSeverity": "WARNING",
"tags": [
"ideaSeverity"
]
@@ -61605,8 +62211,8 @@
"relationships": [
{
"target": {
- "id": "Spring/Spring MVC",
- "index": 152,
+ "id": "Dependency analysis",
+ "index": 146,
"toolComponent": {
"name": "QDJVM"
}
@@ -61618,13 +62224,13 @@
]
},
{
- "id": "MVCPathVariableInspection",
+ "id": "CheckThirdPartySoftwareList",
"shortDescription": {
- "text": "Mismatch in @PathVariable declarations and usages"
+ "text": "Check third party software list"
},
"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": "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": false,
@@ -61639,8 +62245,8 @@
"relationships": [
{
"target": {
- "id": "Spring/Spring MVC",
- "index": 152,
+ "id": "Dependency analysis",
+ "index": 146,
"toolComponent": {
"name": "QDJVM"
}
@@ -61660,20 +62266,100 @@
"isComprehensive": false
},
{
- "name": "com.intellij.spring.batch",
- "version": "213.7162",
+ "name": "com.intellij.javaee.el",
+ "version": "222.4502",
"rules": [
{
- "id": "SpringBatchModel",
+ "id": "ELValidationInspection",
"shortDescription": {
- "text": "Incorrect Spring Batch XML-based application context"
+ "text": "EL validation"
},
"fullDescription": {
- "text": "Reports Spring Batch XML-based application context issues: Unresolved bean references Missing tags and attributes Incorrect property types Inconsistent 'enum' properties Incorrect types of referenced beans Example: '<beans ... >\n <batch:job id=\"\" <!-- Value must not be empty -->\n incrementer=\"dummyBean\" <!-- Bean must be of 'org.springframework.batch.core.JobParametersIncrementer' type -->\n job-repository=\"transactionManager\" <!-- Bean must be of 'org.springframework.batch.core.repository.JobRepository' type -->\n parent=\"INVALID_VALUE\" <!-- Cannot resolve job INVALID_VALUE -->\n restartable=\"INVALID_VALUE\"> <!-- Cannot resolve symbol INVALID_VALUE -->\n <batch:validator\n ref=\"dataSource\"> <!-- Bean must be of 'org.springframework.batch.core.JobParametersValidator' type -->\n </batch:validator>\n </batch:job>\n <batch:job-repository/>\n\n <bean id=\"dataSource\" class=\"org.springframework.jdbc.datasource.DelegatingDataSource\"/>\n <bean id=\"transactionManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"/>\n\n <bean id=\"dummyBean\" class=\"java.lang.String\"/>\n</beans>'",
- "markdown": "Reports [Spring Batch](https://spring.io/projects/spring-batch) XML-based application context issues:\n\n* Unresolved bean references\n* Missing tags and attributes\n* Incorrect property types\n* Inconsistent `enum` properties\n* Incorrect types of referenced beans\n\n**Example:**\n\n\n <beans ... >\n <batch:job id=\"\" <!-- Value must not be empty -->\n incrementer=\"dummyBean\" <!-- Bean must be of 'org.springframework.batch.core.JobParametersIncrementer' type -->\n job-repository=\"transactionManager\" <!-- Bean must be of 'org.springframework.batch.core.repository.JobRepository' type -->\n parent=\"INVALID_VALUE\" <!-- Cannot resolve job INVALID_VALUE -->\n restartable=\"INVALID_VALUE\"> <!-- Cannot resolve symbol INVALID_VALUE -->\n <batch:validator\n ref=\"dataSource\"> <!-- Bean must be of 'org.springframework.batch.core.JobParametersValidator' type -->\n </batch:validator>\n </batch:job>\n <batch:job-repository/>\n\n <bean id=\"dataSource\" class=\"org.springframework.jdbc.datasource.DelegatingDataSource\"/>\n <bean id=\"transactionManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"/>\n\n <bean id=\"dummyBean\" class=\"java.lang.String\"/>\n </beans>\n"
+ "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": true,
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EL",
+ "index": 147,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.spring.mvc",
+ "version": "222.4502",
+ "rules": [
+ {
+ "id": "SpringMVCViewInspection",
+ "shortDescription": {
+ "text": "Unresolved view reference"
+ },
+ "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```"
+ },
+ "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",
@@ -61685,8 +62371,42 @@
"relationships": [
{
"target": {
- "id": "Spring/Spring Batch",
- "index": 154,
+ "id": "Spring/Spring MVC",
+ "index": 150,
+ "toolComponent": {
+ "name": "QDJVM"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MVCPathVariableInspection",
+ "shortDescription": {
+ "text": "Mismatch in @PathVariable declarations and usages"
+ },
+ "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"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "ideaSeverity": "WARNING",
+ "tags": [
+ "ideaSeverity"
+ ]
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Spring/Spring MVC",
+ "index": 150,
"toolComponent": {
"name": "QDJVM"
}
@@ -61713,7 +62433,7 @@
"toolExecutionNotifications": [
{
"message": {
- "text": "Reporting from [\"Kotlin annotator\"] 'sanity' inspections was suspended due to high problems count."
+ "text": "Reporting from [\"Java annotator\", \"Kotlin annotator\"] 'sanity' inspections was suspended due to high problems count."
},
"level": "error"
}
@@ -61725,13 +62445,15 @@
"versionControlProvenance": [
{
"repositoryUri": "https://github.com/Kotlin/dokka",
- "revisionId": "cab4eb11ca5203af3b229aee11111c603cd563fe",
- "branch": "master",
+ "revisionId": "b6da4e040142caa072b1fbec0e0c980b5da58a0e",
+ "branch": "update-qodana",
"properties": {
- "lastAuthorName": "Ignat Beresnev",
+ "repoUrl": "https://github.com/Kotlin/dokka",
+ "lastAuthorName": "IgnatBeresnev",
"vcsType": "Git",
"lastAuthorEmail": "ignat.beresnev@jetbrains.com",
"tags": [
+ "repoUrl",
"lastAuthorEmail",
"lastAuthorName",
"vcsType"
@@ -61745,1015 +62467,8 @@
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : FunctionDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : FunctionDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 62,
- "startColumn": 38,
- "charOffset": 2521,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 60,
- "startColumn": 1,
- "charOffset": 2434,
- "charLength": 254,
- "snippet": {
- "text": " compareBy(\n { it is ClassDescriptor },\n { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },\n { (it as? FunctionDescriptor)?.valueParameters?.joinToString { it.type.toString() } }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6a3d3f6299b2d4c778dbe39905c152a12ae75ac8fda8e88ade8eba831fec3ff8"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : FunctionDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : FunctionDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 63,
- "startColumn": 38,
- "charOffset": 2568,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 61,
- "startColumn": 1,
- "charOffset": 2449,
- "charLength": 245,
- "snippet": {
- "text": " { it is ClassDescriptor },\n { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },\n { (it as? FunctionDescriptor)?.valueParameters?.joinToString { it.type.toString() } }\n )"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5bfa6ffae8665e57950b929c83e3c0a36565cd139161652a13697defd209541a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 63,
- "startColumn": 55,
- "charOffset": 2585,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 61,
- "startColumn": 1,
- "charOffset": 2449,
- "charLength": 245,
- "snippet": {
- "text": " { it is ClassDescriptor },\n { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },\n { (it as? FunctionDescriptor)?.valueParameters?.joinToString { it.type.toString() } }\n )"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0df5d86b6b8d48d7931f25b10bb5ba01c8c4c396ea50de919d2671996d8cfa09"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : FunctionDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : FunctionDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 64,
- "startColumn": 38,
- "charOffset": 2632,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 62,
- "startColumn": 1,
- "charOffset": 2484,
- "charLength": 212,
- "snippet": {
- "text": " { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },\n { (it as? FunctionDescriptor)?.valueParameters?.joinToString { it.type.toString() } }\n )\n)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "250ddca9afc182c9a1e059383587eecc1fe534ea25671af28ad9ad577c96ee95"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 64,
- "startColumn": 55,
- "charOffset": 2649,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 62,
- "startColumn": 1,
- "charOffset": 2484,
- "charLength": 212,
- "snippet": {
- "text": " { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },\n { (it as? FunctionDescriptor)?.valueParameters?.joinToString { it.type.toString() } }\n )\n)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "402ca5295fe61ff821276e4dfed565ebef0091bf986e3aa8810b959e13997330"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ModuleDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : ModuleDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 35,
- "startColumn": 43,
- "charOffset": 1611,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 33,
- "startColumn": 1,
- "charOffset": 1441,
- "charLength": 305,
- "snippet": {
- "text": ") = ModuleAndPackageDocumentationParsingContext { fragment, sourceLocation ->\n val descriptor = when (fragment.classifier) {\n Module -> facade?.moduleDescriptor?.getPackage(FqName.topLevel(Name.identifier(\"\")))\n Package -> facade?.moduleDescriptor?.getPackage(FqName(fragment.name))\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2fe7f6ef72ff46b1dfb6ed868d7825a4c0e66726c887a12280f655925f9f1e1b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ModuleDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : ModuleDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 36,
- "startColumn": 44,
- "charOffset": 1705,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 34,
- "startColumn": 1,
- "charOffset": 1519,
- "charLength": 228,
- "snippet": {
- "text": " val descriptor = when (fragment.classifier) {\n Module -> facade?.moduleDescriptor?.getPackage(FqName.topLevel(Name.identifier(\"\")))\n Package -> facade?.moduleDescriptor?.getPackage(FqName(fragment.name))\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ac45528727035c8cce101cde5574153fb5873eef66fa43d967d60c59794ef5e6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 48,
- "startColumn": 41,
- "charOffset": 2111,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 46,
- "startColumn": 1,
- "charOffset": 2009,
- "charLength": 197,
- "snippet": {
- "text": " null,\n link.split('.')\n ).sorted().firstOrNull()?.let { DRI.from(it) }\n } else null\n } catch (e1: IllegalArgumentException) {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f3884d8a04f70181d4f881105d89a8ab6aa4ad491ee17611d715db4a15771f3a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for node.safeAs()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for node.safeAs()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/PackageListService.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 33,
- "startColumn": 24,
- "charOffset": 1498,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 31,
- "startColumn": 1,
- "charOffset": 1417,
- "charLength": 309,
- "snippet": {
- "text": "\n val contentPage = node.safeAs<ContentPage>()\n contentPage?.dri?.forEach { dri ->\n val nodeLocation = locationProvider.resolve(node, context = module, skipExtension = true)\n ?: run { context.logger.error(\"Cannot resolve path for ${node.name}!\"); null }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3be75a390b1e2306d7c831df3bed6fad7cb4ac2d14fae8c865491dc5588009ee"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/PackageListService.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 33,
- "startColumn": 29,
- "charOffset": 1503,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 31,
- "startColumn": 1,
- "charOffset": 1417,
- "charLength": 309,
- "snippet": {
- "text": "\n val contentPage = node.safeAs<ContentPage>()\n contentPage?.dri?.forEach { dri ->\n val nodeLocation = locationProvider.resolve(node, context = module, skipExtension = true)\n ?: run { context.logger.error(\"Cannot resolve path for ${node.name}!\"); null }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5010e2d7aa04db09a76db35ae59a0c337b7140d53acb1e123c7f1b93bbc7c94f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/exceptionTag.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 14,
- "startColumn": 14,
- "charOffset": 552,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 12,
- "startColumn": 1,
- "charOffset": 481,
- "charLength": 82,
- "snippet": {
- "text": "\ninternal fun PsiElement.resolveToGetDri(): PsiElement? =\n reference?.resolve()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e5d13266d5090fa73b5205120b7109ac083226d661c4fb83ba929adf41b46a4c"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/PsiInheritance.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 36,
- "startColumn": 24,
- "charOffset": 1494,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 34,
- "startColumn": 1,
- "charOffset": 1393,
- "charLength": 249,
- "snippet": {
- "text": " val kPropertyFqName = FqName(\"kotlin.reflect.KProperty\")\n if (\n this.parent?.safeAs<PsiClass>()?.implementsInterface(kPropertyFqName) == true &&\n (this.name == \"getSetter\" || this.name == \"getGetter\")\n ) {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "99075aaa3eb14ec52fc021c59c9856fa0aeaabe452d18fce7f7597967a618737"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/PsiInheritance.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 36,
- "startColumn": 44,
- "charOffset": 1514,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 34,
- "startColumn": 1,
- "charOffset": 1393,
- "charLength": 249,
- "snippet": {
- "text": " val kPropertyFqName = FqName(\"kotlin.reflect.KProperty\")\n if (\n this.parent?.safeAs<PsiClass>()?.implementsInterface(kPropertyFqName) == true &&\n (this.name == \"getSetter\" || this.name == \"getGetter\")\n ) {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "556cfca0fdcdc3d67351f0e3351e8ad3890c693a7aa1081443866a0f017df5dd"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type ???",
- "markdown": "Unnecessary safe call on a non-null receiver of type ???"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultExternalDocumentablesProvider.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 28,
- "startColumn": 16,
- "charOffset": 1431,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 26,
- "startColumn": 1,
- "charOffset": 1238,
- "charLength": 336,
- "snippet": {
- "text": " val packageDsc = analysis[sourceSet].facade.moduleDescriptor.getPackage(pkg)\n val classDsc = names.fold<String, DeclarationDescriptor?>(packageDsc) { dsc, name ->\n dsc?.scope?.getDescriptorsFiltered { it.identifier == name }\n ?.filterIsInstance<ClassDescriptor>()\n ?.firstOrNull()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d504d63f557eb01ab2a9cc89e12062b391670e56f79bc516804d2bcd06a3a494"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultExternalDocumentablesProvider.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 28,
- "startColumn": 23,
- "charOffset": 1438,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 26,
- "startColumn": 1,
- "charOffset": 1238,
- "charLength": 336,
- "snippet": {
- "text": " val packageDsc = analysis[sourceSet].facade.moduleDescriptor.getPackage(pkg)\n val classDsc = names.fold<String, DeclarationDescriptor?>(packageDsc) { dsc, name ->\n dsc?.scope?.getDescriptorsFiltered { it.identifier == name }\n ?.filterIsInstance<ClassDescriptor>()\n ?.firstOrNull()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "8807f430c3b2a020801cdb288ccccd5e8ee22925fbdefb8656bb8773a5baf191"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultExternalDocumentablesProvider.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 29,
- "startColumn": 17,
- "charOffset": 1505,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 27,
- "startColumn": 1,
- "charOffset": 1323,
- "charLength": 261,
- "snippet": {
- "text": " val classDsc = names.fold<String, DeclarationDescriptor?>(packageDsc) { dsc, name ->\n dsc?.scope?.getDescriptorsFiltered { it.identifier == name }\n ?.filterIsInstance<ClassDescriptor>()\n ?.firstOrNull()\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9379e2fd3eaa0901b067cb119f1fddb1dc500d70102b0c0cf13a077a97713b7f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultExternalDocumentablesProvider.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 30,
- "startColumn": 17,
- "charOffset": 1559,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 28,
- "startColumn": 1,
- "charOffset": 1416,
- "charLength": 169,
- "snippet": {
- "text": " dsc?.scope?.getDescriptorsFiltered { it.identifier == name }\n ?.filterIsInstance<ClassDescriptor>()\n ?.firstOrNull()\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1e2133868cca7422f83d90920d0fccc927fb0ed4ee4c0a0418c7269c732f596a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ClassDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : ClassDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultExternalDocumentablesProvider.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 33,
- "startColumn": 46,
- "charOffset": 1631,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 31,
- "startColumn": 1,
- "charOffset": 1575,
- "charLength": 123,
- "snippet": {
- "text": " }\n\n return (classDsc as? ClassDescriptor)?.let { translator.translateClassDescriptor(it, sourceSet) }\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5a7bfc60bb6101c862b50b5120706aeea9ac5f900c9df26a197e14b27bf97aa2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for it.safeAs()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for it.safeAs()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/documentables/briefFromContentNodes.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 21,
- "startColumn": 99,
- "charOffset": 911,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 19,
- "startColumn": 1,
- "charOffset": 694,
- "charLength": 272,
- "snippet": {
- "text": "\n //Description that is entirely based on html content. In html it is hard to define a brief so we render all of it\n if(description.all { it.withDescendants().all { it is ContentGroup || it.safeAs<ContentText>()?.isHtml == true } }){\n return description\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e588db9b16fe769b97fbc4f4e1ef031dcade80a167bd4cdfa0dc90da1b626f34"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiMethod]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiMethod\\]?"
+ "text": "Remove deprecated symbol import",
+ "markdown": "Remove deprecated symbol import"
},
"locations": [
{
@@ -62763,75 +62478,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 67,
- "startColumn": 63,
- "charOffset": 2587,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 65,
+ "startLine": 9,
"startColumn": 1,
- "charOffset": 2457,
- "charLength": 327,
+ "charOffset": 297,
+ "charLength": 67,
"snippet": {
- "text": " exceptionFqName: String\n ): List<DocumentationContent> {\n val closestDocs = (currentElement.owner as? PsiMethod)?.let { method -> lowestMethodsWithTag(method, tag) }\n .orEmpty().firstOrNull {\n findClosestDocComment(it, logger)?.hasTagWithExceptionOfType(tag, exceptionFqName) == true"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a50ba36b930469a71bba615c7ba9ff28bfbb164a33b63a3b36d6a1a804221f1f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 72,
- "startColumn": 33,
- "charOffset": 2832,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "text": "import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 70,
+ "startLine": 7,
"startColumn": 1,
- "charOffset": 2785,
- "charLength": 232,
+ "charOffset": 206,
+ "charLength": 268,
"snippet": {
- "text": " }\n\n return when (closestDocs?.language?.id) {\n \"kotlin\" -> closestDocs.toKdocComment()?.tagsByName(tag, exceptionFqName).orEmpty()\n else -> closestDocs?.docComment?.tagsByName(tag)?.flatMap {"
+ "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"
}
}
},
@@ -62844,7 +62506,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "8529fa34cecbaf69c52e90df3fc30cf7ea3e855fd8e4bd02157b2dee76fd164e"
+ "equalIndicator/v1": "1b2c64c75c66d200ac5d295a3d1fcc696adf61038a3a239b541187003687fa5b"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -62854,5933 +62516,1057 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/InheritDocResolver.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/context/MockContext.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 72,
- "startColumn": 43,
- "charOffset": 2842,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 70,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 2785,
- "charLength": 232,
- "snippet": {
- "text": " }\n\n return when (closestDocs?.language?.id) {\n \"kotlin\" -> closestDocs.toKdocComment()?.tagsByName(tag, exceptionFqName).orEmpty()\n else -> closestDocs?.docComment?.tagsByName(tag)?.flatMap {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "42d7857ad1aecbf19c2821638ccae237be6ddb1425c77757a61f7ebbd21e480a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 73,
- "startColumn": 52,
- "charOffset": 2901,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 43,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.testApi.context"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 71,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 2799,
- "charLength": 246,
+ "charOffset": 0,
+ "charLength": 90,
"snippet": {
- "text": "\n return when (closestDocs?.language?.id) {\n \"kotlin\" -> closestDocs.toKdocComment()?.tagsByName(tag, exceptionFqName).orEmpty()\n else -> closestDocs?.docComment?.tagsByName(tag)?.flatMap {\n when (it) {"
+ "text": "package org.jetbrains.dokka.testApi.context\n\nimport org.jetbrains.dokka.DokkaConfiguration"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "4a238b460a035076af9e1347c5a4785c226900e1c8b17a82ee52ead5abd12333"
+ "equalIndicator/v1": "8d9d2b3dafc0f7f9046c878bada2df1ea02253ad1d3c02abd57cdea36b2ca35f"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/InheritDocResolver.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 74,
- "startColumn": 32,
- "charOffset": 2977,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 72,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 2800,
- "charLength": 321,
- "snippet": {
- "text": " return when (closestDocs?.language?.id) {\n \"kotlin\" -> closestDocs.toKdocComment()?.tagsByName(tag, exceptionFqName).orEmpty()\n else -> closestDocs?.docComment?.tagsByName(tag)?.flatMap {\n when (it) {\n is PsiDocTag -> it.contentElementsWithSiblingIfNeeded()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "90296cf5cbc70208283c839e4526c80a1e5e04e98f006a9951224cff176676d7"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 74,
- "startColumn": 44,
- "charOffset": 2989,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 42,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.testApi.logger"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 72,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 2800,
- "charLength": 321,
+ "charOffset": 0,
+ "charLength": 92,
"snippet": {
- "text": " return when (closestDocs?.language?.id) {\n \"kotlin\" -> closestDocs.toKdocComment()?.tagsByName(tag, exceptionFqName).orEmpty()\n else -> closestDocs?.docComment?.tagsByName(tag)?.flatMap {\n when (it) {\n is PsiDocTag -> it.contentElementsWithSiblingIfNeeded()"
+ "text": "package org.jetbrains.dokka.testApi.logger\n\nimport org.jetbrains.dokka.utilities.DokkaLogger"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "f1a3e2c70dfca2494a8dad455fffa9996e5e8997c2cbbe498ba30a9a9030dd58"
+ "equalIndicator/v1": "25bbec7ca8f95528b9ecffc2488c1a5231ec9f9672a672f12d414949c1a6c931"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/InheritDocResolver.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 74,
- "startColumn": 61,
- "charOffset": 3006,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 72,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 2800,
- "charLength": 321,
- "snippet": {
- "text": " return when (closestDocs?.language?.id) {\n \"kotlin\" -> closestDocs.toKdocComment()?.tagsByName(tag, exceptionFqName).orEmpty()\n else -> closestDocs?.docComment?.tagsByName(tag)?.flatMap {\n when (it) {\n is PsiDocTag -> it.contentElementsWithSiblingIfNeeded()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f9522474bc887a3fd85b9f330f7a3baef04db0d5580e962c48424e0f1d51c104"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 79,
- "startColumn": 14,
- "charOffset": 3192,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 46,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.testApi.testRunner"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 77,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3122,
- "charLength": 161,
+ "charOffset": 0,
+ "charLength": 99,
"snippet": {
- "text": " else -> listOf(it)\n }\n }?.withoutReferenceLink().orEmpty().map { PsiDocumentationContent(it, tag) }\n }\n }"
+ "text": "package org.jetbrains.dokka.testApi.testRunner\n\nimport com.intellij.openapi.application.PathManager"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "4c14866412075920b391bdeb70faf8bbdc955c538ab4e5ec48cfe3fcd2efdc08"
+ "equalIndicator/v1": "d091bb5eb5d558992731ebba7999dda01ce1c9c952f5e9128f3565557c5572fe"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/InheritDocResolver.kt",
+ "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 126,
- "startColumn": 13,
- "charOffset": 5498,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 124,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5398,
- "charLength": 260,
- "snippet": {
- "text": " ): DocComment? =\n lowestMethodsWithTag(baseMethod, javadocTag).firstOrNull()\n ?.let { it.docComment?.let { JavaDocComment(it) } ?: it.toKdocComment() }\n\n private fun lowestMethodsWithTag(baseMethod: PsiMethod, javadocTag: JavadocTag) ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b5d2b8df88406a911b8fc0902c1dbc9414717b290980cd0cde8693e8af615a3c"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 126,
- "startColumn": 34,
- "charOffset": 5519,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 18,
"snippet": {
- "text": "?."
+ "text": "package signatures"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 124,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5398,
- "charLength": 260,
+ "charOffset": 0,
+ "charLength": 42,
"snippet": {
- "text": " ): DocComment? =\n lowestMethodsWithTag(baseMethod, javadocTag).firstOrNull()\n ?.let { it.docComment?.let { JavaDocComment(it) } ?: it.toKdocComment() }\n\n private fun lowestMethodsWithTag(baseMethod: PsiMethod, javadocTag: JavadocTag) ="
+ "text": "package signatures\n\nimport org.jsoup.Jsoup"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "b38dd78bbd21780a7a58317bca9e44742f6460bc25a3ae378a7d2c58cbf85d84"
+ "equalIndicator/v1": "74a48f0e72f0052655cb0015f90e066dd0812b06219fc5af2102f8b4eb0e4f63"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/InheritDocResolver.kt",
+ "uri": "plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 106,
- "startColumn": 33,
- "charOffset": 4624,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 104,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 4434,
- "charLength": 277,
- "snippet": {
- "text": " comment.comment.tagsByName(JavadocTag.PARAM)\n .filterIsInstance<PsiDocTag>().map { it.contentElementsWithSiblingIfNeeded() }.firstOrNull {\n it.firstOrNull()?.text == method.parameterList.parameters[parameterIndex].name\n }.orEmpty()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3184318418e0e4de4aeb2b6a33ab6e1b59f3617ef853c0d7acb108a4c16f6594"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/InheritDocResolver.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 114,
- "startColumn": 29,
- "charOffset": 5107,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 51,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.base.testApi.testRunner"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 112,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 4891,
- "charLength": 354,
+ "charOffset": 0,
+ "charLength": 94,
"snippet": {
- "text": " //if we are in psi class javadoc only inherits docs from classes and not from interfaces\n private fun lowestClassWithTag(baseClass: PsiClass, javadocTag: JavadocTag): DocComment? =\n baseClass.superClass?.let {\n findClosestDocComment(it, logger)?.takeIf { tag -> tag.hasTag(javadocTag) } ?: lowestClassWithTag(\n it,"
+ "text": "package org.jetbrains.dokka.base.testApi.testRunner\n\nimport org.jetbrains.dokka.CoreExtensions"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "298b0dce25bd38beaaa77e630278316a5357845df618d8c0d8edfcd953ca9bb5"
+ "equalIndicator/v1": "604c0d025faa8e4d4b0a912606f6083a790a6bf69a3fa07c47e933a05b62562c"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiMethod]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiMethod\\]?"
+ "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/parsers/InheritDocResolver.kt",
+ "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 87,
- "startColumn": 45,
- "charOffset": 3466,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 85,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3357,
- "charLength": 314,
- "snippet": {
- "text": " parameterIndex: Int,\n ): List<DocumentationContent> =\n (currentElement.owner as? PsiMethod)?.let { method -> lowestMethodsWithTag(method, JavadocTag.PARAM) }\n .orEmpty().flatMap {\n if (parameterIndex >= it.parameterList.parametersCount || parameterIndex < 0) emptyList()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "db6b37e7019a8a376da71479d778b05da517c285082ff0b15b49e0416258dedd"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 146,
- "startColumn": 31,
- "charOffset": 6130,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 13,
"snippet": {
- "text": "?."
+ "text": "package utils"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 144,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 6042,
- "charLength": 146,
+ "charOffset": 0,
+ "charLength": 45,
"snippet": {
- "text": "\ninternal fun PsiDocTag.resolveToElement(): PsiElement? =\n dataElements.firstOrNull()?.firstChild?.referenceElementOrSelf()?.resolveToGetDri()\n"
+ "text": "package utils\n\nimport org.jsoup.nodes.Element"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "8dc6196496db62ea5b4393df67b4f3a8d045b8ec9a7e6eab0bb91e270decb1c5"
+ "equalIndicator/v1": "667d79296cf078b7d8bbdf6d9ef6cba42f7a795c031b3b635252e7d846dde270"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/Substitutor.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 146,
- "startColumn": 43,
- "charOffset": 6142,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 144,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 6042,
- "charLength": 146,
- "snippet": {
- "text": "\ninternal fun PsiDocTag.resolveToElement(): PsiElement? =\n dataElements.firstOrNull()?.firstChild?.referenceElementOrSelf()?.resolveToGetDri()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "fe43501b3a22b04c261dc0dc561808139bdcfee864747a07975cb69522f55cc7"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 146,
- "startColumn": 69,
- "charOffset": 6168,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 144,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 6042,
- "charLength": 146,
+ "charOffset": 0,
+ "charLength": 101,
"snippet": {
- "text": "\ninternal fun PsiDocTag.resolveToElement(): PsiElement? =\n dataElements.firstOrNull()?.firstChild?.referenceElementOrSelf()?.resolveToGetDri()\n"
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.SubstitutionCommand"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "04f8d0bf277cedcb5fe986413eda39f21093fda0fdeff9f5421ce0678ccefd4c"
+ "equalIndicator/v1": "da7e88857d2f059ece7354cd5fa4dc0eb78e7247f067046c7f108315a587c1cb"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/CommandHandler.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 30,
- "startColumn": 13,
- "charOffset": 1480,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 28,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 1282,
- "charLength": 282,
- "snippet": {
- "text": " override fun hasTagWithExceptionOfType(tag: JavadocTag, exceptionFqName: String): Boolean =\n comment.hasTag(tag) && comment.tagsByName(tag).firstIsInstanceOrNull<PsiDocTag>()\n ?.resolveToElement()\n ?.getKotlinFqName()?.asString() == exceptionFqName\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c758c0ff46f921de0ca8fe1096a04ef523f426a8203d0998610a9516d88ddf4e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 31,
- "startColumn": 13,
- "charOffset": 1513,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 29,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 1378,
- "charLength": 277,
+ "charOffset": 0,
+ "charLength": 89,
"snippet": {
- "text": " comment.hasTag(tag) && comment.tagsByName(tag).firstIsInstanceOrNull<PsiDocTag>()\n ?.resolveToElement()\n ?.getKotlinFqName()?.asString() == exceptionFqName\n\n override fun tagsByName(tag: JavadocTag, param: String?): List<DocumentationContent> ="
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "b2e6d0c0716c3aa8627bf622a24c226a00cad561283ead5f25c478a2e01e1ab8"
+ "equalIndicator/v1": "6cbf48abc9e44118dfd217c0af11ab35537b0ba656c1e0eff4cb58aa940e96bc"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/PackageListProcessingStrategy.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 31,
- "startColumn": 32,
- "charOffset": 1532,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 29,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 1378,
- "charLength": 277,
- "snippet": {
- "text": " comment.hasTag(tag) && comment.tagsByName(tag).firstIsInstanceOrNull<PsiDocTag>()\n ?.resolveToElement()\n ?.getKotlinFqName()?.asString() == exceptionFqName\n\n override fun tagsByName(tag: JavadocTag, param: String?): List<DocumentationContent> ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1233c287de337ead3416072ddf2be93eb4b8257782467c510cbe272cdd2c32e1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 138,
- "startColumn": 36,
- "charOffset": 5898,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 52,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.allModulesPage.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 136,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5819,
- "charLength": 195,
+ "charOffset": 0,
+ "charLength": 122,
"snippet": {
- "text": " listOfNotNull(\n dataElements[0],\n dataElements[0].nextSibling?.takeIf { it.text != dataElements.drop(1).firstOrNull()?.text },\n *dataElements.drop(1).toTypedArray()\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": "e126a191a896597877d8a0fc7cb544cae588174bc3f8fb871c937642e7a131d4"
+ "equalIndicator/v1": "33ec89d00a0d7303c036c0f8d59ef58a08c235411eeb2725f16b8288472f44c6"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/FallbackTemplateProcessingStrategy.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 138,
- "startColumn": 92,
- "charOffset": 5954,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 136,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5819,
- "charLength": 195,
- "snippet": {
- "text": " listOfNotNull(\n dataElements[0],\n dataElements[0].nextSibling?.takeIf { it.text != dataElements.drop(1).firstOrNull()?.text },\n *dataElements.drop(1).toTypedArray()\n )"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9756433201b056de7adb73e4aab8c371574f98db1105e779be317f8f72e503bb"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : KtElement]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : KtElement\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 125,
- "startColumn": 38,
- "charOffset": 5409,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 123,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5305,
- "charLength": 274,
+ "charOffset": 0,
+ "charLength": 84,
"snippet": {
- "text": "\ninternal fun PsiNamedElement.toKdocComment(): KotlinDocComment? =\n (navigationElement as? KtElement)?.findKDoc { DescriptorToSourceUtils.descriptorToDeclaration(it) }\n ?.run {\n (this@toKdocComment.navigationElement as? KtDeclaration)?.descriptor?.let {"
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "8363034fb2bcdd216ce402347601d37bb7c48acda720e05c7d68676bac3a96d6"
+ "equalIndicator/v1": "7414f6addc1034c55f3181743344b725931bd320fa60011503374f0e81c738a3"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/AddToNavigationCommandHandler.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 126,
- "startColumn": 9,
- "charOffset": 5484,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 124,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5306,
- "charLength": 307,
- "snippet": {
- "text": "internal fun PsiNamedElement.toKdocComment(): KotlinDocComment? =\n (navigationElement as? KtElement)?.findKDoc { DescriptorToSourceUtils.descriptorToDeclaration(it) }\n ?.run {\n (this@toKdocComment.navigationElement as? KtDeclaration)?.descriptor?.let {\n KotlinDocComment("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c3618869c23444f77adc5a6a85c3d3a0153cae7325c0938bafe5d1ef8143a4ef"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : KtDeclaration]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : KtDeclaration\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 127,
- "startColumn": 69,
- "charOffset": 5560,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 125,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5372,
- "charLength": 267,
+ "charOffset": 0,
+ "charLength": 104,
"snippet": {
- "text": " (navigationElement as? KtElement)?.findKDoc { DescriptorToSourceUtils.descriptorToDeclaration(it) }\n ?.run {\n (this@toKdocComment.navigationElement as? KtDeclaration)?.descriptor?.let {\n KotlinDocComment(\n this,"
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.AddToNavigationCommand"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "593bc317280e234328835b7062d0c5527d422e5438d83113f073e4e68e3d5ac1"
+ "equalIndicator/v1": "5ec10a3f393fa74e6d770dad433b2182e8d051230eab2391c3da78c837e5cba3"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/TemplateProcessor.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 127,
- "startColumn": 81,
- "charOffset": 5572,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 125,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5372,
- "charLength": 267,
- "snippet": {
- "text": " (navigationElement as? KtElement)?.findKDoc { DescriptorToSourceUtils.descriptorToDeclaration(it) }\n ?.run {\n (this@toKdocComment.navigationElement as? KtDeclaration)?.descriptor?.let {\n KotlinDocComment(\n this,"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "401825faae87bb346bb2dc65f9c30f900698162f9f622749e35420ad844a60dc"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocCommentOwner]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocCommentOwner\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 90,
- "startColumn": 37,
- "charOffset": 4052,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 88,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3918,
- "charLength": 233,
+ "charOffset": 0,
+ "charLength": 76,
"snippet": {
- "text": "\ninternal fun findClosestDocComment(element: PsiNamedElement, logger: DokkaLogger): DocComment? {\n (element as? PsiDocCommentOwner)?.docComment?.run { return JavaDocComment(this) }\n element.toKdocComment()?.run { return this }\n"
+ "text": "package org.jetbrains.dokka.templates\n\nimport kotlinx.coroutines.Dispatchers"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "50c59e7d92efcbc2b9bc97571788b629ea72bc127bf3c7f516a55cb453b79f32"
+ "equalIndicator/v1": "fbcc107d4e3fe66c0484ee4367dbe4da67270a8327b8d00489cefe69ec1f61a8"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/TemplatingPlugin.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 90,
- "startColumn": 49,
- "charOffset": 4064,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 88,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3918,
- "charLength": 233,
- "snippet": {
- "text": "\ninternal fun findClosestDocComment(element: PsiNamedElement, logger: DokkaLogger): DocComment? {\n (element as? PsiDocCommentOwner)?.docComment?.run { return JavaDocComment(this) }\n element.toKdocComment()?.run { return this }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a83961ebf84e5bfe8153af5539712a81ad1942e9126f2c20a916de848aa710df"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/PsiCommentsUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 91,
- "startColumn": 28,
- "charOffset": 4129,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 89,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3919,
- "charLength": 264,
+ "charOffset": 0,
+ "charLength": 120,
"snippet": {
- "text": "internal fun findClosestDocComment(element: PsiNamedElement, logger: DokkaLogger): DocComment? {\n (element as? PsiDocCommentOwner)?.docComment?.run { return JavaDocComment(this) }\n element.toKdocComment()?.run { return this }\n\n if (element is PsiMethod) {"
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.allModulesPage.templates.PackageListProcessingStrategy"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "678b75f3e3bb2432bc723c766d51e386ce77414f9d394443b8bc4630562af307"
+ "equalIndicator/v1": "c69de2c673d73426b3c1627ab6731d569067c9492a284f4bb6c766da6b789d68"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/parsers/PsiCommentsUtils.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/PathToRootSubstitutor.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 121,
- "startColumn": 67,
- "charOffset": 5274,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 119,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 5156,
- "charLength": 149,
- "snippet": {
- "text": " else superMethodDocumentation.first()\n }\n return element.children.firstIsInstanceOrNull<PsiDocComment>()?.let { JavaDocComment(it) }\n}\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ddb43b14073f560fba856b9f629fb1b6003b02446c3f5d09cc9455c3efe9ab9e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/samples/DefaultSamplesTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 32,
- "startColumn": 56,
- "charOffset": 1433,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 30,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 1264,
- "charLength": 243,
+ "charOffset": 0,
+ "charLength": 111,
"snippet": {
- "text": " override fun processImports(psiElement: PsiElement): String {\n val psiFile = psiElement.containingFile\n return when(val text = psiFile.safeAs<KtFile>()?.importList?.text) {\n is String -> text\n else -> \"\""
+ "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": "a1330f7adf12a259b03ecd9390569db8369a18bdacdd9b4e46139d314b0ec613"
+ "equalIndicator/v1": "84e8acb420595d1e882ba384b8d99bfa0a86e8b1ac83bb654f5b186d9f931c65"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/transformers/pages/samples/DefaultSamplesTransformer.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/JsonElementBasedTemplateProcessingStrategy.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 32,
- "startColumn": 68,
- "charOffset": 1445,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 30,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 1264,
- "charLength": 243,
- "snippet": {
- "text": " override fun processImports(psiElement: PsiElement): String {\n val psiFile = psiElement.containingFile\n return when(val text = psiFile.safeAs<KtFile>()?.importList?.text) {\n is String -> text\n else -> \"\""
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6844b88fee7cf630218096085daea336b9005f9ac8dd18ed7f7b2ca6fe4d6061"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for safeAs>()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for safeAs\\>()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 72,
- "startColumn": 56,
- "charOffset": 3490,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 52,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.allModulesPage.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 70,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3325,
- "charLength": 373,
+ "charOffset": 0,
+ "charLength": 122,
"snippet": {
- "text": " private fun Documentable.appendSinceKotlin() =\n sourceSets.fold(documentation) { acc, sourceSet ->\n safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->"
+ "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": "60f4769dcfbe3325d2a09203c0217fe6109773b91c8e13df29eb3a2b2c4def8d"
+ "equalIndicator/v1": "c6f09facbfc4caf11c0ff7b7977db2001d5749aa10e3819449335c935f319686"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/transformers/pages/annotations/SinceKotlinTransformer.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 72,
- "startColumn": 63,
- "charOffset": 3497,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 70,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3325,
- "charLength": 373,
- "snippet": {
- "text": " private fun Documentable.appendSinceKotlin() =\n sourceSets.fold(documentation) { acc, sourceSet ->\n safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "741e76de27a44db1fbf176a393d5b60bbe5f4af780094a3c1750085463dee1c7"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 72,
- "startColumn": 81,
- "charOffset": 3515,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 70,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3325,
- "charLength": 373,
+ "charOffset": 0,
+ "charLength": 89,
"snippet": {
- "text": " private fun Documentable.appendSinceKotlin() =\n sourceSets.fold(documentation) { acc, sourceSet ->\n safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->"
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "87b8523434039e6522c35de2a72a9153b74786c2e206c5b9dc9908b0784e6358"
+ "equalIndicator/v1": "0570c6420930cc39294dac42d814869da58d0d2a1e067731ad25fc3bc0f08950"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/transformers/pages/annotations/SinceKotlinTransformer.kt",
+ "uri": "plugins/templating/src/main/kotlin/templates/DirectiveBasedTemplateProcessing.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 72,
- "startColumn": 100,
- "charOffset": 3534,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 70,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3325,
- "charLength": 373,
- "snippet": {
- "text": " private fun Documentable.appendSinceKotlin() =\n sourceSets.fold(documentation) { acc, sourceSet ->\n safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "8cb223226864e9bd78e8db48791455fed198b0770ef5b250448e5f0744d675a1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 72,
- "startColumn": 116,
- "charOffset": 3550,
- "charLength": 2,
+ "charOffset": 0,
+ "charLength": 37,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.dokka.templates"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 70,
+ "startLine": 1,
"startColumn": 1,
- "charOffset": 3325,
- "charLength": 373,
+ "charOffset": 0,
+ "charLength": 84,
"snippet": {
- "text": " private fun Documentable.appendSinceKotlin() =\n sourceSets.fold(documentation) { acc, sourceSet ->\n safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->"
+ "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.plugins.templating.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "dbc2ca19c0b31db6e2f1ac6d3221bbef7a3e2068e5798f3ff44ed5894c5c4edb"
+ "equalIndicator/v1": "05bf222c7532688d38c0d402e5e9c0adb383d1377ca3e07d4ee5510f3b3d9978"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/transformers/pages/annotations/SinceKotlinTransformer.kt",
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 74,
- "startColumn": 14,
- "charOffset": 3627,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 72,
+ "startLine": 17,
"startColumn": 1,
- "charOffset": 3435,
- "charLength": 355,
- "snippet": {
- "text": " safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->\n acc.mapValues {\n if (it.key == sourceSet) it.value.copy("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a457087e72658bb52c1eee4335dcd5d3ad3a7edef67ccc3f58ad7711454334c0"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 74,
- "startColumn": 22,
- "charOffset": 3635,
- "charLength": 2,
+ "charOffset": 602,
+ "charLength": 45,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.kotlin.cli.jvm.compiler"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 72,
+ "startLine": 15,
"startColumn": 1,
- "charOffset": 3435,
- "charLength": 355,
+ "charOffset": 597,
+ "charLength": 96,
"snippet": {
- "text": " safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->\n acc.mapValues {\n if (it.key == sourceSet) it.value.copy("
+ "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": "c80e425b461b66e41ea72c2aee1efba7c4e8bdfdba65ba2ca86b868de6931ef9"
+ "equalIndicator/v1": "34e5a7149e6dfa5a40b989fb9a44af3aff54d0927b7f64511af064bee0e686a9"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "PackageDirectoryMismatch",
"kind": "fail",
- "level": "warning",
+ "level": "error",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/transformers/pages/annotations/SinceKotlinTransformer.kt",
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 74,
- "startColumn": 60,
- "charOffset": 3673,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 72,
+ "startLine": 17,
"startColumn": 1,
- "charOffset": 3435,
- "charLength": 355,
- "snippet": {
- "text": " safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->\n acc.mapValues {\n if (it.key == sourceSet) it.value.copy("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b55d50e3837c2cf95c9159b44589e974a66ad67e9754354b45fe176a2e4485c9"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/annotations/SinceKotlinTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 74,
- "startColumn": 67,
- "charOffset": 3680,
- "charLength": 2,
+ "charOffset": 602,
+ "charLength": 42,
"snippet": {
- "text": "?."
+ "text": "package org.jetbrains.kotlin.cli.jvm.index"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 72,
+ "startLine": 15,
"startColumn": 1,
- "charOffset": 3435,
- "charLength": 355,
+ "charOffset": 597,
+ "charLength": 102,
"snippet": {
- "text": " safeAs<WithExtraProperties<Documentable>>()?.extra?.get(Annotations)?.directAnnotations?.get(sourceSet)?.find {\n it.dri == DRI(\"kotlin\", \"SinceKotlin\")\n }?.params?.get(\"version\").safeAs<StringValue>()?.value?.let { version ->\n acc.mapValues {\n if (it.key == sourceSet) it.value.copy("
+ "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": "0eb9ec77a8f7ebf293b8fc303eb2dda902f534f076779a08ca9ee85c8bc2c445"
+ "equalIndicator/v1": "df1403c76ecfefe1138fd1936876493437cd3a8fc78cf3398733d3217ce659d5"
},
"properties": {
- "ideaSeverity": "WARNING",
+ "ideaSeverity": "ERROR",
"tags": [
"ideaSeverity"
]
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "RegExpRedundantEscape",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : DeclarationDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : DeclarationDescriptor\\]?"
+ "text": "Redundant character escape '\\/' in RegExp",
+ "markdown": "Redundant character escape `\\/` in RegExp"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 228,
- "startColumn": 79,
- "charOffset": 10553,
+ "startLine": 181,
+ "startColumn": 52,
+ "charOffset": 7052,
"charLength": 2,
"snippet": {
- "text": "?."
+ "text": "\\/"
},
- "sourceLanguage": "kotlin"
+ "sourceLanguage": "RegExp"
},
"contextRegion": {
- "startLine": 226,
- "startColumn": 1,
- "charOffset": 10396,
- "charLength": 234,
- "snippet": {
- "text": " */\n private fun DProperty.isAlsoParameter(sourceSet: DokkaSourceSet) =\n (this.sources[sourceSet] as? DescriptorDocumentableSource)?.descriptor?.findPsi() is KtParameter\n\n private fun propertySignature(p: DProperty) ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5e3fe0878e04bd64319b7367229a8b632a0f1e0303e2b8299d5567d338d6eea1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for docTag.children.firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for docTag.children.firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
"startLine": 179,
- "startColumn": 87,
- "charOffset": 6896,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 177,
"startColumn": 1,
- "charOffset": 6676,
- "charLength": 344,
- "snippet": {
- "text": " ContentTable(\n header = buildTableRows(head.filterIsInstance<Th>(), CommentTable),\n caption = docTag.children.firstIsInstanceOrNull<Caption>()?.let {\n ContentGroup(\n buildContent(it, dci, sourceSets),"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "fb28b010499ddb97bcce38770b7ae524d204e0aa7923ff4250c6cd9a2f6a1f85"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 139,
- "startColumn": 19,
- "charOffset": 5667,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 137,
- "startColumn": 1,
- "charOffset": 5485,
- "charLength": 237,
- "snippet": {
- "text": " val doc = PsiDocumentManager.getInstance(project).getDocument(containingFile)\n // IJ uses 0-based line-numbers; external source browsers use 1-based\n return doc?.getLineNumber(textRange.startOffset)?.plus(1)\n }\n}"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "55f44d9738b84b728749faa9769bcd1ec6b8ac85401c2ce3fe93c298fe77c26b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 139,
- "startColumn": 57,
- "charOffset": 5705,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 137,
- "startColumn": 1,
- "charOffset": 5485,
- "charLength": 237,
- "snippet": {
- "text": " val doc = PsiDocumentManager.getInstance(project).getDocument(containingFile)\n // IJ uses 0-based line-numbers; external source browsers use 1-based\n return doc?.getLineNumber(textRange.startOffset)?.plus(1)\n }\n}"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "43b1d8e58e6185b30bf76bfff465589b7b92b36696d65f95ebddd0fb9181f1b8"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 99,
- "startColumn": 17,
- "charOffset": 4222,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 97,
- "startColumn": 1,
- "charOffset": 4116,
- "charLength": 207,
- "snippet": {
- "text": " .cast<DeclarationDescriptorWithSource>()\n .source.getPsi()\n ?.lineNumber()\n is PsiDocumentableSource -> this.psi.lineNumber()\n else -> null"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f52eecdea636b58828a18c0e648d0a5409de67d4f9efc2b0094f16ad672dc758"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : CallableMemberDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : CallableMemberDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 122,
- "startColumn": 71,
- "charOffset": 4450,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 120,
- "startColumn": 1,
- "charOffset": 4282,
- "charLength": 198,
- "snippet": {
- "text": "\n private fun isFakeOverride(documentable: Documentable, sourceSet: DokkaSourceSet): Boolean {\n return callableMemberDescriptorOrNull(documentable, sourceSet)?.kind == FAKE_OVERRIDE\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3c462ea4b6839bdc0d03c1c9fa7c42af1a9df887147e75fb99b6ff64669b9c81"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for documentable.safeAs()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for documentable.safeAs()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 142,
- "startColumn": 59,
- "charOffset": 5236,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 140,
- "startColumn": 1,
- "charOffset": 5072,
- "charLength": 285,
- "snippet": {
- "text": "\n private fun isPrivateOrInternalApi(documentable: Documentable, sourceSet: DokkaSourceSet): Boolean {\n return when (documentable.safeAs<WithVisibility>()?.visibility?.get(sourceSet)) {\n KotlinVisibility.Public -> false\n KotlinVisibility.Private -> true"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "55e8838d13b403dabe37707ab24947ac65b4d5dd61c2a8fc74bae04936431510"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 142,
- "startColumn": 71,
- "charOffset": 5248,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 140,
- "startColumn": 1,
- "charOffset": 5072,
- "charLength": 285,
- "snippet": {
- "text": "\n private fun isPrivateOrInternalApi(documentable: Documentable, sourceSet: DokkaSourceSet): Boolean {\n return when (documentable.safeAs<WithVisibility>()?.visibility?.get(sourceSet)) {\n KotlinVisibility.Public -> false\n KotlinVisibility.Private -> true"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3f86b4c93d70dd40757fa98a8ae15ea92a6ce5fb097223e2bd0964c03013c436"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for documentable.sources[sourceSet] .safeAs()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for documentable.sources\\[sourceSet\\] .safeAs()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 134,
- "startColumn": 56,
- "charOffset": 4970,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 132,
- "startColumn": 1,
- "charOffset": 4821,
- "charLength": 223,
- "snippet": {
- "text": " if (documentable is WithSources) {\n return documentable.sources[sourceSet]\n .safeAs<DescriptorDocumentableSource>()?.descriptor\n .safeAs<CallableMemberDescriptor>()\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "22739a6d6229f0e7048b0a1c7f8d983187bef0a7b8859a43264764be45da5668"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : CallableMemberDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : CallableMemberDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 126,
- "startColumn": 71,
- "charOffset": 4647,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 124,
- "startColumn": 1,
- "charOffset": 4480,
- "charLength": 195,
- "snippet": {
- "text": "\n private fun isSynthesized(documentable: Documentable, sourceSet: DokkaSourceSet): Boolean {\n return callableMemberDescriptorOrNull(documentable, sourceSet)?.kind == SYNTHESIZED\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "61710896572b1401baefa8f019b91ffb2ce4b5337bfbb88fb1a811ebe34ecda6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for args.first().safeAs>>()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for args.first().safeAs\\>\\>()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/KorteJavadocRenderer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 172,
- "startColumn": 21,
- "charOffset": 8233,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 170,
- "startColumn": 1,
- "charOffset": 8090,
- "charLength": 235,
- "snippet": {
- "text": " TeFunction(\"hasAnyDescription\") { args ->\n args.first().safeAs<List<HashMap<String, String>>>()\n ?.any { it[\"description\"]?.trim()?.isNotEmpty() ?: false }\n }\n ).forEach {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "779ea0625222b84458e68b8e106d6a3db61fea5b7affbb2ab0d086562102d5b1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/KorteJavadocRenderer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 172,
- "startColumn": 46,
- "charOffset": 8258,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 170,
- "startColumn": 1,
- "charOffset": 8090,
- "charLength": 235,
- "snippet": {
- "text": " TeFunction(\"hasAnyDescription\") { args ->\n args.first().safeAs<List<HashMap<String, String>>>()\n ?.any { it[\"description\"]?.trim()?.isNotEmpty() ?: false }\n }\n ).forEach {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "cf63fa431ba5ecdb7c0bc6cf5816ad3375e118da6a1f96a9a17123ac4fcf7ccf"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/renderer/KorteJavadocRenderer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 172,
- "startColumn": 54,
- "charOffset": 8266,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 170,
- "startColumn": 1,
- "charOffset": 8090,
- "charLength": 235,
- "snippet": {
- "text": " TeFunction(\"hasAnyDescription\") { args ->\n args.first().safeAs<List<HashMap<String, String>>>()\n ?.any { it[\"description\"]?.trim()?.isNotEmpty() ?: false }\n }\n ).forEach {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3c147edf82e8bc2ecc6465d9fa3e3d89b89ddd2f632daf75c37c3832463b5a68"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 339,
- "startColumn": 21,
- "charOffset": 16023,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 337,
- "startColumn": 1,
- "charOffset": 15911,
- "charLength": 315,
- "snippet": {
- "text": " when (tag.name) {\n \"link\", \"linkplain\" -> tag.referenceElement()\n ?.toDocumentationLinkString(tag.dataElements.filterIsInstance<PsiDocToken>().joinToString(\" \") {\n it.stringifyElementAsText(keepFormatting = false).orEmpty()\n })"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "32d9e470d46d0cc8aebbbe490e8e49ec6e67bc26a0b0fdcf07b843444bda5205"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 477,
- "startColumn": 22,
- "charOffset": 23029,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 475,
- "startColumn": 1,
- "charOffset": 22947,
- "charLength": 176,
- "snippet": {
- "text": "\n private fun PsiDocTag.referenceElement(): PsiElement? =\n linkElement()?.referenceElementOrSelf()\n\n private fun PsiElement.defaultLabel() = children.firstOrNull {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1931fbbdb6ccfbe38e6a6ed491e3c8d0fc8683f553cbcab120ebef820226112a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 78,
- "startColumn": 36,
- "charOffset": 3454,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 76,
- "startColumn": 1,
- "charOffset": 3314,
- "charLength": 286,
- "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\")"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ebc15812947e4bddf6b0ad399d502e2665a362b582796072bfa7af9a6a517d1d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 199,
- "startColumn": 37,
- "charOffset": 9276,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 197,
- "startColumn": 1,
- "charOffset": 9117,
- "charLength": 224,
- "snippet": {
- "text": " descriptionElements.asIterable(),\n context = CommentResolutionContext(this, JavadocTag.DESCRIPTION)\n ).takeIf { it.isNotEmpty() }?.let {\n Description(wrapTagIfNecessary(it))\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "73a560e1e24acb2894d0fa76dae3b305c31337c4f272136a71b2bbf5c7bea05a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 187,
- "startColumn": 43,
- "charOffset": 8654,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 185,
- "startColumn": 1,
- "charOffset": 8524,
- "charLength": 396,
- "snippet": {
- "text": " ): Pair<List<DocTag>, DRI?> {\n val referenceElement = tag.referenceElement()\n val linkElement = referenceElement?.toDocumentationLink(context = context)\n val content = convertJavadocElements(\n tag.dataElements.dropWhile { it is PsiWhiteSpace || (it as? LazyParseablePsiElement)?.tokenType == JavaDocElementType.DOC_REFERENCE_HOLDER || it == referenceElement },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e877af14b4d4b7950a528a4760b32fc905dc753015ad727dc0cea17079ff5ae3"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : LazyParseablePsiElement]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : LazyParseablePsiElement\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 189,
- "startColumn": 97,
- "charOffset": 8837,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 187,
- "startColumn": 1,
- "charOffset": 8612,
- "charLength": 348,
- "snippet": {
- "text": " val linkElement = referenceElement?.toDocumentationLink(context = context)\n val content = convertJavadocElements(\n tag.dataElements.dropWhile { it is PsiWhiteSpace || (it as? LazyParseablePsiElement)?.tokenType == JavaDocElementType.DOC_REFERENCE_HOLDER || it == referenceElement },\n context = context\n )"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "25b0f85e7cedf4ea3e5379c6dcf486ea1c9246f26db2fd7ce6d669df93536202"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 192,
- "startColumn": 41,
- "charOffset": 9001,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 190,
- "startColumn": 1,
- "charOffset": 8921,
- "charLength": 93,
- "snippet": {
- "text": " context = context\n )\n return Pair(content, linkElement?.dri)\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6eca54726e8215e8248b3845f2d9072db27d4eedde4d38c5964b63a2d1056d8e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 470,
- "startColumn": 26,
- "charOffset": 22728,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 468,
- "startColumn": 1,
- "charOffset": 22584,
- "charLength": 241,
- "snippet": {
- "text": "\n private fun PsiElement.toDocumentationLink(labelElement: PsiElement? = null, context: CommentResolutionContext) =\n resolveToGetDri()?.let {\n val dri = DRI.from(it)\n val label = labelElement ?: defaultLabel()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e3e1bb167c2c62d2cb0ad3edf8704572f7acae1c7c3ee31a1f5bf4a552a26c41"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 273,
- "startColumn": 51,
- "charOffset": 12717,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 271,
- "startColumn": 1,
- "charOffset": 12628,
- "charLength": 261,
- "snippet": {
- "text": " */\n text.let {\n if (((prevSibling as? PsiDocToken)?.isLeadingAsterisk() == true || (prevSibling as? PsiDocToken)?.isTagName() == true ) && it.firstOrNull() == ' ')\n it.drop(1) else it\n }.let {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2efb345e11a5307bf7c99d6084dade77800c8d9e8abeed4501eb570bbf41f6ee"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 273,
- "startColumn": 113,
- "charOffset": 12779,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 271,
- "startColumn": 1,
- "charOffset": 12628,
- "charLength": 261,
- "snippet": {
- "text": " */\n text.let {\n if (((prevSibling as? PsiDocToken)?.isLeadingAsterisk() == true || (prevSibling as? PsiDocToken)?.isTagName() == true ) && it.firstOrNull() == ' ')\n it.drop(1) else it\n }.let {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "07a8b8dc7130c6531960a4b9b8db36064a2b6fb3bf79ac71ce04dfc6fe47f1ee"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 276,
- "startColumn": 50,
- "charOffset": 12939,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 274,
- "startColumn": 1,
- "charOffset": 12831,
- "charLength": 208,
- "snippet": {
- "text": " it.drop(1) else it\n }.let {\n if ((nextSibling as? PsiDocToken)?.isLeadingAsterisk() == true) it.dropLastWhile { it == ' ' } else it\n }\n } else {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "76e54b0ab31da10735253ab8feb9501e98e415241de5c9319d49694dcf043bf9"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 284,
- "startColumn": 50,
- "charOffset": 13291,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 282,
- "startColumn": 1,
- "charOffset": 13203,
- "charLength": 345,
- "snippet": {
- "text": " */\n text.let {\n if ((prevSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank() && previousElement !is PsiInlineDocTag) it?.trimStart() else it\n }?.let {\n if ((nextSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank()) it.trimEnd() else it"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "300ddbc063ed8aa723b071a4cba11accfcc5d2bd6f662f374ef1d09eb19d80f1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 284,
- "startColumn": 143,
- "charOffset": 13384,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 282,
- "startColumn": 1,
- "charOffset": 13203,
- "charLength": 345,
- "snippet": {
- "text": " */\n text.let {\n if ((prevSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank() && previousElement !is PsiInlineDocTag) it?.trimStart() else it\n }?.let {\n if ((nextSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank()) it.trimEnd() else it"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "34cafa82dbe694baa57c6c191afc263e521beb9eebccdcd6870b6ba7037be805"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 285,
- "startColumn": 14,
- "charOffset": 13419,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 283,
- "startColumn": 1,
- "charOffset": 13219,
- "charLength": 350,
- "snippet": {
- "text": " text.let {\n if ((prevSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank() && previousElement !is PsiInlineDocTag) it?.trimStart() else it\n }?.let {\n if ((nextSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank()) it.trimEnd() else it\n }?.let {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "cffe059c4ca33e20e34fb81494ea8eb668387e9597c1b73288f36c79a9d27e4f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 286,
- "startColumn": 50,
- "charOffset": 13476,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 284,
- "startColumn": 1,
- "charOffset": 13242,
- "charLength": 389,
- "snippet": {
- "text": " if ((prevSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank() && previousElement !is PsiInlineDocTag) it?.trimStart() else it\n }?.let {\n if ((nextSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank()) it.trimEnd() else it\n }?.let {\n if (shouldHaveSpaceAtTheEnd()) \"$it \" else it"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "eb3322c267178d315f1c033f975f77060d791c0df76ad9ff8647a3cb47ea4fb5"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 287,
- "startColumn": 14,
- "charOffset": 13562,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 285,
- "startColumn": 1,
- "charOffset": 13406,
- "charLength": 239,
- "snippet": {
- "text": " }?.let {\n if ((nextSibling as? PsiDocToken)?.isLeadingAsterisk() == true && text.isNotBlank()) it.trimEnd() else it\n }?.let {\n if (shouldHaveSpaceAtTheEnd()) \"$it \" else it\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "80daabfb6630e755a3c9a28af5b2f16c971b15883699c8e5822984da4565ca1f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 93,
- "startColumn": 62,
- "charOffset": 4182,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 91,
- "startColumn": 1,
- "charOffset": 4040,
- "charLength": 305,
- "snippet": {
- "text": " when (resolutionContext.tag) {\n JavadocTag.PARAM -> {\n val name = tag.dataElements.firstOrNull()?.text.orEmpty()\n val index =\n (analysedElement as? PsiMethod)?.parameterList?.parameters?.map { it.name }?.indexOf(name)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ddfe2db346726f83464bd7e20066f2d98182f9e64ff1a05278f1d0aa2a702ebc"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiMethod]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiMethod\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 95,
- "startColumn": 56,
- "charOffset": 4286,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 93,
- "startColumn": 1,
- "charOffset": 4121,
- "charLength": 295,
- "snippet": {
- "text": " val name = tag.dataElements.firstOrNull()?.text.orEmpty()\n val index =\n (analysedElement as? PsiMethod)?.parameterList?.parameters?.map { it.name }?.indexOf(name)\n Param(\n wrapTagIfNecessary("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1d218e23ca75c3579f2429b33e0b1214c1de90105b6d7524895af02b1bc21245"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 95,
- "startColumn": 71,
- "charOffset": 4301,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 93,
- "startColumn": 1,
- "charOffset": 4121,
- "charLength": 295,
- "snippet": {
- "text": " val name = tag.dataElements.firstOrNull()?.text.orEmpty()\n val index =\n (analysedElement as? PsiMethod)?.parameterList?.parameters?.map { it.name }?.indexOf(name)\n Param(\n wrapTagIfNecessary("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6087b55176508fee2ba8482f48ccc34329b97d0b27b3bf1ba4b71d00a8de1be8"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 95,
- "startColumn": 83,
- "charOffset": 4313,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 93,
- "startColumn": 1,
- "charOffset": 4121,
- "charLength": 295,
- "snippet": {
- "text": " val name = tag.dataElements.firstOrNull()?.text.orEmpty()\n val index =\n (analysedElement as? PsiMethod)?.parameterList?.parameters?.map { it.name }?.indexOf(name)\n Param(\n wrapTagIfNecessary("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "45b7e19dd382c38c330aed8404feba3b39f1a7be40f63fe5d139279400ad7d84"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 95,
- "startColumn": 100,
- "charOffset": 4330,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 93,
- "startColumn": 1,
- "charOffset": 4121,
- "charLength": 295,
- "snippet": {
- "text": " val name = tag.dataElements.firstOrNull()?.text.orEmpty()\n val index =\n (analysedElement as? PsiMethod)?.parameterList?.parameters?.map { it.name }?.indexOf(name)\n Param(\n wrapTagIfNecessary("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ab440832a21852054f2eb68fcc78d8df5679bee820baeb1bd003d735e1059ddb"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 108,
- "startColumn": 39,
- "charOffset": 4936,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 106,
- "startColumn": 1,
- "charOffset": 4779,
- "charLength": 324,
- "snippet": {
- "text": " JavadocTag.THROWS, JavadocTag.EXCEPTION -> {\n val resolved = tag.resolveToElement()\n val dri = resolved?.let { DRI.from(it) }\n val name = resolved?.getKotlinFqName()?.asString()\n ?: tag.dataElements.firstOrNull()?.text.orEmpty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "95115f509bfc24b9221854c6bbd2f8f0c89b7b9a2fda86caa66f1452ca5a7094"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 109,
- "startColumn": 40,
- "charOffset": 4998,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 107,
- "startColumn": 1,
- "charOffset": 4840,
- "charLength": 291,
- "snippet": {
- "text": " val resolved = tag.resolveToElement()\n val dri = resolved?.let { DRI.from(it) }\n val name = resolved?.getKotlinFqName()?.asString()\n ?: tag.dataElements.firstOrNull()?.text.orEmpty()\n Throws("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e7e6004b9726a621bd3873e2e8946e1bc5cf72490f71fc4a4fba6ba1b06521b1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 109,
- "startColumn": 59,
- "charOffset": 5017,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 107,
- "startColumn": 1,
- "charOffset": 4840,
- "charLength": 291,
- "snippet": {
- "text": " val resolved = tag.resolveToElement()\n val dri = resolved?.let { DRI.from(it) }\n val name = resolved?.getKotlinFqName()?.asString()\n ?: tag.dataElements.firstOrNull()?.text.orEmpty()\n Throws("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0cc6cffc8897340efc51087b7ceada10b861ee0c724f53bb50850278757fdd97"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 110,
- "startColumn": 58,
- "charOffset": 5087,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 108,
- "startColumn": 1,
- "charOffset": 4898,
- "charLength": 284,
- "snippet": {
- "text": " val dri = resolved?.let { DRI.from(it) }\n val name = resolved?.getKotlinFqName()?.asString()\n ?: tag.dataElements.firstOrNull()?.text.orEmpty()\n Throws(\n root = wrapTagIfNecessary("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f68d446224a537052c7ae572efa2aa7666342ae454bf8ba55a7bab09065752e1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 146,
- "startColumn": 47,
- "charOffset": 6945,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 144,
- "startColumn": 1,
- "charOffset": 6832,
- "charLength": 325,
- "snippet": {
- "text": " JavadocTag.SEE -> {\n val name =\n tag.resolveToElement()?.getKotlinFqName()?.asString() ?: tag.referenceElement()?.text.orEmpty().removePrefix(\"#\")\n getSeeTagElementContent(tag, resolutionContext.copy(name = name)).let {\n See("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2069ca67f776b9b1236aa56aa9eecce536e01f09e5484545baa928614a3d2e2d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 146,
- "startColumn": 66,
- "charOffset": 6964,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 144,
- "startColumn": 1,
- "charOffset": 6832,
- "charLength": 325,
- "snippet": {
- "text": " JavadocTag.SEE -> {\n val name =\n tag.resolveToElement()?.getKotlinFqName()?.asString() ?: tag.referenceElement()?.text.orEmpty().removePrefix(\"#\")\n getSeeTagElementContent(tag, resolutionContext.copy(name = name)).let {\n See("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ed6cb930e7e1a350db22c90e0fb99467260f31dcdf75911639d2ca2378912d4b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 146,
- "startColumn": 104,
- "charOffset": 7002,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 144,
- "startColumn": 1,
- "charOffset": 6832,
- "charLength": 325,
- "snippet": {
- "text": " JavadocTag.SEE -> {\n val name =\n tag.resolveToElement()?.getKotlinFqName()?.asString() ?: tag.referenceElement()?.text.orEmpty().removePrefix(\"#\")\n getSeeTagElementContent(tag, resolutionContext.copy(name = name)).let {\n See("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b3aaac2e5ae59aee870f38dba4089f7789bf525c1a1aa67aa8d48090bd1747b1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 323,
- "startColumn": 32,
- "charOffset": 15420,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 321,
- "startColumn": 1,
- "charOffset": 15368,
- "charLength": 186,
- "snippet": {
- "text": " ): String {\n\n val dri = reference?.resolve()?.takeIf { it !is PsiParameter }?.let {\n val dri = DRI.from(it)\n driMap[dri.toString()] = dri"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7e5e93de7f893fa5d9526568899108f3affa71bdedf4b498e215efbd9941f5f2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 323,
- "startColumn": 43,
- "charOffset": 15431,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 321,
- "startColumn": 1,
- "charOffset": 15368,
- "charLength": 186,
- "snippet": {
- "text": " ): String {\n\n val dri = reference?.resolve()?.takeIf { it !is PsiParameter }?.let {\n val dri = DRI.from(it)\n driMap[dri.toString()] = dri"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "4350dc0d90270b82412cd50ed396336ccdfc0cee3306cffb808d7322f3eb1fd6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 323,
- "startColumn": 75,
- "charOffset": 15463,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 321,
- "startColumn": 1,
- "charOffset": 15368,
- "charLength": 186,
- "snippet": {
- "text": " ): String {\n\n val dri = reference?.resolve()?.takeIf { it !is PsiParameter }?.let {\n val dri = DRI.from(it)\n driMap[dri.toString()] = dri"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "4232ca2bc4ebbedc87c5c3ddd8b8cd6ace89032b3a9276d02d49e4cc6cd34731"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiWhiteSpace]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiWhiteSpace\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 312,
- "startColumn": 51,
- "charOffset": 14885,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 310,
- "startColumn": 1,
- "charOffset": 14735,
- "charLength": 388,
- "snippet": {
- "text": " val endsWithAnUnclosedTag = lastHtmlTag.endsWith(\">\") && !lastHtmlTag.startsWith(\"</\")\n\n return (nextSibling as? PsiWhiteSpace)?.text?.startsWith(\"\\n \") == true &&\n (getNextSiblingIgnoringWhitespace() as? PsiDocToken)?.tokenType != JavaDocTokenTypes.INSTANCE.commentEnd() &&\n nextNotEmptySibling?.isLeadingAsterisk() == true &&"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "344fd24d6eed5263f5ee69797f63aae5e22bd29329b91eecdab0fa1b70fdb274"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 312,
- "startColumn": 57,
- "charOffset": 14891,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 310,
- "startColumn": 1,
- "charOffset": 14735,
- "charLength": 388,
- "snippet": {
- "text": " val endsWithAnUnclosedTag = lastHtmlTag.endsWith(\">\") && !lastHtmlTag.startsWith(\"</\")\n\n return (nextSibling as? PsiWhiteSpace)?.text?.startsWith(\"\\n \") == true &&\n (getNextSiblingIgnoringWhitespace() as? PsiDocToken)?.tokenType != JavaDocTokenTypes.INSTANCE.commentEnd() &&\n nextNotEmptySibling?.isLeadingAsterisk() == true &&"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6cf4f0521466c4cfb6884b516bd422ceb514ae0fe1a082d79d348f9ad8c1c9b3"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 313,
- "startColumn": 73,
- "charOffset": 14994,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 311,
- "startColumn": 1,
- "charOffset": 14834,
- "charLength": 390,
- "snippet": {
- "text": "\n return (nextSibling as? PsiWhiteSpace)?.text?.startsWith(\"\\n \") == true &&\n (getNextSiblingIgnoringWhitespace() as? PsiDocToken)?.tokenType != JavaDocTokenTypes.INSTANCE.commentEnd() &&\n nextNotEmptySibling?.isLeadingAsterisk() == true &&\n furtherNotEmptySibling?.tokenType == JavaDocTokenTypes.INSTANCE.commentData() &&"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "807ad7944e6a11d805691311eba3917065f3d9696cb62a2b7e529f65b49c9cab"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 314,
- "startColumn": 40,
- "charOffset": 15091,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 312,
- "startColumn": 1,
- "charOffset": 14835,
- "charLength": 432,
- "snippet": {
- "text": " return (nextSibling as? PsiWhiteSpace)?.text?.startsWith(\"\\n \") == true &&\n (getNextSiblingIgnoringWhitespace() as? PsiDocToken)?.tokenType != JavaDocTokenTypes.INSTANCE.commentEnd() &&\n nextNotEmptySibling?.isLeadingAsterisk() == true &&\n furtherNotEmptySibling?.tokenType == JavaDocTokenTypes.INSTANCE.commentData() &&\n !endsWithAnUnclosedTag"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6a1288cb17dc01dc8c3727c3cbdeae0fee2a1fc2736c7967e6cdd89d6ab42a13"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiDocToken]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiDocToken\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 315,
- "startColumn": 43,
- "charOffset": 15166,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 313,
- "startColumn": 1,
- "charOffset": 14922,
- "charLength": 355,
- "snippet": {
- "text": " (getNextSiblingIgnoringWhitespace() as? PsiDocToken)?.tokenType != JavaDocTokenTypes.INSTANCE.commentEnd() &&\n nextNotEmptySibling?.isLeadingAsterisk() == true &&\n furtherNotEmptySibling?.tokenType == JavaDocTokenTypes.INSTANCE.commentData() &&\n !endsWithAnUnclosedTag\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "8b1fde6b929bcaaad6b38a2db295943ac138a4657087aa8fb822e6a04db42f5f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 366,
- "startColumn": 65,
- "charOffset": 18899,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 364,
- "startColumn": 1,
- "charOffset": 18729,
- "charLength": 358,
- "snippet": {
- "text": " descriptor.getAnnotations().toSourceSetDependent().toAnnotations()\n ),\n companion = descriptor.companionObjectDescriptor?.let { objectDescriptor(it, driWithPlatform) },\n visibility = descriptor.visibility.toDokkaVisibility().toSourceSetDependent(),\n generics = generics.await(),"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3dc37f6e35f342427049169e80b085efa2f82040635b4cf665b627f299501d8a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : TypeAliasDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : TypeAliasDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 785,
- "startColumn": 61,
- "charOffset": 39675,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 783,
- "startColumn": 1,
- "charOffset": 39479,
- "charLength": 338,
- "snippet": {
- "text": " val declaration = it.constructor.declarationDescriptor\n val descriptor = declaration as? ClassDescriptor\n ?: (declaration as? TypeAliasDescriptor)?.underlyingType?.constructor?.declarationDescriptor as? ClassDescriptor\n descriptor?.kind == ClassKind.INTERFACE\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a79e9aa1aa1cb3f58876c90aee3ebebdb379691740e17f31e8760b8735d00750"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 785,
- "startColumn": 77,
- "charOffset": 39691,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 783,
- "startColumn": 1,
- "charOffset": 39479,
- "charLength": 338,
- "snippet": {
- "text": " val declaration = it.constructor.declarationDescriptor\n val descriptor = declaration as? ClassDescriptor\n ?: (declaration as? TypeAliasDescriptor)?.underlyingType?.constructor?.declarationDescriptor as? ClassDescriptor\n descriptor?.kind == ClassKind.INTERFACE\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "46dc27cbf7b9a14af5e16366a8218345435f8a242442a48302cc329623886991"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 785,
- "startColumn": 90,
- "charOffset": 39704,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 783,
- "startColumn": 1,
- "charOffset": 39479,
- "charLength": 338,
- "snippet": {
- "text": " val declaration = it.constructor.declarationDescriptor\n val descriptor = declaration as? ClassDescriptor\n ?: (declaration as? TypeAliasDescriptor)?.underlyingType?.constructor?.declarationDescriptor as? ClassDescriptor\n descriptor?.kind == ClassKind.INTERFACE\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2b9c8a9e04c38215cb9937a33a165c1f19e7272fe8359e772a44556c57c9ead6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type ???",
- "markdown": "Unnecessary safe call on a non-null receiver of type ???"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 786,
- "startColumn": 27,
- "charOffset": 39774,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 784,
- "startColumn": 1,
- "charOffset": 39550,
- "charLength": 268,
- "snippet": {
- "text": " val descriptor = declaration as? ClassDescriptor\n ?: (declaration as? TypeAliasDescriptor)?.underlyingType?.constructor?.declarationDescriptor as? ClassDescriptor\n descriptor?.kind == ClassKind.INTERFACE\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e8373aaadfc57c99d639a9286c005afc6636ab5fe301bc9faca0d7af5baf1534"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 631,
- "startColumn": 44,
- "charOffset": 32145,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 629,
- "startColumn": 1,
- "charOffset": 32029,
- "charLength": 174,
- "snippet": {
- "text": " */\n val specialCaseIs = rawName.startsWith(\"is\")\n && rawName.getOrNull(2)?.isLowerCase() == false\n\n if (specialCaseIs) {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "fdb5d6b55c60092a265d779b84d2e2690547aa08257036eda6b16894ab7cd8c6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 661,
- "startColumn": 65,
- "charOffset": 33354,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 659,
- "startColumn": 1,
- "charOffset": 33149,
- "charLength": 294,
- "snippet": {
- "text": " modifier = descriptor.modifier().toSourceSetDependent(),\n expectPresentInSet = sourceSet.takeIf { isExpect },\n receiver = descriptor.extensionReceiverParameter?.let {\n visitReceiverParameterDescriptor(\n it,"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f54b8d03717ef7ed734a4ed46de4e83ebddb0da8d88b32c23dbde43804dac0b5"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 829,
- "startColumn": 56,
- "charOffset": 41531,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 827,
- "startColumn": 1,
- "charOffset": 41341,
- "charLength": 349,
- "snippet": {
- "text": " private suspend fun KotlinType.toBound(): Bound {\n suspend fun <T : AnnotationTarget> annotations(): PropertyContainer<T> =\n getAnnotations().takeIf { it.isNotEmpty() }?.let { annotations ->\n PropertyContainer.withAll(annotations.toSourceSetDependent().toAnnotations())\n } ?: PropertyContainer.empty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "695bef7d8ca72a4953eb43f17a64e54c6d23b95c5e2cf5a4e7b712d3355534a8"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 913,
- "startColumn": 114,
- "charOffset": 45314,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 911,
- "startColumn": 1,
- "charOffset": 45145,
- "charLength": 216,
- "snippet": {
- "text": " ?.let { javadocParser.parseDocumentation(it) }\n\n private suspend fun ClassDescriptor.companion(dri: DRIWithPlatformInfo): DObject? = companionObjectDescriptor?.let {\n objectDescriptor(it, dri)\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "dcba2f5d83cadf4a519012f9b7888951c27613b62ac2a76f172d892a75156d8b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1039,
- "startColumn": 41,
- "charOffset": 51567,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1037,
- "startColumn": 1,
- "charOffset": 51458,
- "charLength": 231,
- "snippet": {
- "text": "\n private fun ClassDescriptor.getAppliedConstructorParameters() =\n (source as PsiSourceElement).psi?.children?.flatMap {\n it.safeAs<KtInitializerList>()?.initializersAsExpression().orEmpty()\n }.orEmpty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "dbb03f58ac790c3e541f08dc4166092d28307db7b072b23ea512fc47fd9103b6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1039,
- "startColumn": 51,
- "charOffset": 51577,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1037,
- "startColumn": 1,
- "charOffset": 51458,
- "charLength": 231,
- "snippet": {
- "text": "\n private fun ClassDescriptor.getAppliedConstructorParameters() =\n (source as PsiSourceElement).psi?.children?.flatMap {\n it.safeAs<KtInitializerList>()?.initializersAsExpression().orEmpty()\n }.orEmpty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "911a818adb9f63f473d98b3902252bf6cc3ee9592db9dd6dbc36ccdd8cc0758a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1040,
- "startColumn": 43,
- "charOffset": 51631,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1038,
- "startColumn": 1,
- "charOffset": 51459,
- "charLength": 231,
- "snippet": {
- "text": " private fun ClassDescriptor.getAppliedConstructorParameters() =\n (source as PsiSourceElement).psi?.children?.flatMap {\n it.safeAs<KtInitializerList>()?.initializersAsExpression().orEmpty()\n }.orEmpty()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "16d12b27148657c1d3ac6e531715eff7a9cb8d1267126e6e33fb14c21f1c2735"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "No cast needed",
- "markdown": "No cast needed"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1029,
- "startColumn": 14,
- "charOffset": 50995,
- "charLength": 58,
- "snippet": {
- "text": "overriddenDescriptors.first().getConcreteDescriptor() as T"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1027,
- "startColumn": 1,
- "charOffset": 50834,
- "charLength": 294,
- "snippet": {
- "text": " private fun <T : CallableMemberDescriptor> T.getConcreteDescriptor(): T =\n if (kind != CallableMemberDescriptor.Kind.FAKE_OVERRIDE) this\n else overriddenDescriptors.first().getConcreteDescriptor() as T\n\n private fun ValueParameterDescriptor.getDefaultValue(): Expression? ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "cef42c42afe84d0aa8e430c190eff6ade1e54d312072bee6935e0577d6e4cd4c"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1045,
- "startColumn": 13,
- "charOffset": 51826,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1043,
- "startColumn": 1,
- "charOffset": 51691,
- "charLength": 294,
- "snippet": {
- "text": " private fun KtInitializerList.initializersAsExpression() =\n initializers.firstIsInstanceOrNull<KtCallElement>()\n ?.getValueArgumentsInParentheses()\n ?.map { it.getArgumentExpression()?.toDefaultValueExpression() ?: ComplexExpression(\"\") }\n .orEmpty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9c8e56e2bebec6e9c911024a428da95042d1d5131a3fd47af2da4f4b3209c782"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1046,
- "startColumn": 13,
- "charOffset": 51873,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1044,
- "startColumn": 1,
- "charOffset": 51754,
- "charLength": 232,
- "snippet": {
- "text": " initializers.firstIsInstanceOrNull<KtCallElement>()\n ?.getValueArgumentsInParentheses()\n ?.map { it.getArgumentExpression()?.toDefaultValueExpression() ?: ComplexExpression(\"\") }\n .orEmpty()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "bdac285538382eae251f90b18720991819582c534c0041ed46f2f3c4c4e86672"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1046,
- "startColumn": 47,
- "charOffset": 51907,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1044,
- "startColumn": 1,
- "charOffset": 51754,
- "charLength": 232,
- "snippet": {
- "text": " initializers.firstIsInstanceOrNull<KtCallElement>()\n ?.getValueArgumentsInParentheses()\n ?.map { it.getArgumentExpression()?.toDefaultValueExpression() ?: ComplexExpression(\"\") }\n .orEmpty()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ef2eda40da6194d493f6203ef2d6cf68bf49d75a0e50a1cdac6298cf25d3e57b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1014,
- "startColumn": 29,
- "charOffset": 50313,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1012,
- "startColumn": 1,
- "charOffset": 50166,
- "charLength": 339,
- "snippet": {
- "text": " private fun AnnotationDescriptor.mustBeDocumented(): Boolean =\n if (source.toString() == \"NO_SOURCE\") false\n else annotationClass?.annotations?.hasAnnotation(FqName(\"kotlin.annotation.MustBeDocumented\")) ?: false\n\n private suspend fun PropertyDescriptor.getAnnotationsWithBackingField(): List<Annotations.Annotation> ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c3ced46ae2c26b6eba9777200dfec24c61fd68f05a7ee6d3cda2555d5a2e541e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1014,
- "startColumn": 42,
- "charOffset": 50326,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1012,
- "startColumn": 1,
- "charOffset": 50166,
- "charLength": 339,
- "snippet": {
- "text": " private fun AnnotationDescriptor.mustBeDocumented(): Boolean =\n if (source.toString() == \"NO_SOURCE\") false\n else annotationClass?.annotations?.hasAnnotation(FqName(\"kotlin.annotation.MustBeDocumented\")) ?: false\n\n private suspend fun PropertyDescriptor.getAnnotationsWithBackingField(): List<Annotations.Annotation> ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "54e9fd5bd0de2252c38a1928112b25922ad50e0aadd5229d4af3bfb3ed6d7d7e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1086,
- "startColumn": 9,
- "charOffset": 54019,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1084,
- "startColumn": 1,
- "charOffset": 53920,
- "charLength": 276,
- "snippet": {
- "text": "\n private suspend fun DeclarationDescriptorWithSource.fileLevelAnnotations() = ktFile()\n ?.let { file -> resolutionFacade.resolveSession.getFileAnnotations(file) }\n ?.toList()\n ?.parallelMap { it.toAnnotation(scope = Annotations.AnnotationScope.FILE) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0fbdffe008433d0ee801f0d2e9c225ad6c16034dc359307150ab8d2076dc4c76"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1087,
- "startColumn": 9,
- "charOffset": 54102,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1085,
- "startColumn": 1,
- "charOffset": 53921,
- "charLength": 294,
- "snippet": {
- "text": " private suspend fun DeclarationDescriptorWithSource.fileLevelAnnotations() = ktFile()\n ?.let { file -> resolutionFacade.resolveSession.getFileAnnotations(file) }\n ?.toList()\n ?.parallelMap { it.toAnnotation(scope = Annotations.AnnotationScope.FILE) }\n .orEmpty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5ebaf4597aaa9ff07077f3f49ac916902f2c6657f015550af57d362816f3682f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1088,
- "startColumn": 9,
- "charOffset": 54121,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1086,
- "startColumn": 1,
- "charOffset": 54011,
- "charLength": 205,
- "snippet": {
- "text": " ?.let { file -> resolutionFacade.resolveSession.getFileAnnotations(file) }\n ?.toList()\n ?.parallelMap { it.toAnnotation(scope = Annotations.AnnotationScope.FILE) }\n .orEmpty()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7d48e4e799d82fb9553f7e4f42696a4d797e9592df6d551a237bd76837d9b656"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 501,
- "startColumn": 65,
- "charOffset": 25577,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 499,
- "startColumn": 1,
- "charOffset": 25423,
- "charLength": 271,
- "snippet": {
- "text": " name = descriptor.name.asString(),\n isConstructor = false,\n receiver = descriptor.extensionReceiverParameter?.let {\n visitReceiverParameterDescriptor(it, DRIWithPlatformInfo(dri, actual))\n },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7668562b0092f0d1656e061d10d41572b6882023492d8cf3b5c8002faef33d7a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 512,
- "startColumn": 21,
- "charOffset": 26244,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 510,
- "startColumn": 1,
- "charOffset": 26072,
- "charLength": 343,
- "snippet": {
- "text": " generics = generics.await(),\n documentation = descriptor.takeIf { it.kind != CallableMemberDescriptor.Kind.SYNTHESIZED }\n ?.resolveDescriptorData() ?: emptyMap(),\n modifier = descriptor.modifier().toSourceSetDependent(),\n type = descriptor.returnType!!.toBound(),"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "49dc8e72edfa0011fa8bad24bf5c63445c4013052311bf27ce121b3cad948ba9"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1049,
- "startColumn": 82,
- "charOffset": 52068,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1047,
- "startColumn": 1,
- "charOffset": 51963,
- "charLength": 304,
- "snippet": {
- "text": " .orEmpty()\n\n private fun KtExpression.toDefaultValueExpression(): Expression? = when (node?.elementType) {\n KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9a492c6e83ab2ed6ecdd26c4d56b561efd74c876f4260370eda09414e6dd7ab5"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1050,
- "startColumn": 55,
- "charOffset": 52139,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1048,
- "startColumn": 1,
- "charOffset": 51986,
- "charLength": 343,
+ "charOffset": 6977,
+ "charLength": 112,
"snippet": {
- "text": "\n private fun KtExpression.toDefaultValueExpression(): Expression? = when (node?.elementType) {\n KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }"
+ "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": "e5722ca961328a9a84a1f7b076e053e968aacc2b89d3ae69fef2e092bf239f44"
+ "equalIndicator/v1": "ebe15fbd33324037b337e29e7eca4a371dba74c16d61a4ac4cdab7d79156e929"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -68790,2475 +63576,37 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 1050,
+ "startLine": 469,
"startColumn": 62,
- "charOffset": 52146,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1048,
- "startColumn": 1,
- "charOffset": 51986,
- "charLength": 343,
- "snippet": {
- "text": "\n private fun KtExpression.toDefaultValueExpression(): Expression? = when (node?.elementType) {\n KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "591a6052dd8926da06eb3655732b7fceee81cd5a4e91acaca6f620a5f15c3420"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1051,
- "startColumn": 47,
- "charOffset": 52222,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1049,
- "startColumn": 1,
- "charOffset": 51987,
- "charLength": 407,
- "snippet": {
- "text": " private fun KtExpression.toDefaultValueExpression(): Expression? = when (node?.elementType) {\n KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "39ab1510f6196608e11b9d7cd879819863f380e1585eaec49be5eb60565d708d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1051,
- "startColumn": 53,
- "charOffset": 52228,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1049,
- "startColumn": 1,
- "charOffset": 51987,
- "charLength": 407,
- "snippet": {
- "text": " private fun KtExpression.toDefaultValueExpression(): Expression? = when (node?.elementType) {\n KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2824884151e89699462b0db0889df3cbd9a5476c1a5cb65c1d7b9ac45099748b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1051,
- "startColumn": 68,
- "charOffset": 52243,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1049,
- "startColumn": 1,
- "charOffset": 51987,
- "charLength": 407,
- "snippet": {
- "text": " private fun KtExpression.toDefaultValueExpression(): Expression? = when (node?.elementType) {\n KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "72a0bb79b8be731a3166fb46adbe74ede43b075e57d5177cde455fda2f272629"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1052,
- "startColumn": 28,
- "charOffset": 52295,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1050,
- "startColumn": 1,
- "charOffset": 52085,
- "charLength": 387,
- "snippet": {
- "text": " KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }\n KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a947efb12bcdf927dff043465860ae88a71939e1cd584b0b46bba52e6dba720a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1052,
- "startColumn": 35,
- "charOffset": 52302,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1050,
- "startColumn": 1,
- "charOffset": 52085,
- "charLength": 387,
- "snippet": {
- "text": " KtNodeTypes.INTEGER_CONSTANT -> parseLong(node?.text)?.let { IntegerConstant(it) }\n KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }\n KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c8445b1b987b310b30966e6116759201eac83c2d5ffeadb9109c72e52d628c0a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1053,
- "startColumn": 30,
- "charOffset": 52359,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1051,
- "startColumn": 1,
- "charOffset": 52176,
- "charLength": 431,
- "snippet": {
- "text": " KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }\n KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")\n KtNodeTypes.STRING_TEMPLATE -> StringConstant(node.findChildByType(KtNodeTypes.LITERAL_STRING_TEMPLATE_ENTRY)?.text.orEmpty())"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2cb3e4da124912dcb4d897e28a820ada2aada3fab0d6effb6238d6374dc13947"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1053,
- "startColumn": 37,
- "charOffset": 52366,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1051,
- "startColumn": 1,
- "charOffset": 52176,
- "charLength": 431,
- "snippet": {
- "text": " KtNodeTypes.FLOAT_CONSTANT -> if (node?.text?.toLowerCase()?.endsWith('f') == true)\n parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }\n KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")\n KtNodeTypes.STRING_TEMPLATE -> StringConstant(node.findChildByType(KtNodeTypes.LITERAL_STRING_TEMPLATE_ENTRY)?.text.orEmpty())"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d1b55850f1f512cad18dbccc32b8b852a12a10a03d52d03f1d057524ab1fc974"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1054,
- "startColumn": 61,
- "charOffset": 52455,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1052,
- "startColumn": 1,
- "charOffset": 52268,
- "charLength": 397,
- "snippet": {
- "text": " parseFloat(node?.text)?.let { FloatConstant(it) }\n else parseDouble(node?.text)?.let { DoubleConstant(it) }\n KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")\n KtNodeTypes.STRING_TEMPLATE -> StringConstant(node.findChildByType(KtNodeTypes.LITERAL_STRING_TEMPLATE_ENTRY)?.text.orEmpty())\n else -> node?.text?.let { ComplexExpression(it) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "180a43ee51098f0a65d4127a0b1ec49ae46252b2e01e80e81b80ba5098f6dbe7"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1055,
- "startColumn": 118,
- "charOffset": 52590,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1053,
- "startColumn": 1,
- "charOffset": 52330,
- "charLength": 341,
- "snippet": {
- "text": " else parseDouble(node?.text)?.let { DoubleConstant(it) }\n KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")\n KtNodeTypes.STRING_TEMPLATE -> StringConstant(node.findChildByType(KtNodeTypes.LITERAL_STRING_TEMPLATE_ENTRY)?.text.orEmpty())\n else -> node?.text?.let { ComplexExpression(it) }\n }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5d256299b7c92f0ad4e96dad356d5d5024092282105f4acee46979592971923a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1056,
- "startColumn": 21,
- "charOffset": 52628,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1054,
- "startColumn": 1,
- "charOffset": 52395,
- "charLength": 277,
- "snippet": {
- "text": " KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")\n KtNodeTypes.STRING_TEMPLATE -> StringConstant(node.findChildByType(KtNodeTypes.LITERAL_STRING_TEMPLATE_ENTRY)?.text.orEmpty())\n else -> node?.text?.let { ComplexExpression(it) }\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "92674ebbc72944fb930de5dbb3cffc66b0988dcec367d130bb7776076ca05fc2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1056,
- "startColumn": 27,
- "charOffset": 52634,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1054,
- "startColumn": 1,
- "charOffset": 52395,
- "charLength": 277,
- "snippet": {
- "text": " KtNodeTypes.BOOLEAN_CONSTANT -> BooleanConstant(node?.text == \"true\")\n KtNodeTypes.STRING_TEMPLATE -> StringConstant(node.findChildByType(KtNodeTypes.LITERAL_STRING_TEMPLATE_ENTRY)?.text.orEmpty())\n else -> node?.text?.let { ComplexExpression(it) }\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9688d1ff87779513871261c849013bdc14cae1cb54d6a559313505fe22eea8bb"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 824,
- "startColumn": 95,
- "charOffset": 41249,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 822,
- "startColumn": 1,
- "charOffset": 41049,
- "charLength": 291,
- "snippet": {
- "text": "\n private fun org.jetbrains.kotlin.descriptors.annotations.Annotations.getPresentableName(): String? =\n mapNotNull { it.toAnnotation() }.singleOrNull { it.dri.classNames == \"ParameterName\" }?.params?.get(\"name\")\n .safeAs<StringValue>()?.value?.let { unquotedValue(it) }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b3b8669f20b160acace1fb2a2f7d8aa1e4c0078a163a2e4478f89259bd058f98"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 824,
- "startColumn": 103,
- "charOffset": 41257,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 822,
- "startColumn": 1,
- "charOffset": 41049,
- "charLength": 291,
- "snippet": {
- "text": "\n private fun org.jetbrains.kotlin.descriptors.annotations.Annotations.getPresentableName(): String? =\n mapNotNull { it.toAnnotation() }.singleOrNull { it.dri.classNames == \"ParameterName\" }?.params?.get(\"name\")\n .safeAs<StringValue>()?.value?.let { unquotedValue(it) }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "cf5bd391ecd8ac0d727e97b48904ae9fe4a014bd8bca9875b3f7d3f18cd74467"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 825,
- "startColumn": 35,
- "charOffset": 41305,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 823,
- "startColumn": 1,
- "charOffset": 41050,
- "charLength": 344,
- "snippet": {
- "text": " private fun org.jetbrains.kotlin.descriptors.annotations.Annotations.getPresentableName(): String? =\n mapNotNull { it.toAnnotation() }.singleOrNull { it.dri.classNames == \"ParameterName\" }?.params?.get(\"name\")\n .safeAs<StringValue>()?.value?.let { unquotedValue(it) }\n\n private suspend fun KotlinType.toBound(): Bound {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c3d9186845ac66128121778d32c09087f126850dd280946ca5fab23c2968516e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 825,
- "startColumn": 42,
- "charOffset": 41312,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 823,
- "startColumn": 1,
- "charOffset": 41050,
- "charLength": 344,
- "snippet": {
- "text": " private fun org.jetbrains.kotlin.descriptors.annotations.Annotations.getPresentableName(): String? =\n mapNotNull { it.toAnnotation() }.singleOrNull { it.dri.classNames == \"ParameterName\" }?.params?.get(\"name\")\n .safeAs<StringValue>()?.value?.let { unquotedValue(it) }\n\n private suspend fun KotlinType.toBound(): Bound {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "840c232f220dbc30fe0d9de113797e2b3efeb40075741799cf86fe5ec28541a9"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1094,
- "startColumn": 53,
- "charOffset": 54463,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1092,
- "startColumn": 1,
- "charOffset": 54271,
- "charLength": 339,
- "snippet": {
- "text": " get() = kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE ||\n kind == CallableMemberDescriptor.Kind.SYNTHESIZED ||\n containingDeclaration.fqNameOrNull()?.asString()\n ?.let { it == \"kotlin.Any\" || it == \"kotlin.Enum\" || it == \"java.lang.Enum\" || it == \"java.lang.Object\" } == true\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f4f6e0680c6b51397f435eef00b1a679c633c234d4c1d6a43615d6088657deca"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1095,
- "startColumn": 21,
- "charOffset": 54496,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1093,
- "startColumn": 1,
- "charOffset": 54342,
- "charLength": 353,
- "snippet": {
- "text": " kind == CallableMemberDescriptor.Kind.SYNTHESIZED ||\n containingDeclaration.fqNameOrNull()?.asString()\n ?.let { it == \"kotlin.Any\" || it == \"kotlin.Enum\" || it == \"java.lang.Enum\" || it == \"java.lang.Object\" } == true\n\n private fun AncestryNode.exceptionInSupertypesOrNull(): ExceptionInSupertypes? ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e5adde1f5b5eb325d67aa66abd455cce2f95dd5e76e83597511cbfd9d210d376"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiSourceFile]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiSourceFile\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1083,
- "startColumn": 50,
- "charOffset": 53899,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1081,
- "startColumn": 1,
- "charOffset": 53781,
- "charLength": 229,
- "snippet": {
- "text": "\n private fun DeclarationDescriptorWithSource.ktFile(): KtFile? =\n (source.containingFile as? PsiSourceFile)?.psiFile as? KtFile\n\n private suspend fun DeclarationDescriptorWithSource.fileLevelAnnotations() = ktFile()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ca3b12054c9289ce779d86ff2a75c7f0a1743b15960482ccb6e73a2ffe9f9510"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 708,
- "startColumn": 48,
- "charOffset": 35636,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 706,
- "startColumn": 1,
- "charOffset": 35461,
- "charLength": 319,
- "snippet": {
- "text": " dri = parent.dri.copy(target = PointingToCallableParameters(index)),\n name = descriptor.name.asString(),\n type = descriptor.varargElementType?.toBound() ?: descriptor.type.toBound(),\n expectPresentInSet = null,\n documentation = descriptor.resolveDescriptorData(),"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e5fdf9eb0621f80245f8fba2e590c77bd05d3e514dd4ba3310239a0b961f1050"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 715,
- "startColumn": 45,
- "charOffset": 36107,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 713,
- "startColumn": 1,
- "charOffset": 35885,
- "charLength": 273,
- "snippet": {
- "text": " descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),\n descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),\n descriptor.getDefaultValue()?.let { DefaultValue(it) }\n ))\n )"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9ee656258de5793520d987f5671be265a23f7f826acbfb38c63ff0d6a196ee25"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : CallableDescriptor]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : CallableDescriptor\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 908,
- "startColumn": 9,
- "charOffset": 45039,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 906,
- "startColumn": 1,
- "charOffset": 44946,
- "charLength": 198,
- "snippet": {
- "text": "\n private fun DeclarationDescriptor.getJavaDocs() = (this as? CallableDescriptor)\n ?.overriddenDescriptors\n ?.mapNotNull { it.findPsi() as? PsiNamedElement }\n ?.firstOrNull()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9fa9a9cc23c523b4d3e01204e3ce65982b2edf478e598c8460565aad30eef430"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 909,
- "startColumn": 9,
- "charOffset": 45071,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 907,
- "startColumn": 1,
- "charOffset": 44947,
- "charLength": 252,
- "snippet": {
- "text": " private fun DeclarationDescriptor.getJavaDocs() = (this as? CallableDescriptor)\n ?.overriddenDescriptors\n ?.mapNotNull { it.findPsi() as? PsiNamedElement }\n ?.firstOrNull()\n ?.let { javadocParser.parseDocumentation(it) }"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e76477a7100b46006519a45f9251505235d4a7093d0548f50ad48dc3be3a4d4b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 910,
- "startColumn": 9,
- "charOffset": 45129,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 908,
- "startColumn": 1,
- "charOffset": 45031,
- "charLength": 169,
- "snippet": {
- "text": " ?.overriddenDescriptors\n ?.mapNotNull { it.findPsi() as? PsiNamedElement }\n ?.firstOrNull()\n ?.let { javadocParser.parseDocumentation(it) }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "607c09504c1998d2e93401a07b984c94f0ed3349f5e7ea46340fa99ac786d246"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 911,
- "startColumn": 9,
- "charOffset": 45153,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 909,
- "startColumn": 1,
- "charOffset": 45063,
- "charLength": 258,
- "snippet": {
- "text": " ?.mapNotNull { it.findPsi() as? PsiNamedElement }\n ?.firstOrNull()\n ?.let { javadocParser.parseDocumentation(it) }\n\n private suspend fun ClassDescriptor.companion(dri: DRIWithPlatformInfo): DObject? = companionObjectDescriptor?.let {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f363478ae4683284883122fda28378745750c23deb627b4e69d04748a0d1393d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 882,
- "startColumn": 71,
- "charOffset": 43948,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 880,
- "startColumn": 1,
- "charOffset": 43867,
- "charLength": 155,
- "snippet": {
- "text": " }\n\n private fun DeclarationDescriptor.getDocumentation() = (findKDoc()?.let {\n MarkdownParser.parseFromKDocTag(\n kDocTag = it,"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ac93bb5ab61cf5b65ca212ed036fc8a73b2aecb96ca41ba6115c32d40a13b7b2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 893,
- "startColumn": 36,
- "charOffset": 44456,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 891,
- "startColumn": 1,
- "charOffset": 44316,
- "charLength": 286,
- "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\")"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "cf764496d17e5303a27b8a2af41e80e5f8848d817e61cb04c9abb76d5cd2240b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 899,
- "startColumn": 63,
- "charOffset": 44723,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 897,
- "startColumn": 1,
- "charOffset": 44628,
- "charLength": 208,
- "snippet": {
- "text": " }\n },\n kdocLocation = toSourceElement.containingFile.name?.let {\n val fqName = fqNameOrNull()?.asString()\n if (fqName != null) \"$it/$fqName\""
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b72518dcd271bc956232b4b41dae827a600c6e9e3fd9d86110d63d99fe813dc4"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 900,
- "startColumn": 44,
- "charOffset": 44774,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 898,
- "startColumn": 1,
- "charOffset": 44646,
- "charLength": 214,
- "snippet": {
- "text": " },\n kdocLocation = toSourceElement.containingFile.name?.let {\n val fqName = fqNameOrNull()?.asString()\n if (fqName != null) \"$it/$fqName\"\n else it"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7a5207dc1347b6a52ed06822d42677dc72706d05cb9762899952c05301b544a2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type ???",
- "markdown": "Unnecessary safe call on a non-null receiver of type ???"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 905,
- "startColumn": 24,
- "charOffset": 44908,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 903,
- "startColumn": 1,
- "charOffset": 44861,
- "charLength": 169,
- "snippet": {
- "text": " }\n )\n } ?: getJavaDocs())?.takeIf { it.children.isNotEmpty() }\n\n private fun DeclarationDescriptor.getJavaDocs() = (this as? CallableDescriptor)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "45f4493664403145acabd73d72d1fae0c00164916509fcd1a37c8d1996c0d672"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 770,
- "startColumn": 27,
- "charOffset": 38970,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 768,
- "startColumn": 1,
- "charOffset": 38840,
- "charLength": 170,
- "snippet": {
- "text": "\n private fun DeclarationDescriptor.resolveDescriptorData(): SourceSetDependent<DocumentationNode> =\n getDocumentation()?.toSourceSetDependent() ?: emptyMap()\n\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9af8846011662737b95159e999c3af9f245e5222bc15aadf9fcd69030d5c9f43"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 542,
- "startColumn": 65,
- "charOffset": 27728,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 540,
- "startColumn": 1,
- "charOffset": 27597,
- "charLength": 248,
- "snippet": {
- "text": " name = name,\n isConstructor = true,\n receiver = descriptor.extensionReceiverParameter?.let {\n visitReceiverParameterDescriptor(it, DRIWithPlatformInfo(dri, actual))\n },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d2281cdf2bca183516132e89c0794c844abc9933c02d17ef0263eb4787f27599"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 556,
- "startColumn": 109,
- "charOffset": 28609,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 554,
- "startColumn": 1,
- "charOffset": 28424,
- "charLength": 395,
- "snippet": {
- "text": " Pair(\n entry.key,\n entry.value.copy(children = (entry.value.children.find { it is Constructor }?.root?.let { constructor ->\n listOf(Description(constructor))\n } ?: emptyList<TagWrapper>()) + entry.value.children.filterIsInstance<Param>()))"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a2461bbf184ca48d584fdf77c67f0b89948e0ae2e112d1babcccc0f08d1dccff"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 556,
- "startColumn": 115,
- "charOffset": 28615,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 554,
- "startColumn": 1,
- "charOffset": 28424,
- "charLength": 395,
- "snippet": {
- "text": " Pair(\n entry.key,\n entry.value.copy(children = (entry.value.children.find { it is Constructor }?.root?.let { constructor ->\n listOf(Description(constructor))\n } ?: emptyList<TagWrapper>()) + entry.value.children.filterIsInstance<Param>()))"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6ddf49047585370d7f954c55ad2dc7c52171b33a64b43edb740e1ada4b42256f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : KotlinSourceElement]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : KotlinSourceElement\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1032,
- "startColumn": 42,
- "charOffset": 51170,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1030,
- "startColumn": 1,
- "charOffset": 51054,
- "charLength": 249,
- "snippet": {
- "text": "\n private fun ValueParameterDescriptor.getDefaultValue(): Expression? =\n ((source as? KotlinSourceElement)?.psi as? KtParameter)?.defaultValue?.toDefaultValueExpression()\n\n private fun PropertyDescriptor.getDefaultValue(): Expression? ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "11b19953a415ec4749cf0a3cc48fafafc31b9fb69d944bace84f35d4e88da35e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : KtParameter]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : KtParameter\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1032,
- "startColumn": 64,
- "charOffset": 51192,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1030,
- "startColumn": 1,
- "charOffset": 51054,
- "charLength": 249,
- "snippet": {
- "text": "\n private fun ValueParameterDescriptor.getDefaultValue(): Expression? =\n ((source as? KotlinSourceElement)?.psi as? KtParameter)?.defaultValue?.toDefaultValueExpression()\n\n private fun PropertyDescriptor.getDefaultValue(): Expression? ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "65becaee71c5a1ec90bd69f716db063ba9e2e59bdc036ce906c94980e7f921ab"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1032,
- "startColumn": 78,
- "charOffset": 51206,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1030,
- "startColumn": 1,
- "charOffset": 51054,
- "charLength": 249,
- "snippet": {
- "text": "\n private fun ValueParameterDescriptor.getDefaultValue(): Expression? =\n ((source as? KotlinSourceElement)?.psi as? KtParameter)?.defaultValue?.toDefaultValueExpression()\n\n private fun PropertyDescriptor.getDefaultValue(): Expression? ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f8276a0622b1f32c8300fc75b02e1b01a87311a46e35fd9d1abf943af42e3c1a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : KotlinSourceElement]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : KotlinSourceElement\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1035,
- "startColumn": 41,
- "charOffset": 51344,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1033,
- "startColumn": 1,
- "charOffset": 51235,
- "charLength": 223,
- "snippet": {
- "text": "\n private fun PropertyDescriptor.getDefaultValue(): Expression? =\n (source as? KotlinSourceElement)?.psi?.children?.filterIsInstance<KtConstantExpression>()?.firstOrNull()\n ?.toDefaultValueExpression()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f405f03b1e868b9f6c1be9ce789468841412fbf807bd903908c8bf0c219771f2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1035,
- "startColumn": 46,
- "charOffset": 51349,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1033,
- "startColumn": 1,
- "charOffset": 51235,
- "charLength": 223,
- "snippet": {
- "text": "\n private fun PropertyDescriptor.getDefaultValue(): Expression? =\n (source as? KotlinSourceElement)?.psi?.children?.filterIsInstance<KtConstantExpression>()?.firstOrNull()\n ?.toDefaultValueExpression()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "8bca47c6115d348e381f09c38d5525dbb003bbe1759052357be43a8c35812ccc"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1035,
- "startColumn": 56,
- "charOffset": 51359,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1033,
- "startColumn": 1,
- "charOffset": 51235,
- "charLength": 223,
- "snippet": {
- "text": "\n private fun PropertyDescriptor.getDefaultValue(): Expression? =\n (source as? KotlinSourceElement)?.psi?.children?.filterIsInstance<KtConstantExpression>()?.firstOrNull()\n ?.toDefaultValueExpression()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0c8f1105ec43dfd5b7e40ea22e11d6d6d931d853d22f5303536edf1a12fc54bf"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1035,
- "startColumn": 98,
- "charOffset": 51401,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1033,
- "startColumn": 1,
- "charOffset": 51235,
- "charLength": 223,
- "snippet": {
- "text": "\n private fun PropertyDescriptor.getDefaultValue(): Expression? =\n (source as? KotlinSourceElement)?.psi?.children?.filterIsInstance<KtConstantExpression>()?.firstOrNull()\n ?.toDefaultValueExpression()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "37f4253faecc8edbcfe4cec01d7816b2232da0684378331ecc5dddcf0799e6cd"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1036,
- "startColumn": 13,
- "charOffset": 51429,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1034,
- "startColumn": 1,
- "charOffset": 51236,
- "charLength": 290,
- "snippet": {
- "text": " private fun PropertyDescriptor.getDefaultValue(): Expression? =\n (source as? KotlinSourceElement)?.psi?.children?.filterIsInstance<KtConstantExpression>()?.firstOrNull()\n ?.toDefaultValueExpression()\n\n private fun ClassDescriptor.getAppliedConstructorParameters() ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "26e5c30011a6b4ff26f8e95def97962834bb6755e87c680ac455473f4a9d8990"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1017,
- "startColumn": 41,
- "charOffset": 50546,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1015,
- "startColumn": 1,
- "charOffset": 50397,
- "charLength": 265,
- "snippet": {
- "text": "\n private suspend fun PropertyDescriptor.getAnnotationsWithBackingField(): List<Annotations.Annotation> =\n getAnnotations() + (backingField?.getAnnotations() ?: emptyList())\n\n private fun List<Annotations.Annotation>.toAdditionalExtras() = mapNotNull {"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "cca52ffe7b44ee6b2de17668a95c28b17854f9c380c7128f9d9e28954191ccf1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 446,
- "startColumn": 65,
- "charOffset": 22704,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 444,
- "startColumn": 1,
- "charOffset": 22562,
- "charLength": 259,
- "snippet": {
- "text": " dri = dri,\n name = descriptor.name.asString(),\n receiver = descriptor.extensionReceiverParameter?.let {\n visitReceiverParameterDescriptor(it, DRIWithPlatformInfo(dri, actual))\n },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1fc586f01b78be60626a155e914ac94411aaebc3c60f8351a4c1d3af452bb3f0"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 450,
- "startColumn": 106,
- "charOffset": 22961,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 448,
- "startColumn": 1,
- "charOffset": 22803,
- "charLength": 257,
- "snippet": {
- "text": " },\n sources = actual,\n getter = descriptor.accessors.filterIsInstance<PropertyGetterDescriptor>().singleOrNull()?.let {\n visitPropertyAccessorDescriptor(it, descriptor, dri)\n },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "35b9c7f01dc26c1361d47b8a34c5fe99b27063afe26d6b0f99c639c272674cc8"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 453,
- "startColumn": 106,
- "charOffset": 23166,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 451,
- "startColumn": 1,
- "charOffset": 22969,
- "charLength": 296,
- "snippet": {
- "text": " visitPropertyAccessorDescriptor(it, descriptor, dri)\n },\n setter = descriptor.accessors.filterIsInstance<PropertySetterDescriptor>().singleOrNull()?.let {\n visitPropertyAccessorDescriptor(it, descriptor, dri)\n },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "339404e47117c2cd05d6fc27698e9d0e596e51fbe05cbfb2dee78c925f3b0f3c"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 470,
- "startColumn": 53,
- "charOffset": 24298,
- "charLength": 2,
+ "charOffset": 23733,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 468,
+ "startLine": 467,
"startColumn": 1,
- "charOffset": 24071,
- "charLength": 355,
+ "charOffset": 23594,
+ "charLength": 377,
"snippet": {
- "text": " (descriptor.getAnnotationsWithBackingField() + descriptor.fileLevelAnnotations()).toSourceSetDependent()\n .toAnnotations(),\n descriptor.getDefaultValue()?.let { DefaultValue(it) },\n InheritedMember(inheritedFrom.toSourceSetDependent()),\n )"
+ "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) },"
}
}
},
@@ -71271,7 +63619,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "678bd4d75cd4232eb61fe1a42aa71f321690e987d9ef2410fed4ee8953ca78ba"
+ "equalIndicator/v1": "031f25438cca61ee94dd9fe5c100ccca6bdb36509969f4b1eebaa10c161caaae"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71281,12 +63629,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for psiFiles.singleOrNull { it.name == \"package-info.java\" }]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for psiFiles.singleOrNull { it.name == \"package-info.java\" }\\]"
+ "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": [
{
@@ -71296,22 +63644,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 145,
- "startColumn": 44,
- "charOffset": 6658,
- "charLength": 2,
+ "startLine": 469,
+ "startColumn": 74,
+ "charOffset": 23745,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 143,
+ "startLine": 467,
"startColumn": 1,
- "charOffset": 6475,
- "charLength": 290,
+ "charOffset": 23594,
+ "charLength": 377,
"snippet": {
- "text": " val dri = DRI(packageName = packageName)\n val packageInfo = psiFiles.singleOrNull { it.name == \"package-info.java\" }\n val documentation = packageInfo?.let {\n javadocParser.parseDocumentation(it).toSourceSetDependent()\n }.orEmpty()"
+ "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) },"
}
}
},
@@ -71324,7 +63672,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "971745d7de6b5f453c2900755c8fe3d2d64aacf3284c9454fba74f623c606c21"
+ "equalIndicator/v1": "0a8f0c12162988484d52ad59c121762d38d64f8c487309215faabb23c1f482e4"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71334,12 +63682,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for psiFiles.singleOrNull { it.name == \"package-info.java\" }]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for psiFiles.singleOrNull { it.name == \"package-info.java\" }\\]"
+ "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": [
{
@@ -71349,22 +63697,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 148,
- "startColumn": 42,
- "charOffset": 6807,
- "charLength": 2,
+ "startLine": 469,
+ "startColumn": 86,
+ "charOffset": 23757,
+ "charLength": 6,
"snippet": {
- "text": "?."
+ "text": "STATIC"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 146,
+ "startLine": 467,
"startColumn": 1,
- "charOffset": 6666,
- "charLength": 211,
+ "charOffset": 23594,
+ "charLength": 377,
"snippet": {
- "text": " javadocParser.parseDocumentation(it).toSourceSetDependent()\n }.orEmpty()\n val annotations = packageInfo?.packageStatement?.annotationList?.annotations\n\n DPackage("
+ "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) },"
}
}
},
@@ -71377,7 +63725,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "93cf80f6fa1427014547ec6aa8e9bac0d5c65048e4d98e70d787dfb2969512dc"
+ "equalIndicator/v1": "7366ad7198b3b1e7144fd43f13fc75ead4b791d2e3878d0eb9495be19d1a2841"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71387,12 +63735,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71402,22 +63750,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 148,
- "startColumn": 60,
- "charOffset": 6825,
- "charLength": 2,
+ "startLine": 470,
+ "startColumn": 62,
+ "charOffset": 23829,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 146,
+ "startLine": 468,
"startColumn": 1,
- "charOffset": 6666,
- "charLength": 211,
+ "charOffset": 23595,
+ "charLength": 476,
"snippet": {
- "text": " javadocParser.parseDocumentation(it).toSourceSetDependent()\n }.orEmpty()\n val annotations = packageInfo?.packageStatement?.annotationList?.annotations\n\n DPackage("
+ "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) },"
}
}
},
@@ -71430,7 +63778,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "67bc46197e7fcfb1a0bb75788c583bfe354e5106ae74711e11db4a7e8849041f"
+ "equalIndicator/v1": "84bb97c83bec3964209e163620726fa5e10a8e4db6e0afaf439e67217f8d7ce8"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71440,12 +63788,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71455,22 +63803,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 148,
- "startColumn": 76,
- "charOffset": 6841,
- "charLength": 2,
+ "startLine": 470,
+ "startColumn": 74,
+ "charOffset": 23841,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 146,
+ "startLine": 468,
"startColumn": 1,
- "charOffset": 6666,
- "charLength": 211,
+ "charOffset": 23595,
+ "charLength": 476,
"snippet": {
- "text": " javadocParser.parseDocumentation(it).toSourceSetDependent()\n }.orEmpty()\n val annotations = packageInfo?.packageStatement?.annotationList?.annotations\n\n DPackage("
+ "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) },"
}
}
},
@@ -71483,7 +63831,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "e00bae530b086929d76a94294b55b84b35934000977c3e19495cb8954e214325"
+ "equalIndicator/v1": "fa75be7e0561e0e968a898a8eede40fcee1ed85f5e9cf466a7ddf7aea5b508f0"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71493,12 +63841,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71508,22 +63856,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 164,
- "startColumn": 32,
- "charOffset": 7382,
- "charLength": 2,
+ "startLine": 470,
+ "startColumn": 86,
+ "charOffset": 23853,
+ "charLength": 6,
"snippet": {
- "text": "?."
+ "text": "NATIVE"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 162,
+ "startLine": 468,
"startColumn": 1,
- "charOffset": 7270,
- "charLength": 225,
+ "charOffset": 23595,
+ "charLength": 476,
"snippet": {
- "text": " setOf(sourceSetData),\n PropertyContainer.withAll(\n annotations?.toList().orEmpty().toListOfAnnotations().toSourceSetDependent().toAnnotations()\n )\n )"
+ "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) },"
}
}
},
@@ -71536,7 +63884,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "80b724176b55013dd3da90e40d85cef5828289ed205788e927f0be59cb947fa8"
+ "equalIndicator/v1": "9ab7b548f5b75f0eb59eb1a7d0288393dc9da68d65a41b1134974998e41e8e53"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71546,12 +63894,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71561,22 +63909,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 112,
- "startColumn": 72,
- "charOffset": 5053,
- "charLength": 2,
+ "startLine": 471,
+ "startColumn": 68,
+ "charOffset": 23931,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 110,
+ "startLine": 469,
"startColumn": 1,
- "charOffset": 4919,
- "charLength": 202,
+ "charOffset": 23672,
+ "charLength": 501,
"snippet": {
- "text": " private val cachedBounds = hashMapOf<String, Bound>()\n\n private fun PsiModifierListOwner.getVisibility() = modifierList?.let {\n val ml = it.children.toList()\n when {"
+ "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) },"
}
}
},
@@ -71589,7 +63937,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "c36a2cf18219dd1839087feddee0c77d7636bce51cfc8f2f09c337102638eee5"
+ "equalIndicator/v1": "191aad928f82fcb4f414d69b983008211c0f869cbd89204f29ecd468d4389a2f"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71599,12 +63947,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiElement]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiElement\\]?"
+ "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": [
{
@@ -71614,22 +63962,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 606,
- "startColumn": 69,
- "charOffset": 29947,
- "charLength": 2,
+ "startLine": 471,
+ "startColumn": 80,
+ "charOffset": 23943,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 604,
+ "startLine": 469,
"startColumn": 1,
- "charOffset": 29766,
- "charLength": 266,
+ "charOffset": 23672,
+ "charLength": 501,
"snippet": {
- "text": " */\n private fun JvmAnnotationAttributeValue.toValue(): AnnotationParameterValue? = when (this) {\n is JvmAnnotationEnumFieldValue -> (field as? PsiElement)?.let { EnumValue(fieldName ?: \"\", DRI.from(it)) }\n else -> null\n }"
+ "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) },"
}
}
},
@@ -71642,7 +63990,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "aa761844b028f29a006abcde286942b05386f8431200d1c461c5d735250e4cda"
+ "equalIndicator/v1": "e57f684342da8ea545c7b129a466598b4e5d69765f9d317c9f41ad95933835c7"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71652,12 +64000,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71667,22 +64015,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 69,
- "startColumn": 17,
- "charOffset": 3403,
- "charLength": 2,
+ "startLine": 471,
+ "startColumn": 92,
+ "charOffset": 23955,
+ "charLength": 12,
"snippet": {
- "text": "?."
+ "text": "SYNCHRONIZED"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 67,
+ "startLine": 469,
"startColumn": 1,
- "charOffset": 3290,
- "charLength": 248,
+ "charOffset": 23672,
+ "charLength": 501,
"snippet": {
- "text": "\n val sourceRoots = environment.configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }\n ?: listOf()"
+ "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) },"
}
}
},
@@ -71695,7 +64043,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "2dca2bb8f17fafb6e2d16c909cc67163ac1e019dbe2ecaf9388aa3a2749d80e6"
+ "equalIndicator/v1": "9c5a7a6211298a6c6eda55032a7128c8bb4c0809a0117a9e26602665bd749796"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71705,12 +64053,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71720,22 +64068,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 70,
- "startColumn": 17,
- "charOffset": 3456,
- "charLength": 2,
+ "startLine": 472,
+ "startColumn": 64,
+ "charOffset": 24035,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 68,
+ "startLine": 470,
"startColumn": 1,
- "charOffset": 3291,
- "charLength": 336,
+ "charOffset": 23768,
+ "charLength": 505,
"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": " 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) },"
}
}
},
@@ -71748,7 +64096,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "e14a2031f105ac4c227bf95cd4461cc9934c107ac718b2f5d6ae6fc7e2b8a048"
+ "equalIndicator/v1": "848754dc1c32d29a9df487b2d88c8b6fce59b96038166880376f4c482ea2ab6c"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71758,12 +64106,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71773,22 +64121,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 76,
- "startColumn": 60,
- "charOffset": 3822,
- "charLength": 2,
+ "startLine": 472,
+ "startColumn": 76,
+ "charOffset": 24047,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 74,
+ "startLine": 470,
"startColumn": 1,
- "charOffset": 3629,
- "charLength": 331,
+ "charOffset": 23768,
+ "charLength": 505,
"snippet": {
- "text": " val psiFiles = sourceRoots.parallelMap { sourceRoot ->\n sourceRoot.absoluteFile.walkTopDown().mapNotNull {\n localFileSystem.findFileByPath(it.path)?.let { vFile ->\n PsiManager.getInstance(environment.project).findFile(vFile) as? PsiJavaFile\n }"
+ "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) },"
}
}
},
@@ -71801,7 +64149,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "527b5cde930fec156c87da135aa3012f90224f3df2738a999ad62785896f6645"
+ "equalIndicator/v1": "345349ab6998e746fd7b106946b88c35a9cd292ed8fa798aa0488030efd6b3f6"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71811,12 +64159,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71826,22 +64174,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 594,
- "startColumn": 41,
- "charOffset": 29282,
- "charLength": 2,
+ "startLine": 472,
+ "startColumn": 88,
+ "charOffset": 24059,
+ "charLength": 8,
"snippet": {
- "text": "?."
+ "text": "STRICTFP"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 592,
+ "startLine": 470,
"startColumn": 1,
- "charOffset": 29146,
- "charLength": 282,
+ "charOffset": 23768,
+ "charLength": 505,
"snippet": {
- "text": "\n private fun JvmAnnotationAttribute.toValue(): AnnotationParameterValue = when (this) {\n is PsiNameValuePair -> value?.toValue() ?: attributeValue?.toValue() ?: StringValue(\"\")\n else -> StringValue(this.attributeName)\n }.let { annotationValue ->"
+ "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) },"
}
}
},
@@ -71854,7 +64202,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "bd55230fa71e2b1df958829a87562cf985da741f696cdb2984312c8694cc489b"
+ "equalIndicator/v1": "826e407ef59179d57e1d9c5a4900e021d0f63f59423cd435e545f504261a22c4"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71864,12 +64212,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71879,22 +64227,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 594,
- "startColumn": 70,
- "charOffset": 29311,
- "charLength": 2,
+ "startLine": 473,
+ "startColumn": 65,
+ "charOffset": 24136,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 592,
+ "startLine": 471,
"startColumn": 1,
- "charOffset": 29146,
- "charLength": 282,
+ "charOffset": 23864,
+ "charLength": 512,
"snippet": {
- "text": "\n private fun JvmAnnotationAttribute.toValue(): AnnotationParameterValue = when (this) {\n is PsiNameValuePair -> value?.toValue() ?: attributeValue?.toValue() ?: StringValue(\"\")\n else -> StringValue(this.attributeName)\n }.let { annotationValue ->"
+ "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) }"
}
}
},
@@ -71907,7 +64255,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "98ed7d303be53e408bd4443519386e4f9d27b5de83691e0723ce94a72cb0503c"
+ "equalIndicator/v1": "2fc80d6459675358557a8c745922e5c1756b01f7968e48c1758bda82d5f35222"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71917,12 +64265,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71932,22 +64280,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 539,
- "startColumn": 63,
- "charOffset": 26618,
- "charLength": 2,
+ "startLine": 473,
+ "startColumn": 77,
+ "charOffset": 24148,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 537,
+ "startLine": 471,
"startColumn": 1,
- "charOffset": 26494,
- "charLength": 296,
+ "charOffset": 23864,
+ "charLength": 512,
"snippet": {
- "text": "\n private fun PsiMethod.getPropertyNameForFunction() =\n getAnnotation(DescriptorUtils.JVM_NAME.asString())?.findAttributeValue(\"name\")?.text\n ?: when {\n JvmAbi.isGetterName(name) -> propertyNameByGetMethodName(Name.identifier(name))?.asString()"
+ "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) }"
}
}
},
@@ -71960,7 +64308,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "45814b78d913a9b67923674eaadeb722687bd562c1c4d218fefb1546f1269cae"
+ "equalIndicator/v1": "dcc5467c7f0455cc1c376756c198ec9a5713fddf4162f49a08d1e8c310458e53"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -71970,12 +64318,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -71985,22 +64333,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 539,
- "startColumn": 91,
- "charOffset": 26646,
- "charLength": 2,
+ "startLine": 473,
+ "startColumn": 89,
+ "charOffset": 24160,
+ "charLength": 9,
"snippet": {
- "text": "?."
+ "text": "TRANSIENT"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 537,
+ "startLine": 471,
"startColumn": 1,
- "charOffset": 26494,
- "charLength": 296,
+ "charOffset": 23864,
+ "charLength": 512,
"snippet": {
- "text": "\n private fun PsiMethod.getPropertyNameForFunction() =\n getAnnotation(DescriptorUtils.JVM_NAME.asString())?.findAttributeValue(\"name\")?.text\n ?: when {\n JvmAbi.isGetterName(name) -> propertyNameByGetMethodName(Name.identifier(name))?.asString()"
+ "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) }"
}
}
},
@@ -72013,7 +64361,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "ebe7972cbaec353233362416ba7fddf13f68fbd800a617ddac5fa969a3e366e1"
+ "equalIndicator/v1": "cd0f31c216ce51b0d6003ecf479e776d85ca79a4641e8c9b4bfc0e534ca178d4"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72023,12 +64371,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72038,22 +64386,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 541,
- "startColumn": 100,
- "charOffset": 26778,
- "charLength": 2,
+ "startLine": 474,
+ "startColumn": 64,
+ "charOffset": 24237,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 539,
+ "startLine": 472,
"startColumn": 1,
- "charOffset": 26556,
- "charLength": 386,
+ "charOffset": 23972,
+ "charLength": 422,
"snippet": {
- "text": " getAnnotation(DescriptorUtils.JVM_NAME.asString())?.findAttributeValue(\"name\")?.text\n ?: when {\n JvmAbi.isGetterName(name) -> propertyNameByGetMethodName(Name.identifier(name))?.asString()\n JvmAbi.isSetterName(name) -> propertyNamesBySetMethodName(Name.identifier(name)).firstOrNull()\n ?.asString()"
+ "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()"
}
}
},
@@ -72066,7 +64414,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "ac6f4e0404932e7c27a9652e3a1f9e82dba1b8595857c943ec86ef515f64c6f5"
+ "equalIndicator/v1": "8b3be4242904b153bbffc88b5f105c0dfe20e66894eee78cea940b30bbd026f5"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72076,12 +64424,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72091,22 +64439,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 543,
- "startColumn": 25,
- "charOffset": 26930,
- "charLength": 2,
+ "startLine": 474,
+ "startColumn": 76,
+ "charOffset": 24249,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 541,
+ "startLine": 472,
"startColumn": 1,
- "charOffset": 26679,
- "charLength": 314,
+ "charOffset": 23972,
+ "charLength": 422,
"snippet": {
- "text": " JvmAbi.isGetterName(name) -> propertyNameByGetMethodName(Name.identifier(name))?.asString()\n JvmAbi.isSetterName(name) -> propertyNamesBySetMethodName(Name.identifier(name)).firstOrNull()\n ?.asString()\n else -> null\n }"
+ "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()"
}
}
},
@@ -72119,7 +64467,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "4e55abd8667adc8f13ca7c288b3a7c855437fd8689fb5919ac0a89183183ba70"
+ "equalIndicator/v1": "10305906bff7848d38de7beadf2efba96b336cd6a31e2dcdc00366c0147cb369"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72129,12 +64477,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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"
},
"locations": [
{
@@ -72144,22 +64492,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 661,
- "startColumn": 66,
- "charOffset": 32745,
- "charLength": 2,
+ "startLine": 474,
+ "startColumn": 88,
+ "charOffset": 24261,
+ "charLength": 8,
"snippet": {
- "text": "?."
+ "text": "VOLATILE"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 659,
+ "startLine": 472,
"startColumn": 1,
- "charOffset": 32635,
- "charLength": 129,
+ "charOffset": 23972,
+ "charLength": 422,
"snippet": {
- "text": "\n private val PsiElement.psiReference\n get() = getChildOfType<PsiJavaCodeReferenceElement>()?.resolve()\n }\n}"
+ "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()"
}
}
},
@@ -72172,7 +64520,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "bdd401252bb6b516c3d10f0dc806d03e6159bfdcfb2309015926a6dfaad904eb"
+ "equalIndicator/v1": "02f85c0724c1579d3cf7ac6b5243c058c787b0df35e630769e3c7014a028bc30"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72182,12 +64530,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72197,22 +64545,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 421,
- "startColumn": 85,
- "charOffset": 20262,
- "charLength": 2,
+ "startLine": 475,
+ "startColumn": 66,
+ "charOffset": 24339,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 419,
+ "startLine": 473,
"startColumn": 1,
- "charOffset": 20167,
- "charLength": 208,
+ "charOffset": 24072,
+ "charLength": 323,
"snippet": {
- "text": " }\n\n private fun PsiReferenceList.toDriList() = referenceElements.mapNotNull { it?.resolve()?.let { DRI.from(it) } }\n\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull("
+ "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"
}
}
},
@@ -72225,7 +64573,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "5ba261b0b6862252948f72dfe4a47c82afd716f52eda58b997ed4f1f2b20b911"
+ "equalIndicator/v1": "71fb30db4c46e28e0f833dd2990d9dd09f38b399ee9fc4945bdcd5f77f04f00b"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72235,12 +64583,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72250,22 +64598,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 421,
- "startColumn": 96,
- "charOffset": 20273,
- "charLength": 2,
+ "startLine": 475,
+ "startColumn": 78,
+ "charOffset": 24351,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 419,
+ "startLine": 473,
"startColumn": 1,
- "charOffset": 20167,
- "charLength": 208,
+ "charOffset": 24072,
+ "charLength": 323,
"snippet": {
- "text": " }\n\n private fun PsiReferenceList.toDriList() = referenceElements.mapNotNull { it?.resolve()?.let { DRI.from(it) } }\n\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull("
+ "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"
}
}
},
@@ -72278,7 +64626,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "f46ef7b64dc17eb5b82e34b372017b5b35696d0675c721784f893c8bb447cac1"
+ "equalIndicator/v1": "ca927a3481fdeb1331d71912f87289e0f9d8eb33d44380ad71a5eb271303f298"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72288,12 +64636,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72303,22 +64651,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 135,
- "startColumn": 32,
- "charOffset": 6207,
- "charLength": 2,
+ "startLine": 475,
+ "startColumn": 90,
+ "charOffset": 24363,
+ "charLength": 10,
"snippet": {
- "text": "?."
+ "text": "TRANSITIVE"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 133,
+ "startLine": 473,
"startColumn": 1,
- "charOffset": 6093,
- "charLength": 177,
+ "charOffset": 24072,
+ "charLength": 323,
"snippet": {
- "text": " if (className == shortName) {\n val psiClass = resolve()\n return psiClass?.qualifiedName == qName\n }\n return false"
+ "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"
}
}
},
@@ -72331,7 +64679,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "5c2c4db496571e6e102bb68e4b09c972f8fe566471cc48ef1375de063b54154f"
+ "equalIndicator/v1": "21079e044e267cfcbe6df1ad3872fcf19c8acec582dc2eab815054965ddb4a26"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72341,12 +64689,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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"
},
"locations": [
{
@@ -72356,22 +64704,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 646,
- "startColumn": 32,
- "charOffset": 32055,
- "charLength": 2,
+ "startLine": 594,
+ "startColumn": 41,
+ "charOffset": 30584,
+ "charLength": 16,
"snippet": {
- "text": "?."
+ "text": "JvmReferenceType"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 644,
+ "startLine": 592,
"startColumn": 1,
- "charOffset": 32009,
- "charLength": 155,
+ "charOffset": 30445,
+ "charLength": 341,
"snippet": {
- "text": " }\n\n return psiReference?.let { psiElement ->\n Annotations.Annotation(\n dri = DRI.from(psiElement),"
+ "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)) }"
}
}
},
@@ -72384,7 +64732,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "00b09199bd078c947be10b02a69694ea128349dd962071de01adc4b1762826bb"
+ "equalIndicator/v1": "71ded31c85fecd79c7315ef2538a78f9bc7cca82d24c5f15de9f484c59f042ad"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72394,12 +64742,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72409,22 +64757,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 552,
- "startColumn": 64,
- "charOffset": 27431,
- "charLength": 2,
+ "startLine": 605,
+ "startColumn": 45,
+ "charOffset": 31237,
+ "charLength": 6,
"snippet": {
- "text": "?."
+ "text": "bounds"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 550,
+ "startLine": 603,
"startColumn": 1,
- "charOffset": 27268,
- "charLength": 309,
+ "charOffset": 31047,
+ "charLength": 308,
"snippet": {
- "text": " val regularMethods = mutableListOf<PsiMethod>()\n methods.forEach { method ->\n val field = method.getPropertyNameForFunction()?.let { name -> fieldNames[name] }\n if (field != null) {\n accessors.getOrPut(field, ::mutableListOf).add(method)"
+ "text": " documentation = javadocParser.parseDocumentation(type).toSourceSetDependent(),\n expectPresentInSet = null,\n bounds = mapBounds(type.bounds),\n sourceSets = setOf(sourceSetData),\n extra = PropertyContainer.withAll("
}
}
},
@@ -72437,7 +64785,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "44eeeb9abbd4fa3249b44f6245d3c4d2995c2e8c89aeef809609a373da73c415"
+ "equalIndicator/v1": "681d66e991eb9c7e2d5c0dee08ad0eeb31d6bdc0aebf67b6e0f2592ee4fd625e"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72447,12 +64795,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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"
},
"locations": [
{
@@ -72462,22 +64810,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 451,
- "startColumn": 35,
- "charOffset": 22248,
- "charLength": 2,
+ "startLine": 725,
+ "startColumn": 52,
+ "charOffset": 37032,
+ "charLength": 5,
"snippet": {
- "text": "?."
+ "text": "field"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 449,
+ "startLine": 723,
"startColumn": 1,
- "charOffset": 22130,
- "charLength": 275,
+ "charOffset": 36861,
+ "charLength": 439,
"snippet": {
- "text": " fun bound() = when (type) {\n is PsiClassReferenceType ->\n type.resolve()?.let { resolved ->\n when {\n resolved.qualifiedName == \"java.lang.Object\" -> JavaObject(type.annotations())"
+ "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()"
}
}
},
@@ -72490,7 +64838,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "2fda43c85a0481292a56dba25e30e68780f628fd9e7e5ec75dcfc1ca426e38f7"
+ "equalIndicator/v1": "16a2df2ffdab552bb1bafa091b3aea397a981c9a33956efd515c82e903c8ac6c"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72500,12 +64848,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for accessors.firstOrNull { it.hasParameters() }]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for accessors.firstOrNull { it.hasParameters() }\\]"
+ "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": [
{
@@ -72515,22 +64863,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 573,
- "startColumn": 61,
- "charOffset": 28285,
- "charLength": 2,
+ "startLine": 588,
+ "startColumn": 13,
+ "charOffset": 30272,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 571,
+ "startLine": 586,
"startColumn": 1,
- "charOffset": 28167,
- "charLength": 300,
+ "charOffset": 30195,
+ "charLength": 239,
"snippet": {
- "text": " getBound(psi.type),\n null,\n accessors.firstOrNull { it.hasParameters() }?.let { parseFunction(it) },\n accessors.firstOrNull { it.returnType == psi.type }?.let { parseFunction(it) },\n psi.getModifier().toSourceSetDependent(),"
+ "text": "\n private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty"
}
}
},
@@ -72543,7 +64891,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "e88d7516447c03e5ee64033b71cb72639179e84c3116a17991211526c344cfff"
+ "equalIndicator/v1": "d1e82d8c68cc06335aef453628e300a0285d4ea17ccfbc3b26972d9482dba9dc"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72553,12 +64901,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for accessors.firstOrNull { it.returnType == psi.type }]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for accessors.firstOrNull { it.returnType == psi.type }\\]"
+ "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": [
{
@@ -72568,22 +64916,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 574,
- "startColumn": 68,
- "charOffset": 28381,
- "charLength": 2,
+ "startLine": 588,
+ "startColumn": 25,
+ "charOffset": 30284,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 572,
+ "startLine": 586,
"startColumn": 1,
- "charOffset": 28203,
- "charLength": 302,
+ "charOffset": 30195,
+ "charLength": 239,
"snippet": {
- "text": " null,\n accessors.firstOrNull { it.hasParameters() }?.let { parseFunction(it) },\n accessors.firstOrNull { it.returnType == psi.type }?.let { parseFunction(it) },\n psi.getModifier().toSourceSetDependent(),\n setOf(sourceSetData),"
+ "text": "\n private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty"
}
}
},
@@ -72596,7 +64944,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "62188162e2e5cafdbca89b8f381b5387107dafd295442ad00b6ab4bdb08cb6c4"
+ "equalIndicator/v1": "ef30e9ec6804362910695eeb087e8f2c441d238473f007954b7bb0e8599badec"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72606,12 +64954,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72621,22 +64969,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 611,
- "startColumn": 47,
- "charOffset": 30178,
- "charLength": 2,
+ "startLine": 588,
+ "startColumn": 37,
+ "charOffset": 30296,
+ "charLength": 8,
"snippet": {
- "text": "?."
+ "text": "ABSTRACT"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 609,
+ "startLine": 586,
"startColumn": 1,
- "charOffset": 30033,
- "charLength": 375,
+ "charOffset": 30195,
+ "charLength": 239,
"snippet": {
- "text": "\n private fun PsiAnnotationMemberValue.toValue(): AnnotationParameterValue? = when (this) {\n is PsiAnnotation -> toAnnotation()?.let { AnnotationValue(it) }\n is PsiArrayInitializerMemberValue -> ArrayValue(initializers.mapNotNull { it.toValue() })\n is PsiReferenceExpression -> psiReference?.let { EnumValue(text ?: \"\", DRI.from(it)) }"
+ "text": "\n private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty"
}
}
},
@@ -72649,7 +64997,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "a65382f8d562e34106430120b49c9fcd1a6de6431ec8dc74df4cc23eddcc5a35"
+ "equalIndicator/v1": "069110415ae1381118efd356d1ed3087f7c6b6ac2150754426917ac11e45ff49"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72659,12 +65007,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72674,22 +65022,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 613,
- "startColumn": 54,
- "charOffset": 30363,
- "charLength": 2,
+ "startLine": 589,
+ "startColumn": 13,
+ "charOffset": 30343,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "hasModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 611,
+ "startLine": 587,
"startColumn": 1,
- "charOffset": 30132,
- "charLength": 447,
+ "charOffset": 30196,
+ "charLength": 248,
"snippet": {
- "text": " is PsiAnnotation -> toAnnotation()?.let { AnnotationValue(it) }\n is PsiArrayInitializerMemberValue -> ArrayValue(initializers.mapNotNull { it.toValue() })\n is PsiReferenceExpression -> psiReference?.let { EnumValue(text ?: \"\", DRI.from(it)) }\n is PsiClassObjectAccessExpression -> {\n val psiClass = ((type as PsiImmediateClassType).parameters.single() as PsiClassReferenceType).resolve()"
+ "text": " private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty\n }"
}
}
},
@@ -72702,7 +65050,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "a1a437be1fe955dbb6483c91a876f7bbc683c2175604bc0f71355b5461abcfdc"
+ "equalIndicator/v1": "355925712d6f7f46a45008b17ac7b5403a5d9fb36c5708054dc0be5a6b3d77a2"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72712,12 +65060,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
+ "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": [
{
@@ -72727,22 +65075,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 616,
+ "startLine": 589,
"startColumn": 25,
- "charOffset": 30604,
- "charLength": 2,
+ "charOffset": 30355,
+ "charLength": 11,
"snippet": {
- "text": "?."
+ "text": "JvmModifier"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 614,
+ "startLine": 587,
"startColumn": 1,
- "charOffset": 30409,
- "charLength": 310,
+ "charOffset": 30196,
+ "charLength": 248,
"snippet": {
- "text": " is PsiClassObjectAccessExpression -> {\n val psiClass = ((type as PsiImmediateClassType).parameters.single() as PsiClassReferenceType).resolve()\n psiClass?.let { ClassValue(text ?: \"\", DRI.from(psiClass)) }\n }\n is PsiLiteralExpression -> toValue()"
+ "text": " private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty\n }"
}
}
},
@@ -72755,7 +65103,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "9c3f8178b4ccad05549e87184b851a8a8bdd38e36b3031c62f981432934455de"
+ "equalIndicator/v1": "011565068a9f3563113488815d46d74d203aac6074f77cf71cd217e211897bd3"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72765,12 +65113,12 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "UnstableApiUsage",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiClassType]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiClassType\\]?"
+ "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": [
{
@@ -72780,22 +65128,22 @@
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 519,
- "startColumn": 42,
- "charOffset": 25766,
- "charLength": 2,
+ "startLine": 589,
+ "startColumn": 37,
+ "charOffset": 30367,
+ "charLength": 5,
"snippet": {
- "text": "?."
+ "text": "FINAL"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 517,
+ "startLine": 587,
"startColumn": 1,
- "charOffset": 25576,
- "charLength": 308,
+ "charOffset": 30196,
+ "charLength": 248,
"snippet": {
- "text": " 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 }\n return typeParameters.map { type ->"
+ "text": " private fun PsiModifierListOwner.getModifier() = when {\n hasModifier(JvmModifier.ABSTRACT) -> JavaModifier.Abstract\n hasModifier(JvmModifier.FINAL) -> JavaModifier.Final\n else -> JavaModifier.Empty\n }"
}
}
},
@@ -72808,7 +65156,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "66a25951fa95bcd1601500cbd43bcb5bac8cb3f2204598b1eaf74e962194fc35"
+ "equalIndicator/v1": "a4ffb87c85750f52bc94aacf5857d6e2054a3ab1c879e1327776b4560bcccbbc"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72818,37 +65166,37 @@
}
},
{
- "ruleId": "KotlinDeprecation",
+ "ruleId": "BlockingMethodInNonBlockingContext",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiClassType]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiClassType\\]?"
+ "text": "Possibly blocking call in non-blocking context could lead to thread starvation",
+ "markdown": "Possibly blocking call in non-blocking context could lead to thread starvation"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uri": "plugins/base/src/main/kotlin/renderers/FileWriter.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 181,
- "startColumn": 48,
- "charOffset": 8227,
- "charLength": 2,
+ "startLine": 72,
+ "startColumn": 28,
+ "charOffset": 2653,
+ "charLength": 4,
"snippet": {
- "text": "?."
+ "text": "walk"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 179,
+ "startLine": 70,
"startColumn": 1,
- "charOffset": 8032,
- "charLength": 329,
+ "charOffset": 2544,
+ "charLength": 239,
"snippet": {
- "text": " fun Array<PsiClassType>.getSuperTypesPsiClasses(): List<Pair<PsiClass, JavaClassKindTypes>> {\n forEach { type ->\n (type as? PsiClassType)?.resolve()?.let {\n val definedAt = DRI.from(it)\n it.methods.forEach { method ->"
+ "text": " val fs = getFileSystemForURI(uri)\n val path = fs.getPath(pathFrom)\n for (file in Files.walk(path).iterator()) {\n if (Files.isDirectory(file)) {\n val dirPath = file.toAbsolutePath().toString()"
}
}
},
@@ -72861,7 +65209,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "34792e0be13542bb84c9668d5a8e5c7fc9e7116ae699e9b459c7ae408c3b84e0"
+ "equalIndicator/v1": "186e7a5902a78a0e91105ac77dbe66f541d9b9f38f734913d702e5fecc78fc28"
},
"properties": {
"ideaSeverity": "WARNING",
@@ -72869,5350 +65217,1758 @@
"ideaSeverity"
]
}
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 181,
- "startColumn": 59,
- "charOffset": 8238,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ }
+ ],
+ "automationDetails": {
+ "id": "project/qodana/2022-11-25",
+ "guid": "ec0b9a45-c1a7-4e54-a20e-00b7bb4ab994",
+ "properties": {
+ "jobUrl": "",
+ "tags": [
+ "jobUrl"
+ ]
+ }
+ },
+ "newlineSequences": [
+ "\r\n",
+ "\n"
+ ],
+ "properties": {
+ "qodana.sanity.results": [
+ {
+ "ruleId": "KotlinAnnotator",
+ "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"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 179,
- "startColumn": 1,
- "charOffset": 8032,
- "charLength": 329,
- "snippet": {
- "text": " fun Array<PsiClassType>.getSuperTypesPsiClasses(): List<Pair<PsiClass, JavaClassKindTypes>> {\n forEach { type ->\n (type as? PsiClassType)?.resolve()?.let {\n val definedAt = DRI.from(it)\n it.methods.forEach { method ->"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "53a4b52a1e98b4ed3191f142688910cf5be39157f9658cc2fa93a2403bbc608d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 195,
- "startColumn": 47,
- "charOffset": 9021,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 9,
+ "startColumn": 49,
+ "charOffset": 432,
+ "charLength": 15,
+ "snippet": {
+ "text": "MessageRenderer"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 193,
- "startColumn": 1,
- "charOffset": 8866,
- "charLength": 332,
- "snippet": {
- "text": " }\n return filter { !it.shouldBeIgnored }.mapNotNull { supertypePsi ->\n supertypePsi.resolve()?.let { supertypePsiClass ->\n val javaClassKind = when {\n supertypePsiClass.isInterface -> JavaClassKindTypes.INTERFACE"
+ "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.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d18f20b5ae1858b6d1497b0edf07717482e1dd41115e1d2d6ea9c734823a5074"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 220,
- "startColumn": 60,
- "charOffset": 10339,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 218,
- "startColumn": 1,
- "charOffset": 10223,
- "charLength": 316,
- "snippet": {
- "text": " }\n ),\n superclass = classes.singleOrNull()?.first?.let(::traversePsiClassForAncestorsAndInheritedMembers),\n interfaces = interfaces.map { traversePsiClassForAncestorsAndInheritedMembers(it.first) }\n )"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "6f0b072910d25e7df8730327d61be01aa58a753d73441b050cbda0b4ef43de6e"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "478da01ea65cac9775d43471d58e2653975dfeaf74dd08d45887dcb232730c4b"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 220,
- "startColumn": 67,
- "charOffset": 10346,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: KotlinCoreEnvironment",
+ "markdown": "Unresolved reference: KotlinCoreEnvironment"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/EnvironmentAndFacade.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 218,
- "startColumn": 1,
- "charOffset": 10223,
- "charLength": 316,
- "snippet": {
- "text": " }\n ),\n superclass = classes.singleOrNull()?.first?.let(::traversePsiClassForAncestorsAndInheritedMembers),\n interfaces = interfaces.map { traversePsiClassForAncestorsAndInheritedMembers(it.first) }\n )"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1bb6f8ad9d05af37ab33172cd18e650c316443ee4ecfb64335c7a0d07f49df62"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 400,
- "startColumn": 31,
- "charOffset": 19185,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 10,
+ "startColumn": 46,
+ "charOffset": 493,
+ "charLength": 21,
+ "snippet": {
+ "text": "KotlinCoreEnvironment"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 398,
- "startColumn": 1,
- "charOffset": 19028,
- "charLength": 261,
- "snippet": {
- "text": " PsiDocumentableSource(psi).toSourceSetDependent(),\n psi.getVisibility().toSourceSetDependent(),\n psi.returnType?.let { getBound(type = it) } ?: Void,\n psi.mapTypeParameters(dri),\n null,"
+ "contextRegion": {
+ "startLine": 8,
+ "startColumn": 1,
+ "charOffset": 319,
+ "charLength": 237,
+ "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("
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3ee15769fe4c47cb184ebdf495492dcd852e12f717c94a3c8fadfdb24bd7d31d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 415,
- "startColumn": 29,
- "charOffset": 20058,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 413,
- "startColumn": 1,
- "charOffset": 19853,
- "charLength": 299,
- "snippet": {
- "text": " ObviousMember.takeIf { inheritedFrom != null && inheritedFrom.isObvious },\n psi.throwsList.toDriList().takeIf { it.isNotEmpty() }\n ?.let { CheckedExceptions(it.toSourceSetDependent()) }\n )\n }"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "a0941fad9b15d975a3ad4662c7f79a4b91477b5278a1620282b4f18ecd6a44a3"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "da3ce73ad36a124610752337d488fc0f2496642810916a201c09686deb0459fa"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Error function type]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Error function type\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 540,
- "startColumn": 42,
- "charOffset": 18729,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "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"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 538,
- "startColumn": 1,
- "charOffset": 18622,
- "charLength": 226,
- "snippet": {
- "text": " childrenDocumentables\n .mapNotNull { (k, v) ->\n v.descriptorForPlatform()?.let { k to it }?.also { (k, v) -> map[k] = v }\n }.map { it.second }.forEach { gatherSupertypes(it, map) }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "52c0ce4d275143d7c3646010160dd7bb959d50906eda01768ab45db6dc242009"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 540,
- "startColumn": 59,
- "charOffset": 18746,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 47,
+ "startColumn": 21,
+ "charOffset": 1951,
+ "charLength": 15,
+ "snippet": {
+ "text": "MessageRenderer"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 538,
- "startColumn": 1,
- "charOffset": 18622,
- "charLength": 226,
- "snippet": {
- "text": " childrenDocumentables\n .mapNotNull { (k, v) ->\n v.descriptorForPlatform()?.let { k to it }?.also { (k, v) -> map[k] = v }\n }.map { it.second }.forEach { gatherSupertypes(it, map) }\n"
+ "contextRegion": {
+ "startLine": 45,
+ "startColumn": 1,
+ "charOffset": 1891,
+ "charLength": 136,
+ "snippet": {
+ "text": " seenErrors = true\n }\n logger.info(MessageRenderer.PLAIN_FULL_PATHS.render(severity, message, location))\n }\n"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "4e8275fd66ad7ff6e75f58cd625909a293e7d8a6194f126b3e38c8abdf724236"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 510,
- "startColumn": 89,
- "charOffset": 17482,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 508,
- "startColumn": 1,
- "charOffset": 17246,
- "charLength": 343,
- "snippet": {
- "text": " v.map { InheritanceNode(DRI.from(it)) },\n k.typeConstructor.supertypes.map { getClassDescriptorForType(it) }\n .mapNotNull { cd -> cd.takeIf { it.kind == ClassKind.INTERFACE }?.let { DRI.from(it) } },\n isInterface = k.kind == ClassKind.INTERFACE\n )"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "7768a0e56da9ac53de65dc7262038c3af9fcba044b69a001e38a3343a3322f2d"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9c84487233a5ce87bdc4ac6e3a28e4cfd5c5e1bd4e8f11799601c96c366c2d85"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 451,
- "startColumn": 46,
- "charOffset": 17600,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: KotlinCoreEnvironment",
+ "markdown": "Unresolved reference: KotlinCoreEnvironment"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/EnvironmentAndFacade.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 449,
- "startColumn": 1,
- "charOffset": 17510,
- "charLength": 128,
- "snippet": {
- "text": "\ninternal fun ClassId.classNames(): String =\n shortClassName.identifier + (outerClassId?.classNames()?.let { \".$it\" } ?: \"\")\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "61a078785682775dafa93a44b858d8c4daffe0bea83e2f98be25429cb3fc285d"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 451,
- "startColumn": 60,
- "charOffset": 17614,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 54,
+ "startColumn": 45,
+ "charOffset": 2167,
+ "charLength": 21,
+ "snippet": {
+ "text": "KotlinCoreEnvironment"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 449,
- "startColumn": 1,
- "charOffset": 17510,
- "charLength": 128,
- "snippet": {
- "text": "\ninternal fun ClassId.classNames(): String =\n shortClassName.identifier + (outerClassId?.classNames()?.let { \".$it\" } ?: \"\")\n"
+ "contextRegion": {
+ "startLine": 52,
+ "startColumn": 1,
+ "charOffset": 2072,
+ "charLength": 237,
+ "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"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "fe1559a4e7fd7903fd392740cde017f07cec6c4e7e371c61800924448f2c63fb"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ClassId]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : ClassId\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 408,
- "startColumn": 68,
- "charOffset": 15717,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
},
- "contextRegion": {
- "startLine": 406,
- "startColumn": 1,
- "charOffset": 15574,
- "charLength": 313,
- "snippet": {
- "text": "\nprivate fun DRI.partialFqName() = packageName?.let { \"$it.\" } + classNames\nprivate fun DRI.possiblyAsJava() = this.partialFqName().mapToJava()?.toDRI(this) ?: this\nprivate fun TypeConstructor.possiblyAsJava(): TypeConstructor = when (this) {\n is GenericTypeConstructor -> copy(dri = this.dri.possiblyAsJava())"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "aece801d4cbcccb600d1f02041f326afb5e54bc8c3a72f2489d8d7be2badd68f"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "bdd5d165892ffe89ab244b8026e4ffa5937de38a37eb28727c575fd18639566a"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 405,
- "startColumn": 5,
- "charOffset": 15539,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "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."
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 403,
- "startColumn": 1,
- "charOffset": 15377,
- "charLength": 272,
- "snippet": {
- "text": "internal fun String.getAsPrimitive(): JvmPrimitiveType? = org.jetbrains.kotlin.builtins.PrimitiveType.values()\n .find { it.typeFqName.asString() == this }\n ?.let { JvmPrimitiveType.get(it) }\n\nprivate fun DRI.partialFqName() = packageName?.let { \"$it.\" } + classNames"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1162a90f479132e754efd2f64265e2c4a5eec1cbc388d7addd16e4e9d520541e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/CallableFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 13,
- "startColumn": 35,
- "charOffset": 501,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 237,
+ "startColumn": 78,
+ "charOffset": 11511,
+ "charLength": 3,
+ "snippet": {
+ "text": "dir"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 11,
- "startColumn": 1,
- "charOffset": 409,
- "charLength": 193,
- "snippet": {
- "text": " Callable(\n name ?: descriptor.name.asString(),\n extensionReceiverParameter?.let { TypeReference.from(it) },\n valueParameters.mapNotNull { TypeReference.from(it) }\n )"
+ "contextRegion": {
+ "startLine": 235,
+ "startColumn": 1,
+ "charOffset": 11314,
+ "charLength": 355,
+ "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\") {"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3beaa4cb73c31bb1dbf9edb90d2f7aaed66a80419a97babcd509a8b571147441"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : KotlinLibrary]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : KotlinLibrary\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaNativeResolverForModuleFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 61,
- "startColumn": 13,
- "charOffset": 2857,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 59,
- "startColumn": 1,
- "charOffset": 2717,
- "charLength": 345,
- "snippet": {
- "text": " val klibPackageFragmentProvider = (moduleContent.moduleInfo as? DokkaNativeKlibLibraryInfo)\n ?.kotlinLibrary\n ?.createKlibPackageFragmentProvider(\n storageManager = moduleContext.storageManager,\n metadataModuleDescriptorFactory = metadataFactories.DefaultDeserializedDescriptorFactory,"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "66ede3ee70caf63596b69404d57ebcc40577ded691ce16472103622d44ebac2d"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "45848ea66741cae1e60f334969c7ec53ce3811b1df1817e6d81af8cc06b10bd0"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 14,
- "startColumn": 29,
- "charOffset": 656,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "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."
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 12,
- "startColumn": 1,
- "charOffset": 465,
- "charLength": 251,
- "snippet": {
- "text": "fun DRI.Companion.from(descriptor: DeclarationDescriptor) = descriptor.parentsWithSelf.run {\n val parameter = firstIsInstanceOrNull<ValueParameterDescriptor>()\n val callable = parameter?.containingDeclaration ?: firstIsInstanceOrNull()\n\n DRI("
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2461a5ec79b9de568dfc3fdc93f763b3694de5b5f92a9734f60414286a554240"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 17,
- "startColumn": 73,
- "charOffset": 789,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 237,
+ "startColumn": 83,
+ "charOffset": 11516,
+ "charLength": 1,
+ "snippet": {
+ "text": "_"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 15,
- "startColumn": 1,
- "charOffset": 707,
- "charLength": 259,
- "snippet": {
- "text": "\n DRI(\n packageName = firstIsInstanceOrNull<PackageFragmentDescriptor>()?.fqName?.asString() ?: \"\",\n classNames = (filterIsInstance<ClassDescriptor>() + filterIsInstance<TypeAliasDescriptor>()).toList()\n .takeIf { it.isNotEmpty() }"
+ "contextRegion": {
+ "startLine": 235,
+ "startColumn": 1,
+ "charOffset": 11314,
+ "charLength": 355,
+ "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\") {"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f84a5c3639aeebba8c45c616d43f5455c8e83385e31dfe58b86638be519d813e"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 17,
- "startColumn": 81,
- "charOffset": 797,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 15,
- "startColumn": 1,
- "charOffset": 707,
- "charLength": 259,
- "snippet": {
- "text": "\n DRI(\n packageName = firstIsInstanceOrNull<PackageFragmentDescriptor>()?.fqName?.asString() ?: \"\",\n classNames = (filterIsInstance<ClassDescriptor>() + filterIsInstance<TypeAliasDescriptor>()).toList()\n .takeIf { it.isNotEmpty() }"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "1641a597aae5a4d61d3d171166fdbdd291855063f377f5b8f97d14f10628d296"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f328080fa0e36c3c5c6338c77b152a122fcbbc34cdcd9f4f01ac8b025edea206"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 20,
- "startColumn": 13,
- "charOffset": 979,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "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."
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 18,
- "startColumn": 1,
- "charOffset": 817,
- "charLength": 300,
- "snippet": {
- "text": " classNames = (filterIsInstance<ClassDescriptor>() + filterIsInstance<TypeAliasDescriptor>()).toList()\n .takeIf { it.isNotEmpty() }\n ?.asReversed()\n ?.joinToString(separator = \".\") { it.name.asString() },\n callable = callable?.let { Callable.from(it) },"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b79b0e9e729188b7d8f3adc5c6f8e68dd5c2822131e6863f75587f89ded6ed8a"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 21,
- "startColumn": 13,
- "charOffset": 1006,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 77,
+ "startColumn": 44,
+ "charOffset": 3999,
+ "charLength": 3,
+ "snippet": {
+ "text": "dir"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 19,
- "startColumn": 1,
- "charOffset": 927,
- "charLength": 248,
- "snippet": {
- "text": " .takeIf { it.isNotEmpty() }\n ?.asReversed()\n ?.joinToString(separator = \".\") { it.name.asString() },\n callable = callable?.let { Callable.from(it) },\n target = DriTarget.from(parameter ?: descriptor),"
+ "contextRegion": {
+ "startLine": 75,
+ "startColumn": 1,
+ "charOffset": 3781,
+ "charLength": 383,
+ "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)"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7c79b0fd1fbdc52bcba9433c059c0e889e7a9e4bcd7539efe96882425afbf100"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for parameter?.containingDeclaration ?: firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for parameter?.containingDeclaration ?: firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 22,
- "startColumn": 28,
- "charOffset": 1089,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 20,
- "startColumn": 1,
- "charOffset": 967,
- "charLength": 347,
- "snippet": {
- "text": " ?.asReversed()\n ?.joinToString(separator = \".\") { it.name.asString() },\n callable = callable?.let { Callable.from(it) },\n target = DriTarget.from(parameter ?: descriptor),\n extra = if (descriptor is EnumEntrySyntheticClassDescriptor || descriptor.safeAs<ClassDescriptor>()?.kind == ClassKind.ENUM_ENTRY)"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "aaca82e8c522b489b79cfa5bff6cfeaed93009a8071d65947a090d0dec9b5b4d"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "33b3f1a5bef7aca71af52c996bb9c981948abce2bd205ef4d180920832d2ae03"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 24,
- "startColumn": 108,
- "charOffset": 1283,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "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."
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 22,
- "startColumn": 1,
- "charOffset": 1062,
- "charLength": 362,
- "snippet": {
- "text": " callable = callable?.let { Callable.from(it) },\n target = DriTarget.from(parameter ?: descriptor),\n extra = if (descriptor is EnumEntrySyntheticClassDescriptor || descriptor.safeAs<ClassDescriptor>()?.kind == ClassKind.ENUM_ENTRY)\n DRIExtraContainer().also { it[EnumEntryDRIExtra] = EnumEntryDRIExtra }.encode()\n else null"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7b94a538ebe9e6f8d172a2f33425624f22bb79d880fb5236958af8d455f682d4"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 35,
- "startColumn": 79,
- "charOffset": 1857,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 77,
+ "startColumn": 49,
+ "charOffset": 4004,
+ "charLength": 4,
+ "snippet": {
+ "text": "type"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 33,
- "startColumn": 1,
- "charOffset": 1610,
- "charLength": 375,
- "snippet": {
- "text": " val classes = filterIsInstance<PsiClass>().filterNot { it is PsiTypeParameter }\n .toList() // We only want exact PsiClass types, not PsiTypeParameter subtype\n val additionalClasses = if (psi is PsiEnumConstant) listOfNotNull(psiField?.name) else emptyList()\n DRI(\n packageName = classes.lastOrNull()?.qualifiedName?.substringBeforeLast('.', \"\") ?: \"\","
+ "contextRegion": {
+ "startLine": 75,
+ "startColumn": 1,
+ "charOffset": 3781,
+ "charLength": 383,
+ "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)"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9a2a73338813ca76d7e2bae8c511eca5a9b586472d56de9062e20bff2e70c5af"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 37,
- "startColumn": 43,
- "charOffset": 1933,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 35,
- "startColumn": 1,
- "charOffset": 1779,
- "charLength": 354,
- "snippet": {
- "text": " val additionalClasses = if (psi is PsiEnumConstant) listOfNotNull(psiField?.name) else emptyList()\n DRI(\n packageName = classes.lastOrNull()?.qualifiedName?.substringBeforeLast('.', \"\") ?: \"\",\n classNames = (additionalClasses + classes.mapNotNull { it.name }).takeIf { it.isNotEmpty() }\n ?.asReversed()?.joinToString(\".\"),"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "4235702e3ecfa68b0a580c71dc99aa0e421d7d97ab16509edfdf527b3185b97f"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "bd3e8b4969adbd3a52f326a1d52ec4517f0e58258a28a53d3b948bbb8bf0993a"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 37,
- "startColumn": 58,
- "charOffset": 1948,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: CLIConfigurationKeys",
+ "markdown": "Unresolved reference: CLIConfigurationKeys"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 35,
- "startColumn": 1,
- "charOffset": 1779,
- "charLength": 354,
- "snippet": {
- "text": " val additionalClasses = if (psi is PsiEnumConstant) listOfNotNull(psiField?.name) else emptyList()\n DRI(\n packageName = classes.lastOrNull()?.qualifiedName?.substringBeforeLast('.', \"\") ?: \"\",\n classNames = (additionalClasses + classes.mapNotNull { it.name }).takeIf { it.isNotEmpty() }\n ?.asReversed()?.joinToString(\".\"),"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "123f48a598f9c9d46af5ab20ee721ddb4fb0fc5750ffe6e7491e51e8e3284391"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 39,
- "startColumn": 13,
- "charOffset": 2099,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 61,
+ "startColumn": 61,
+ "charOffset": 2984,
+ "charLength": 20,
+ "snippet": {
+ "text": "CLIConfigurationKeys"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 37,
- "startColumn": 1,
- "charOffset": 1891,
- "charLength": 463,
- "snippet": {
- "text": " packageName = classes.lastOrNull()?.qualifiedName?.substringBeforeLast('.', \"\") ?: \"\",\n classNames = (additionalClasses + classes.mapNotNull { it.name }).takeIf { it.isNotEmpty() }\n ?.asReversed()?.joinToString(\".\"),\n // The fallback strategy test whether psi is not `PsiEnumConstant`. The reason behind this is that\n // we need unified DRI for both Java and Kotlin enums, so we can link them properly and treat them alike."
+ "contextRegion": {
+ "startLine": 59,
+ "startColumn": 1,
+ "charOffset": 2857,
+ "charLength": 286,
+ "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) }"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f7fdcdd6399364df2ed2d545690664b9bdcfb06ffea38719167c5ef9e44c492b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 39,
- "startColumn": 27,
- "charOffset": 2113,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 37,
- "startColumn": 1,
- "charOffset": 1891,
- "charLength": 463,
- "snippet": {
- "text": " packageName = classes.lastOrNull()?.qualifiedName?.substringBeforeLast('.', \"\") ?: \"\",\n classNames = (additionalClasses + classes.mapNotNull { it.name }).takeIf { it.isNotEmpty() }\n ?.asReversed()?.joinToString(\".\"),\n // The fallback strategy test whether psi is not `PsiEnumConstant`. The reason behind this is that\n // we need unified DRI for both Java and Kotlin enums, so we can link them properly and treat them alike."
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "b703ad5363b71a6394b4c0def3da6f1fb62bdb2493194d915dc4209a2d53df54"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "725f263981d31bdfba201c48c257eef9527e7465ed9e3a0a3ed662925b0d468d"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 44,
- "startColumn": 29,
- "charOffset": 2626,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: JavaSourceRoot",
+ "markdown": "Unresolved reference: JavaSourceRoot"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 42,
- "startColumn": 1,
- "charOffset": 2355,
- "charLength": 459,
- "snippet": {
- "text": " // To achieve that, we append enum name to classNames list and leave the callable part set to null. For Kotlin enums\n // it is by default, while for Java enums we have to explicitly test for that in this `takeUnless` condition.\n callable = psiMethod?.let { Callable.from(it) } ?: psiField?.takeUnless { psi is PsiEnumConstant }?.let { Callable.from(it) },\n target = DriTarget.from(psi),\n extra = if (psi is PsiEnumConstant)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "90699ef9a5cb0bc2d63b2022c82dbd71571bf728b00135cdde2bfa7f26863d39"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 44,
- "startColumn": 68,
- "charOffset": 2665,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 62,
+ "startColumn": 36,
+ "charOffset": 3055,
+ "charLength": 14,
+ "snippet": {
+ "text": "JavaSourceRoot"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 42,
- "startColumn": 1,
- "charOffset": 2355,
- "charLength": 459,
- "snippet": {
- "text": " // To achieve that, we append enum name to classNames list and leave the callable part set to null. For Kotlin enums\n // it is by default, while for Java enums we have to explicitly test for that in this `takeUnless` condition.\n callable = psiMethod?.let { Callable.from(it) } ?: psiField?.takeUnless { psi is PsiEnumConstant }?.let { Callable.from(it) },\n target = DriTarget.from(psi),\n extra = if (psi is PsiEnumConstant)"
+ "contextRegion": {
+ "startLine": 60,
+ "startColumn": 1,
+ "charOffset": 2923,
+ "charLength": 248,
+ "snippet": {
+ "text": "\n val sourceRoots = environment.configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }\n ?: listOf()"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "dbe558ff07d5b79a08a9c9ff59973ebc220a37e1f447dbc95d52be20f4992e0f"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRIFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 44,
- "startColumn": 107,
- "charOffset": 2704,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 42,
- "startColumn": 1,
- "charOffset": 2355,
- "charLength": 459,
- "snippet": {
- "text": " // To achieve that, we append enum name to classNames list and leave the callable part set to null. For Kotlin enums\n // it is by default, while for Java enums we have to explicitly test for that in this `takeUnless` condition.\n callable = psiMethod?.let { Callable.from(it) } ?: psiField?.takeUnless { psi is PsiEnumConstant }?.let { Callable.from(it) },\n target = DriTarget.from(psi),\n extra = if (psi is PsiEnumConstant)"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "67e8dc1724cef4418f49962a50287d1ac064ed34fb71faf67120305958199343"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ce22232aa6d52e4810e712bf9b0329dfd9b5b336e8f94600a518e3fc96063749"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRITargetFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 23,
- "startColumn": 25,
- "charOffset": 1089,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: file",
+ "markdown": "Unresolved reference: file"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 21,
- "startColumn": 1,
- "charOffset": 969,
- "charLength": 289,
- "snippet": {
- "text": " val callable = firstIsInstanceOrNull<CallableDescriptor>()\n val params =\n callable?.let { listOfNotNull(it.extensionReceiverParameter) + it.valueParameters }.orEmpty()\n val parameterDescriptor = firstIsInstanceOrNull<ParameterDescriptor>()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "71f309312a72d34fe3cedb7e4d85a131052004cc11e377bc32ed61aa4c6271c7"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRITargetFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 26,
- "startColumn": 32,
- "charOffset": 1290,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 63,
+ "startColumn": 35,
+ "charOffset": 3107,
+ "charLength": 4,
+ "snippet": {
+ "text": "file"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 24,
- "startColumn": 1,
- "charOffset": 1175,
- "charLength": 224,
- "snippet": {
- "text": " val parameterDescriptor = firstIsInstanceOrNull<ParameterDescriptor>()\n\n parameterDescriptor?.let { PointingToCallableParameters(params.indexOf(it)) }\n ?: PointingToDeclaration\n }"
+ "contextRegion": {
+ "startLine": 61,
+ "startColumn": 1,
+ "charOffset": 2924,
+ "charLength": 336,
+ "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\")"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0bc3265d9baa3a78dfc4e76690a5efd7d769814ec8def2d811e7c5e0f07518a2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRITargetFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 36,
- "startColumn": 54,
- "charOffset": 1642,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 34,
- "startColumn": 1,
- "charOffset": 1495,
- "charLength": 289,
- "snippet": {
- "text": " return when (psi) {\n is PsiTypeParameter -> PointingToGenericParameters(psi.index)\n else -> firstIsInstanceOrNull<PsiParameter>()?.let {\n val callable = firstIsInstanceOrNull<PsiMethod>()\n val params = (callable?.parameterList?.parameters).orEmpty()"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "0aee08482c4493c2310e34f276980b550df08821c749ee826edba2bf0922c345"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c04a04007b5bf47109c608c2e850eec41dec973691bbaa99cb5e93a46866d8a8"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for firstIsInstanceOrNull()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for firstIsInstanceOrNull()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRITargetFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 38,
- "startColumn": 35,
- "charOffset": 1746,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Not enough information to infer type variable T",
+ "markdown": "Not enough information to infer type variable T"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 36,
- "startColumn": 1,
- "charOffset": 1589,
- "charLength": 291,
- "snippet": {
- "text": " else -> firstIsInstanceOrNull<PsiParameter>()?.let {\n val callable = firstIsInstanceOrNull<PsiMethod>()\n val params = (callable?.parameterList?.parameters).orEmpty()\n PointingToCallableParameters(params.indexOf(it))\n } ?: PointingToDeclaration"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "86b36110aac2db58c1237037dba88a40f03b550679b9bcc174c7a021a8a6c647"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DRITargetFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 38,
- "startColumn": 50,
- "charOffset": 1761,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 64,
+ "startColumn": 20,
+ "charOffset": 3163,
+ "charLength": 6,
+ "snippet": {
+ "text": "listOf"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 36,
- "startColumn": 1,
- "charOffset": 1589,
- "charLength": 291,
- "snippet": {
- "text": " else -> firstIsInstanceOrNull<PsiParameter>()?.let {\n val callable = firstIsInstanceOrNull<PsiMethod>()\n val params = (callable?.parameterList?.parameters).orEmpty()\n PointingToCallableParameters(params.indexOf(it))\n } ?: PointingToDeclaration"
+ "contextRegion": {
+ "startLine": 62,
+ "startColumn": 1,
+ "charOffset": 3020,
+ "charLength": 241,
+ "snippet": {
+ "text": " ?.filterIsInstance<JavaSourceRoot>()\n ?.mapNotNull { it.file.takeIf(::isFileInSourceRoots) }\n ?: listOf()\n val localFileSystem = VirtualFileManager.getInstance().getFileSystem(\"file\")\n"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f2ec67b0c0cd8b13c229e6d0e93ca403763291da019c8602f0aa39506ab572d2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/TypeReferenceFactory.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 62,
- "startColumn": 46,
- "charOffset": 2513,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 60,
- "startColumn": 1,
- "charOffset": 2428,
- "charLength": 110,
- "snippet": {
- "text": "\nprivate val KotlinType.constructorName\n get() = constructor.declarationDescriptor?.fqNameSafe?.asString()\n"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "06dea3c1736a844e71cbdecff75076640c4b9375c00aca40740284fe51195f22"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7d197f241da766b67b9f24a88a14913e01c3ecfc459983825c0fe60afc766c38"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/TypeReferenceFactory.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 62,
- "startColumn": 58,
- "charOffset": 2525,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: packageFqName",
+ "markdown": "Unresolved reference: packageFqName"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 60,
- "startColumn": 1,
- "charOffset": 2428,
- "charLength": 110,
- "snippet": {
- "text": "\nprivate val KotlinType.constructorName\n get() = constructor.declarationDescriptor?.fqNameSafe?.asString()\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0985a2463703cc566d697348e97278da3fff2fd1db7ffeb4b2a9933b2ebec2ed"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "No cast needed",
- "markdown": "No cast needed"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DokkaResolutionFacade.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 79,
- "startColumn": 78,
- "charOffset": 3407,
- "charLength": 15,
- "snippet": {
- "text": "descriptor as V"
+ "region": {
+ "startLine": 96,
+ "startColumn": 23,
+ "charOffset": 5439,
+ "charLength": 13,
+ "snippet": {
+ "text": "packageFqName"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 77,
- "startColumn": 1,
- "charOffset": 3274,
- "charLength": 324,
- "snippet": {
- "text": " }\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"
+ "contextRegion": {
+ "startLine": 94,
+ "startColumn": 1,
+ "charOffset": 5282,
+ "charLength": 269,
+ "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) }"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "8289f17cb7c3bb8e7590d87fd2eb80db0b8586435db5e5ed2b656d7daac920c2"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "No cast needed",
- "markdown": "No cast needed"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/DokkaResolutionFacade.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 80,
- "startColumn": 124,
- "charOffset": 3546,
- "charLength": 15,
- "snippet": {
- "text": "descriptor as V"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 78,
- "startColumn": 1,
- "charOffset": 3296,
- "charLength": 324,
- "snippet": {
- "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.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "0234b9c56231b7b7dc903de8b5dd4dff38e701eb7c590703c49f51f5bfb8c498"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c586c7557476c8b176ccc336ab49f1778c5b5593efa2fcb9f23597ce7767fd04"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiClass]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiClass\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 139,
- "startColumn": 41,
- "charOffset": 7843,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Expression expected, but a package name found",
+ "markdown": "Expression expected, but a package name found"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 137,
- "startColumn": 1,
- "charOffset": 7759,
- "charLength": 114,
- "snippet": {
- "text": "\n forEachClassId(qName) { classId ->\n findPsiClass(classId, scope)?.let { return it }\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "baac84be3bebfbaee7d7e60214197221b92ec774c14e54a45c4e80896f9ea681"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for topLevelClassesCache.getOrPut(classId.packageFqName.child(classId.relativeClassName.pathSegments().first())) { index.findClass(classId) { dir, type -> findVirtualFileGivenPackage(dir, relativeClassName, type) } ?: singleJavaFileRootsIndex.findJavaSourceClass(classId) }]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for topLevelClassesCache.getOrPut(classId.packageFqName.child(classId.relativeClassName.pathSegments().first())) { index.findClass(classId) { dir, type -\\> findVirtualFileGivenPackage(dir, relativeClassName, type) } ?: singleJavaFileRootsIndex.findJavaSourceClass(classId) }\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 80,
- "startColumn": 14,
- "charOffset": 4178,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 98,
+ "startColumn": 68,
+ "charOffset": 5546,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 78,
- "startColumn": 1,
- "charOffset": 4012,
- "charLength": 212,
- "snippet": {
- "text": " findVirtualFileGivenPackage(dir, relativeClassName, type)\n } ?: singleJavaFileRootsIndex.findJavaSourceClass(classId)\n }?.takeIf { it in searchScope }\n }\n }"
+ "contextRegion": {
+ "startLine": 96,
+ "startColumn": 1,
+ "charOffset": 5417,
+ "charLength": 157,
+ "snippet": {
+ "text": " .map { it.packageFqName }\n .distinct()\n .mapNotNull { facade.resolveSession.getPackageFragment(it) }\n .toList()\n"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b2f0b19e51740aa7ecb9511fe437f9741373b1db712757a570fb7b62779ab98c"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 103,
- "startColumn": 41,
- "charOffset": 5675,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 101,
- "startColumn": 1,
- "charOffset": 5541,
- "charLength": 261,
- "snippet": {
- "text": " // having different KotlinCliJavaFileManagerImpl's for different modules\n\n classId.outerClassId?.let { outerClassId ->\n val outerClass = outerClassFromRequest ?: findClass(outerClassId, searchScope)\n"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "80fa3f557d69c11ff261106cdc880a31811aea58966b7b9e9327bed0f6661416"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e9c88f06bb1710afa15582e5004738b1058eda1069484031e30b6855ba61c65d"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for outerClassFromRequest ?: findClass(outerClassId, searchScope)]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for outerClassFromRequest ?: findClass(outerClassId, searchScope)\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 109,
- "startColumn": 39,
- "charOffset": 6043,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Unresolved reference: safeAs",
+ "markdown": "Unresolved reference: safeAs"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 107,
- "startColumn": 1,
- "charOffset": 5869,
- "charLength": 237,
- "snippet": {
- "text": " outerClass.findInnerClass(classId.shortClassName, classFileContentFromRequest)\n else\n outerClass?.findInnerClass(classId.shortClassName)\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a031bedf1db5f183ebd1db7654d2b581d7b80349a417f388309dbc261ab9afed"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : PsiClass]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : PsiClass\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 126,
- "startColumn": 91,
- "charOffset": 6858,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 102,
+ "startColumn": 46,
+ "charOffset": 5725,
+ "charLength": 6,
+ "snippet": {
+ "text": "safeAs"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 124,
- "startColumn": 1,
- "charOffset": 6757,
- "charLength": 130,
- "snippet": {
- "text": " }\n\n return virtualFile.findPsiClassInVirtualFile(classId.relativeClassName.asString())?.let(::JavaClassImpl)\n }\n"
+ "contextRegion": {
+ "startLine": 100,
+ "startColumn": 1,
+ "charOffset": 5574,
+ "charLength": 273,
+ "snippet": {
+ "text": "\n return DokkaDescriptorVisitor(sourceSet, kotlinAnalysis[sourceSet].facade, context.logger).run {\n packageFragments.mapNotNull { it.safeAs<PackageFragmentDescriptor>() }.parallelMap {\n visitPackageFragmentDescriptor(\n it"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "064894ce47e4ead413d724aae5944cd4cecb4526d1c5df50c50fecd066616eec"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : VirtualFile]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : VirtualFile\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 169,
- "startColumn": 25,
- "charOffset": 8922,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 167,
- "startColumn": 1,
- "charOffset": 8785,
- "charLength": 272,
- "snippet": {
- "text": " val psiClass =\n findVirtualFileGivenPackage(dir, relativeClassName, rootType)\n ?.takeIf { it in scope }\n ?.findPsiClassInVirtualFile(relativeClassName)\n if (psiClass != null) {"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "4d3bda4e6c24b7ba682e033201b9b0f15e539c00d2e8c687c5d130268820ef08"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "89bfc5d41ece45d8be8852b87eb38f1efb4045fa0663dfefa9265db625bbb3fb"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 170,
- "startColumn": 25,
- "charOffset": 8971,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "KotlinAnnotator",
+ "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"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 168,
- "startColumn": 1,
- "charOffset": 8816,
- "charLength": 282,
- "snippet": {
- "text": " findVirtualFileGivenPackage(dir, relativeClassName, rootType)\n ?.takeIf { it in scope }\n ?.findPsiClassInVirtualFile(relativeClassName)\n if (psiClass != null) {\n result.add(psiClass)"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "282d3750b665dc830718b22db00d3a1756cba61ed0b1056aa2981d662e406fe4"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 180,
- "startColumn": 21,
- "charOffset": 9308,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 103,
+ "startColumn": 17,
+ "charOffset": 5793,
+ "charLength": 30,
+ "snippet": {
+ "text": "visitPackageFragmentDescriptor"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 178,
- "startColumn": 1,
- "charOffset": 9185,
- "charLength": 228,
- "snippet": {
- "text": " result.addIfNotNull(\n singleJavaFileRootsIndex.findJavaSourceClass(classId)\n ?.takeIf { it in scope }\n ?.findPsiClassInVirtualFile(relativeClassName)\n )"
+ "contextRegion": {
+ "startLine": 101,
+ "startColumn": 1,
+ "charOffset": 5575,
+ "charLength": 290,
+ "snippet": {
+ "text": " return DokkaDescriptorVisitor(sourceSet, kotlinAnalysis[sourceSet].facade, context.logger).run {\n packageFragments.mapNotNull { it.safeAs<PackageFragmentDescriptor>() }.parallelMap {\n visitPackageFragmentDescriptor(\n it\n )"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f857070273bd666a10e411de4ec6576d8951d885c2f41774218a4e08992f7339"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 181,
- "startColumn": 21,
- "charOffset": 9353,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 179,
- "startColumn": 1,
- "charOffset": 9218,
- "charLength": 196,
- "snippet": {
- "text": " singleJavaFileRootsIndex.findJavaSourceClass(classId)\n ?.takeIf { it in scope }\n ?.findPsiClassInVirtualFile(relativeClassName)\n )\n"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "00e4f6b5c433e97baaa76beb30afa73006a802c1b8ffa9ed8de5af5793d96b62"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "32fdf8075dcd4fa0b9f98d75173c06f8e9ce771677181399ac4c2a2d63b87f7d"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : VirtualFile]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : VirtualFile\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 70,
- "startColumn": 62,
- "charOffset": 3525,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: d (U+0064)",
+ "markdown": "Illegal character: d (U+0064)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 68,
- "startColumn": 1,
- "charOffset": 3352,
- "charLength": 245,
- "snippet": {
- "text": "\n private fun findPsiClass(classId: ClassId, searchScope: GlobalSearchScope): PsiClass? = perfCounter.time {\n findVirtualFileForTopLevelClass(classId, searchScope)?.findPsiClassInVirtualFile(classId.relativeClassName.asString())\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "67826cb2568a33a941b98639fec332470e01115c8e825c4a549c970a18b13879"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 177,
- "startColumn": 55,
- "charOffset": 7987,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 1,
+ "startColumn": 6,
+ "charOffset": 5,
+ "charLength": 1,
+ "snippet": {
+ "text": "d"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 175,
- "startColumn": 1,
- "charOffset": 7757,
- "charLength": 287,
- "snippet": {
- "text": " private fun doTravelPath(rootIndex: Int, packagesPath: List<String>, fillCachesAfter: Int, cachesPath: List<Cache>): VirtualFile? {\n val pathRoot = roots[rootIndex]\n val prefixPathSegments = pathRoot.prefixFqName?.pathSegments()\n\n var currentFile = pathRoot.file"
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 56,
+ "snippet": {
+ "text": "{{## def.assignDefault:\n {{? it.compositeRule }}\n {{"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "08d25eb189735bedba208161d7d57ee87f44771f9c8cd505e8db28c6f8788865"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 212,
- "startColumn": 56,
- "charOffset": 9593,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
},
- "contextRegion": {
- "startLine": 210,
- "startColumn": 1,
- "charOffset": 9305,
- "charLength": 456,
- "snippet": {
- "text": " // If in addition to a directory \"foo\" there's a class file \"foo.class\" AND there are no classes anywhere in the directory \"foo\",\n // then we ignore the directory and let the resolution choose the class \"foo\" instead.\n if (findChild(\"$subPackageName.$fileExtension\")?.isDirectory == false) {\n if (VfsUtilCore.processFilesRecursively(childDirectory) { file -> file.extension != fileExtension }) {\n return null"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "a2f1f8c9c0c90eb12020ee0cfba62e8b21e08339604c5ab442131ed8f773921f"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b4197a0caf84eea4463dd8b1c99aa92cd69f1cf2479602443faca4a49b3cd837"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type ???",
- "markdown": "Unnecessary safe call on a non-null receiver of type ???"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 436,
- "startColumn": 25,
- "charOffset": 19653,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: d (U+0064)",
+ "markdown": "Illegal character: d (U+0064)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 434,
- "startColumn": 1,
- "charOffset": 19521,
- "charLength": 195,
- "snippet": {
- "text": " else -> StandardFileSystems.local().findFileByPath(file.absolutePath)\n }\n rootFile?.let { JavaRoot(it, JavaRoot.RootType.BINARY) }\n }\n"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c154c953fd70e01ba54deb917cf927b40ca697e352ce45178dc23a32f6ae0248"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 538,
- "startColumn": 13,
- "charOffset": 23726,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 1,
+ "startColumn": 6,
+ "charOffset": 5,
+ "charLength": 1,
+ "snippet": {
+ "text": "d"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 536,
- "startColumn": 1,
- "charOffset": 23614,
- "charLength": 196,
- "snippet": {
- "text": " val sources: List<String>\n get() = configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<KotlinSourceRoot>()\n ?.map { it.path } ?: emptyList()\n"
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 63,
+ "snippet": {
+ "text": "{{## def.coerceType:\n {{\n var $dataType = 'dataType' + $lvl"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "b37ff2e1cf1fcd25d1da4016d9014959b98757e63b61fdc8a8f8d09a0f79a3d9"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 539,
- "startColumn": 13,
- "charOffset": 23777,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
},
- "contextRegion": {
- "startLine": 537,
- "startColumn": 1,
- "charOffset": 23644,
- "charLength": 174,
- "snippet": {
- "text": " get() = configuration.get(CLIConfigurationKeys.CONTENT_ROOTS)\n ?.filterIsInstance<KotlinSourceRoot>()\n ?.map { it.path } ?: emptyList()\n\n /**"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "22ba54b7591ef209377fb59d424ac96549f2b3a40e39c0c3daae0097b90b0460"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "57280ae1246b32325c1ae7bce8945aa02214c61b7e1dedb438a03ea9608268cd"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : JvmBuiltIns]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : JvmBuiltIns\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 251,
- "startColumn": 17,
- "charOffset": 11724,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: $ (U+0024)",
+ "markdown": "Illegal character: $ (U+0024)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 249,
- "startColumn": 1,
- "charOffset": 11544,
- "charLength": 250,
- "snippet": {
- "text": " val libraryModuleDescriptor = resolverForProject.descriptorForModule(library)\n val moduleDescriptor = resolverForProject.descriptorForModule(module)\n builtIns?.initialize(moduleDescriptor, true)\n\n val resolverForLibrary ="
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ebee4c59277cc3dc59c7f397c2618260ec0fa9794013722dc813c2733a205cb6"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : BinaryJavaClass]?",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : BinaryJavaClass\\]?"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 467,
- "startColumn": 49,
- "charOffset": 21095,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 3,
+ "startColumn": 9,
+ "charOffset": 34,
+ "charLength": 1,
+ "snippet": {
+ "text": "$"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 465,
- "startColumn": 1,
- "charOffset": 20975,
- "charLength": 266,
- "snippet": {
- "text": " }, moduleByJavaClass = {\n val file =\n (it as? BinaryJavaClass)?.virtualFile ?: (it as JavaClassImpl).psi.containingFile.virtualFile\n if (file in sourcesScope)\n module"
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 105,
+ "snippet": {
+ "text": "{{## def.coerceType:\n {{\n var $dataType = 'dataType' + $lvl\n , $coerced = 'coerced' + $lvl;\n }}"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e894eb4c0988cd3a466a4ecfd77f82e7d07aab2e11115bd796c400c233855468"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for s.safeAs>()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for s.safeAs\\>()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 281,
- "startColumn": 58,
- "charOffset": 12962,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
},
- "contextRegion": {
- "startLine": 279,
- "startColumn": 1,
- "charOffset": 12860,
- "charLength": 247,
- "snippet": {
- "text": " ).flatten()\n val inheritors =\n s.safeAs<WithExtraProperties<Documentable>>()?.let { it.extra[InheritorsInfo] }?.let { inheritors ->\n inheritors.value.filter { it.value.isNotEmpty() }\n }.orEmpty()"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "e2a26ae81e6daf860f9da9fe85ac47b27004aaf830b9d7536293771655133311"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d5200aa8a4d9d34938428caf89c0a8062526ae734ff52633a603198cd3efd947"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 281,
- "startColumn": 92,
- "charOffset": 12996,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: i (U+0069)",
+ "markdown": "Illegal character: i (U+0069)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 279,
- "startColumn": 1,
- "charOffset": 12860,
- "charLength": 247,
- "snippet": {
- "text": " ).flatten()\n val inheritors =\n s.safeAs<WithExtraProperties<Documentable>>()?.let { it.extra[InheritorsInfo] }?.let { inheritors ->\n inheritors.value.filter { it.value.isNotEmpty() }\n }.orEmpty()"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "a4e02c159cb206bf0131ea26555826e27768d442102c000d1de595663ebd01ae"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : Type for scope.safeAs>()]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : Type for scope.safeAs\\>()\\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 251,
- "startColumn": 66,
- "charOffset": 12000,
- "charLength": 2,
- "snippet": {
- "text": "?."
+ "region": {
+ "startLine": 2,
+ "startColumn": 7,
+ "charOffset": 30,
+ "charLength": 1,
+ "snippet": {
+ "text": "i"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 249,
- "startColumn": 1,
- "charOffset": 11802,
- "charLength": 351,
- "snippet": {
- "text": " val inheritors = scopes.fold(mutableMapOf<DokkaSourceSet, List<DRI>>()) { acc, scope ->\n val inheritorsForScope =\n scope.safeAs<WithExtraProperties<Documentable>>()?.let { it.extra[InheritorsInfo] }?.let { inheritors ->\n inheritors.value.filter { it.value.isNotEmpty() }\n }.orEmpty()"
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 92,
+ "snippet": {
+ "text": "{{## def.assignDefault:\n {{? it.compositeRule }}\n {{\n if (it.opts.strictDefaults) {"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "347085a1f70a39a357bb0af7bdef723d5d91d5f79dbcf6f892d0626a0ad4b0b9"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "KotlinDeprecation",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unnecessary safe call on a non-null receiver of type [ERROR : ]",
- "markdown": "Unnecessary safe call on a non-null receiver of type \\[ERROR : \\]"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 251,
- "startColumn": 100,
- "charOffset": 12034,
- "charLength": 2,
- "snippet": {
- "text": "?."
- },
- "sourceLanguage": "kotlin"
},
- "contextRegion": {
- "startLine": 249,
- "startColumn": 1,
- "charOffset": 11802,
- "charLength": 351,
- "snippet": {
- "text": " val inheritors = scopes.fold(mutableMapOf<DokkaSourceSet, List<DRI>>()) { acc, scope ->\n val inheritorsForScope =\n scope.safeAs<WithExtraProperties<Documentable>>()?.let { it.extra[InheritorsInfo] }?.let { inheritors ->\n inheritors.value.filter { it.value.isNotEmpty() }\n }.orEmpty()"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "004bf0684b6ca55fee7fb42375ec0c0c472bdc636866a0994a76e10262a4830f"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c6c20c355dfa39eabae0f25f16821cef914de7e5e49ccf76d9684c57b4b49fa9"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "UnusedEquals",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Unused equals expression",
- "markdown": "Unused equals expression"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 212,
- "startColumn": 13,
- "charOffset": 9550,
- "charLength": 65,
- "snippet": {
- "text": "findChild(\"$subPackageName.$fileExtension\")?.isDirectory == false"
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: $ (U+0024)",
+ "markdown": "Illegal character: $ (U+0024)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 210,
- "startColumn": 1,
- "charOffset": 9305,
- "charLength": 456,
- "snippet": {
- "text": " // If in addition to a directory \"foo\" there's a class file \"foo.class\" AND there are no classes anywhere in the directory \"foo\",\n // then we ignore the directory and let the resolution choose the class \"foo\" instead.\n if (findChild(\"$subPackageName.$fileExtension\")?.isDirectory == false) {\n if (VfsUtilCore.processFilesRecursively(childDirectory) { file -> file.extension != fileExtension }) {\n return null"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "47a163e8dfbb54f03cf2b3a5b40237754dac7c2bca0d4e0ebe057afd25f1801b"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "OverridingDeprecatedMember",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.PackageOptions'",
- "markdown": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.PackageOptions'"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "core/src/main/kotlin/defaultConfiguration.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 82,
- "startColumn": 18,
- "charOffset": 3999,
- "charLength": 16,
- "snippet": {
- "text": "includeNonPublic"
+ "region": {
+ "startLine": 4,
+ "startColumn": 9,
+ "charOffset": 72,
+ "charLength": 1,
+ "snippet": {
+ "text": "$"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 80,
- "startColumn": 1,
- "charOffset": 3911,
- "charLength": 203,
- "snippet": {
- "text": "data class PackageOptionsImpl(\n override val matchingRegex: String,\n override val includeNonPublic: Boolean,\n override val reportUndocumented: Boolean?,\n override val skipDeprecated: Boolean,"
+ "contextRegion": {
+ "startLine": 2,
+ "startColumn": 1,
+ "charOffset": 21,
+ "charLength": 126,
+ "snippet": {
+ "text": " {{\n var $dataType = 'dataType' + $lvl\n , $coerced = 'coerced' + $lvl;\n }}\n var {{=$dataType}} = typeof {{=$data}};"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "034b774a6f9ddd44d3c9db0b7357bd98a6a242b12ca6a0118ac73ca6c9786d17"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "OverridingDeprecatedMember",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet'",
- "markdown": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet'"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "core/src/main/kotlin/defaultConfiguration.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 40,
- "startColumn": 18,
- "charOffset": 1930,
- "charLength": 16,
- "snippet": {
- "text": "includeNonPublic"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 38,
- "startColumn": 1,
- "charOffset": 1812,
- "charLength": 337,
- "snippet": {
- "text": " override val samples: Set<File> = emptySet(),\n override val includes: Set<File> = emptySet(),\n override val includeNonPublic: Boolean = DokkaDefaults.includeNonPublic,\n override val reportUndocumented: Boolean = DokkaDefaults.reportUndocumented,\n override val skipEmptyPackages: Boolean = DokkaDefaults.skipEmptyPackages,"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "d0bb6ff065f9f03b2ff7d36d16db3e58282e58304362666d3b97976a726343d9"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ed06ea8a9f0e13ca8492e4ec6f284066a416b339aa49b5a7816f09d74d138d6b"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "OverridingDeprecatedMember",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.PackageOptions'",
- "markdown": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.PackageOptions'"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "runners/maven-plugin/src/main/kotlin/DokkaMojo.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 71,
- "startColumn": 22,
- "charOffset": 2474,
- "charLength": 16,
- "snippet": {
- "text": "includeNonPublic"
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: { (U+007B)",
+ "markdown": "Illegal character: { (U+007B)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/coerce.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 69,
- "startColumn": 1,
- "charOffset": 2433,
- "charLength": 119,
- "snippet": {
- "text": "\n @Parameter\n override var includeNonPublic: Boolean = DokkaDefaults.includeNonPublic\n\n @Parameter"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.runners.maven-plugin.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "834c4fdce751395c94ddd72ead8226818d6106a21954c2cf7f9e4cc8753f9a39"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "OverridingDeprecatedMember",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet'",
- "markdown": "Overrides deprecated member in 'org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet'"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "runners/cli/src/main/kotlin/cli/main.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 284,
- "startColumn": 22,
- "charOffset": 11047,
- "charLength": 16,
- "snippet": {
- "text": "includeNonPublic"
+ "region": {
+ "startLine": 6,
+ "startColumn": 7,
+ "charOffset": 112,
+ "charLength": 1,
+ "snippet": {
+ "text": "{"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 282,
- "startColumn": 1,
- "charOffset": 10916,
- "charLength": 286,
- "snippet": {
- "text": " override val samples = samples.toMutableSet()\n override val includes = includes.toMutableSet()\n override val includeNonPublic = includeNonPublic\n override val reportUndocumented = reportUndocumented\n override val skipEmptyPackages = skipEmptyPackages"
+ "contextRegion": {
+ "startLine": 4,
+ "startColumn": 1,
+ "charOffset": 64,
+ "charLength": 117,
+ "snippet": {
+ "text": " , $coerced = 'coerced' + $lvl;\n }}\n var {{=$dataType}} = typeof {{=$data}};\n var {{=$coerced}} = undefined;\n"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.runners.cli.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "f252d0a9b7f624a0e13f07b0d0364d569c208392ee070aa888213e300566f796"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "UselessCallOnCollection",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Call on collection type may be reduced",
- "markdown": "Call on collection type may be reduced"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 46,
- "startColumn": 44,
- "charOffset": 1889,
- "charLength": 11,
- "snippet": {
- "text": ".mapNotNull"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 44,
- "startColumn": 1,
- "charOffset": 1708,
- "charLength": 333,
- "snippet": {
- "text": " private fun filterPackages(packages: List<DPackage>): Pair<Boolean, List<DPackage>> {\n var packagesListChanged = false\n val filteredPackages = packages.mapNotNull { pckg ->\n var modified = false\n val functions = filterFunctions(pckg.functions).let { (listModified, list) ->"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "7259a717a8dcb67a2781e73c545b8a2172d8eb77f624da62619a3abba6eec477"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "9fc5204a14a1969da75165b5a6b2e5002d229acf67f0949d895ccb00693aa317"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "UselessCallOnCollection",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Call on collection type may be reduced",
- "markdown": "Call on collection type may be reduced"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 518,
- "startColumn": 62,
- "charOffset": 25711,
- "charLength": 11,
- "snippet": {
- "text": ".mapNotNull"
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: } (U+007D)",
+ "markdown": "Illegal character: } (U+007D)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 516,
- "startColumn": 1,
- "charOffset": 25478,
- "charLength": 358,
- "snippet": {
- "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.plugins.base.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "05157a95bc56405f51f67897865f0d86995e8d94b9e274566928b62c76adcbc1"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "UselessCallOnCollection",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Call on collection type may be reduced",
- "markdown": "Call on collection type may be reduced"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 431,
- "startColumn": 13,
- "charOffset": 19336,
- "charLength": 11,
- "snippet": {
- "text": ".mapNotNull"
+ "region": {
+ "startLine": 2,
+ "startColumn": 24,
+ "charOffset": 47,
+ "charLength": 1,
+ "snippet": {
+ "text": "}"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 429,
- "startColumn": 1,
- "charOffset": 19250,
- "charLength": 270,
- "snippet": {
- "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\")"
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 92,
+ "snippet": {
+ "text": "{{## def.assignDefault:\n {{? it.compositeRule }}\n {{\n if (it.opts.strictDefaults) {"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "ce7912f1171c21f045a4b508fd0e3f6cb980c85f2110c820634d47d9799fe007"
- },
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/context/MockContext.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 43,
- "snippet": {
- "text": "package org.jetbrains.dokka.testApi.context"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 90,
- "snippet": {
- "text": "package org.jetbrains.dokka.testApi.context\n\nimport org.jetbrains.dokka.DokkaConfiguration"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.test-api.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "8115667a2465dd0fddfa5e911b5447970b8fe3f2634312461a45f6725744696e"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "8d9d2b3dafc0f7f9046c878bada2df1ea02253ad1d3c02abd57cdea36b2ca35f"
},
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 42,
- "snippet": {
- "text": "package org.jetbrains.dokka.testApi.logger"
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: ( (U+0028)",
+ "markdown": "Illegal character: ( (U+0028)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/defaults.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 92,
- "snippet": {
- "text": "package org.jetbrains.dokka.testApi.logger\n\nimport org.jetbrains.dokka.utilities.DokkaLogger"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.test-api.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "25bbec7ca8f95528b9ecffc2488c1a5231ec9f9672a672f12d414949c1a6c931"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "core/content-matcher-test-utils/src/main/kotlin/matchers/content/contentMatchers.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 56,
- "snippet": {
- "text": "package org.jetbrains.dokka.test.tools.matchers.content"
+ "region": {
+ "startLine": 4,
+ "startColumn": 10,
+ "charOffset": 66,
+ "charLength": 1,
+ "snippet": {
+ "text": "("
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 106,
- "snippet": {
- "text": "package org.jetbrains.dokka.test.tools.matchers.content\n\nimport org.jetbrains.dokka.model.asPrintableTree"
+ "contextRegion": {
+ "startLine": 2,
+ "startColumn": 1,
+ "charOffset": 24,
+ "charLength": 209,
+ "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);"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.content-matcher-test-utils.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7639b3b7de9ebce3fe9e544652fd96b186c2c22f51cd5375ada38cba2106022a"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 46,
- "snippet": {
- "text": "package org.jetbrains.dokka.testApi.testRunner"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 99,
- "snippet": {
- "text": "package org.jetbrains.dokka.testApi.testRunner\n\nimport com.intellij.openapi.application.PathManager"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.test-api.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "c5ed3110556227ccc88ab1871ad725ed87c8165e8742e72fdad51ca32c08689e"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d091bb5eb5d558992731ebba7999dda01ce1c9c952f5e9128f3565557c5572fe"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
},
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/base-test-utils/src/main/kotlin/testRunner/baseTestApi.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 51,
- "snippet": {
- "text": "package org.jetbrains.dokka.base.testApi.testRunner"
+ {
+ "ruleId": "JavaAnnotator",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Illegal character: d (U+0064)",
+ "markdown": "Illegal character: d (U+0064)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/html/frontend/node_modules/ajv/lib/dot/errors.def",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 94,
- "snippet": {
- "text": "package org.jetbrains.dokka.base.testApi.testRunner\n\nimport org.jetbrains.dokka.CoreExtensions"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "604c0d025faa8e4d4b0a912606f6083a790a6bf69a3fa07c47e933a05b62562c"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/JsoupUtils.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 13,
- "snippet": {
- "text": "package utils"
+ "region": {
+ "startLine": 1,
+ "startColumn": 5,
+ "charOffset": 4,
+ "charLength": 1,
+ "snippet": {
+ "text": "d"
+ },
+ "sourceLanguage": ""
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 45,
- "snippet": {
- "text": "package utils\n\nimport org.jsoup.nodes.Element"
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 46,
+ "snippet": {
+ "text": "{{# def.definitions }}\n\n{{## def._error:_rule:"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "667d79296cf078b7d8bbdf6d9ef6cba42f7a795c031b3b635252e7d846dde270"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/base-test-utils/src/main/kotlin/renderers/SignatureUtils.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 18,
- "snippet": {
- "text": "package signatures"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 42,
- "snippet": {
- "text": "package signatures\n\nimport org.jsoup.Jsoup"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.base-test-utils.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "675895587616228f2e24fdf0a2c260a403d2f781c6c4258447eb7445540be692"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "74a48f0e72f0052655cb0015f90e066dd0812b06219fc5af2102f8b4eb0e4f63"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
}
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/Substitutor.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
+ ],
+ "qodana.promo.results": [
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/transformers/pages/samples/SamplesTransformer.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 101,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.SubstitutionCommand"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "da7e88857d2f059ece7354cd5fa4dc0eb78e7247f067046c7f108315a587c1cb"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/CommandHandler.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
+ "region": {
+ "startLine": 40,
+ "startColumn": 88,
+ "charOffset": 1927,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 89,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command"
+ "contextRegion": {
+ "startLine": 38,
+ "startColumn": 1,
+ "charOffset": 1699,
+ "charLength": 264,
+ "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 }"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "6cbf48abc9e44118dfd217c0af11ab35537b0ba656c1e0eff4cb58aa940e96bc"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/TemplatingPlugin.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 120,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.allModulesPage.templates.PackageListProcessingStrategy"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "5d92541f3f4d2bf9b3be18273d527f6a4c113b905320eb7949c3ae54764d2e19"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c69de2c673d73426b3c1627ab6731d569067c9492a284f4bb6c766da6b789d68"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
},
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/PathToRootSubstitutor.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/transformers/documentables/InheritorsExtractorTransformer.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 111,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.PathToRootSubstitutionCommand"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "84e8acb420595d1e882ba384b8d99bfa0a86e8b1ac83bb654f5b186d9f931c65"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/FallbackTemplateProcessingStrategy.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
+ "region": {
+ "startLine": 66,
+ "startColumn": 56,
+ "charOffset": 3700,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 84,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration"
+ "contextRegion": {
+ "startLine": 64,
+ "startColumn": 1,
+ "charOffset": 3542,
+ "charLength": 212,
+ "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"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "7414f6addc1034c55f3181743344b725931bd320fa60011503374f0e81c738a3"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 89,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.Command"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "fe1edc7fd589ade3e56a5e4cebab8106779d0784747cc0ef6e0f558673855113"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "0570c6420930cc39294dac42d814869da58d0d2a1e067731ad25fc3bc0f08950"
},
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/PackageListProcessingStrategy.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 52,
- "snippet": {
- "text": "package org.jetbrains.dokka.allModulesPage.templates"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 122,
- "snippet": {
- "text": "package org.jetbrains.dokka.allModulesPage.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration.DokkaModuleDescription"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "33ec89d00a0d7303c036c0f8d59ef58a08c235411eeb2725f16b8288472f44c6"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/TemplateProcessor.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
+ "region": {
+ "startLine": 365,
+ "startColumn": 52,
+ "charOffset": 16310,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 76,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport kotlinx.coroutines.Dispatchers"
+ "contextRegion": {
+ "startLine": 363,
+ "startColumn": 1,
+ "charOffset": 16165,
+ "charLength": 270,
+ "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,"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "fbcc107d4e3fe66c0484ee4367dbe4da67270a8327b8d00489cefe69ec1f61a8"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/VersionsOrdering.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 101,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport org.apache.maven.artifact.versioning.ComparableVersion"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "a93942990340ab936decd1ac4fdb20eb5091038c24597f01a98b928524fd19b7"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "61c2c3dd3f47a003f0e4a7daf8dbaa8c37312399dbb333a39445684353af808f"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
},
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/AddToNavigationCommandHandler.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 104,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.base.templating.AddToNavigationCommand"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5ec10a3f393fa74e6d770dad433b2182e8d051230eab2391c3da78c837e5cba3"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/VersioningPlugin.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
+ "region": {
+ "startLine": 365,
+ "startColumn": 66,
+ "charOffset": 16324,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 93,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport org.jetbrains.dokka.CoreExtensions.postActions"
+ "contextRegion": {
+ "startLine": 363,
+ "startColumn": 1,
+ "charOffset": 16165,
+ "charLength": 270,
+ "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,"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1edab577f5c43e81d3cea2272deb1ba2020fd212dff054f5739ca8bc022c595d"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/ReplaceVersionsCommand.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 40,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\n"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "ea94e9e75e89a1bbe39f2b16c2835e2bdf97203689f48d74258a9d21ec5ba682"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "e2f4c0367c9ea092bc18ea632cb9c9465bca120d2b2e47f12155cdb9e6d78d92"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
},
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/JsonElementBasedTemplateProcessingStrategy.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 52,
- "snippet": {
- "text": "package org.jetbrains.dokka.allModulesPage.templates"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 122,
- "snippet": {
- "text": "package org.jetbrains.dokka.allModulesPage.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration.DokkaModuleDescription"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c6f09facbfc4caf11c0ff7b7977db2001d5749aa10e3819449335c935f319686"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/htmlPreprocessors.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
+ "region": {
+ "startLine": 373,
+ "startColumn": 52,
+ "charOffset": 16706,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 101,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport org.jetbrains.dokka.pages.RendererSpecificResourcePage"
+ "contextRegion": {
+ "startLine": 371,
+ "startColumn": 1,
+ "charOffset": 16587,
+ "charLength": 273,
+ "snippet": {
+ "text": " ) {\n annotationsBlock(t)\n t.visibility[it]?.takeIf { it !in ignoredVisibilities }?.name?.let { keyword(\"$it \") }\n processExtraModifiers(t)\n keyword(\"typealias \")"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "bfafc4808d91501918960c3469bd87202df97912dfd0df7cbe6a780c43407e84"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/VersioningConfiguration.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 96,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport org.jetbrains.dokka.plugability.ConfigurableBlock"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "c154591afc44355a3270f29f40a6b6b2f1b52c4e1acbaa9115545811b2685607"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "c37592c35e849873880a83f4e6c069e8719723059e56e39e1c7fa42db20b3950"
},
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/ReplaceVersionCommandConsumer.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 66,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport kotlinx.html.unsafe"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "3a94be140a4a865de95f6aafc50f10352fabfe97ccde9e8eba02151c51dba474"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/VersioningStorage.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
+ "region": {
+ "startLine": 373,
+ "startColumn": 104,
+ "charOffset": 16758,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 92,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport com.fasterxml.jackson.annotation.JsonProperty"
+ "contextRegion": {
+ "startLine": 371,
+ "startColumn": 1,
+ "charOffset": 16587,
+ "charLength": 273,
+ "snippet": {
+ "text": " ) {\n annotationsBlock(t)\n t.visibility[it]?.takeIf { it !in ignoredVisibilities }?.name?.let { keyword(\"$it \") }\n processExtraModifiers(t)\n keyword(\"typealias \")"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "1eb1eec377dd490e76cd950b53b5b6a48ee62e460e6854ac61ec9773899ab0f1"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/templating/src/main/kotlin/templates/DirectiveBasedTemplateProcessing.kt",
- "uriBaseId": "SRCROOT"
},
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 37,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates"
- },
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 84,
- "snippet": {
- "text": "package org.jetbrains.dokka.templates\n\nimport org.jetbrains.dokka.DokkaConfiguration"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.templating.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "dd01dcc63c4f841c46c186977d4dddca864427c22c832b95f1ff55f99553c232"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "05bf222c7532688d38c0d402e5e9c0adb383d1377ca3e07d4ee5510f3b3d9978"
},
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/DefaultPreviousDocumentationCopyPostAction.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 77,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport kotlinx.coroutines.Dispatchers"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "5ea210d8a2ced753821a9ad49b7524c3bf0381e991fc8f4ed28f18c7aac1fbbc"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/versioning/src/main/kotlin/versioning/VersionsNavigationCreator.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 38,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning"
+ "region": {
+ "startLine": 234,
+ "startColumn": 52,
+ "charOffset": 10534,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 61,
- "snippet": {
- "text": "package org.jetbrains.dokka.versioning\n\nimport kotlinx.html.a"
+ "contextRegion": {
+ "startLine": 232,
+ "startColumn": 1,
+ "charOffset": 10307,
+ "charLength": 278,
+ "snippet": {
+ "text": " separatorStyles = mainStyles + TokenStyle.Punctuation,\n surroundingCharactersStyle = mainStyles + TokenStyle.Operator) {\n signatureForProjection(it)\n }\n }"
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.versioning.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "2b283aaae137d5731b34c793328bdd76475100c73973852412b11ae742d48360"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 17,
- "startColumn": 1,
- "charOffset": 602,
- "charLength": 45,
- "snippet": {
- "text": "package org.jetbrains.kotlin.cli.jvm.compiler"
- },
- "sourceLanguage": "kotlin"
},
- "contextRegion": {
- "startLine": 15,
- "startColumn": 1,
- "charOffset": 597,
- "charLength": 96,
- "snippet": {
- "text": " */\n\npackage org.jetbrains.kotlin.cli.jvm.compiler\n\nimport com.intellij.core.CoreJavaFileManager"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "a0b3b11c879d589d7773dc676cd91154dc8bd4e08cd3707ddd9ad8c1839728cc"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "34e5a7149e6dfa5a40b989fb9a44af3aff54d0927b7f64511af064bee0e686a9"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
},
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/JvmDependenciesIndexImpl.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 17,
- "startColumn": 1,
- "charOffset": 602,
- "charLength": 42,
- "snippet": {
- "text": "package org.jetbrains.kotlin.cli.jvm.index"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 15,
- "startColumn": 1,
- "charOffset": 597,
- "charLength": 102,
- "snippet": {
- "text": " */\n\npackage org.jetbrains.kotlin.cli.jvm.index\n\nimport com.intellij.ide.highlighter.JavaClassFileType"
- }
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.kotlin-analysis.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "df1403c76ecfefe1138fd1936876493437cd3a8fc78cf3398733d3217ce659d5"
- },
- "properties": {
- "ideaSeverity": "ERROR",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "PackageDirectoryMismatch",
- "kind": "fail",
- "level": "error",
- "message": {
- "text": "Package directive does not match the file location",
- "markdown": "Package directive does not match the file location"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "runners/cli/src/main/kotlin/cli/main.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 27,
- "snippet": {
- "text": "package org.jetbrains.dokka"
+ "region": {
+ "startLine": 466,
+ "startColumn": 113,
+ "charOffset": 23586,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
},
- "sourceLanguage": "kotlin"
- },
- "contextRegion": {
- "startLine": 1,
- "startColumn": 1,
- "charOffset": 0,
- "charLength": 49,
- "snippet": {
- "text": "package org.jetbrains.dokka\n\nimport kotlinx.cli.*"
+ "contextRegion": {
+ "startLine": 464,
+ "startColumn": 1,
+ "charOffset": 23463,
+ "charLength": 208,
+ "snippet": {
+ "text": " }\n\n private fun PsiReferenceList.toDriList() = referenceElements.mapNotNull { it?.resolve()?.let { DRI.from(it) } }\n\n private fun PsiModifierListOwner.additionalExtras() = listOfNotNull("
+ }
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.runners.cli.main",
- "kind": "module"
- }
- ]
- }
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "4398db981ba90b7fdbe1719b40f3db2e79871b7a085f8f9f05b0ca2363252c5f"
- },
- "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": 168,
- "startColumn": 52,
- "charOffset": 6495,
- "charLength": 2,
- "snippet": {
- "text": "\\/"
- },
- "sourceLanguage": "RegExp"
},
- "contextRegion": {
- "startLine": 166,
- "startColumn": 1,
- "charOffset": 6420,
- "charLength": 112,
- "snippet": {
- "text": "\n companion object {\n private val filePathRegex = Regex(\"\"\"[\\n^](\\/[\\w|\\-]+)+(\\.\\w+)?\\s*\\n\"\"\")\n }\n}"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.core.test-api.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "43abdc783667215cd843e98409243d8b44f32eba0802c22d54b586149bfa3145"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "d094b8a962cb27b6e5c46e97a536ce666456b1e36f17555d2982f65f4a21e1b5"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- },
- {
- "ruleId": "BlockingMethodInNonBlockingContext",
- "kind": "fail",
- "level": "warning",
- "message": {
- "text": "Possibly blocking call in non-blocking context could lead to thread starvation",
- "markdown": "Possibly blocking call in non-blocking context could lead to thread starvation"
- },
- "locations": [
- {
- "physicalLocation": {
- "artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/FileWriter.kt",
- "uriBaseId": "SRCROOT"
- },
- "region": {
- "startLine": 72,
- "startColumn": 28,
- "charOffset": 2653,
- "charLength": 4,
- "snippet": {
- "text": "walk"
+ {
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
+ "uriBaseId": "SRCROOT"
},
- "sourceLanguage": "kotlin"
+ "region": {
+ "startLine": 809,
+ "startColumn": 18,
+ "charOffset": 41128,
+ "charLength": 2,
+ "snippet": {
+ "text": "it"
+ },
+ "sourceLanguage": "kotlin"
+ },
+ "contextRegion": {
+ "startLine": 807,
+ "startColumn": 1,
+ "charOffset": 41066,
+ "charLength": 383,
+ "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"
+ }
+ }
},
- "contextRegion": {
- "startLine": 70,
- "startColumn": 1,
- "charOffset": 2544,
- "charLength": 239,
- "snippet": {
- "text": " val fs = getFileSystemForURI(uri)\n val path = fs.getPath(pathFrom)\n for (file in Files.walk(path).iterator()) {\n if (Files.isDirectory(file)) {\n val dirPath = file.toAbsolutePath().toString()"
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.plugins.base.main",
+ "kind": "module"
}
- }
- },
- "logicalLocations": [
- {
- "fullyQualifiedName": "dokka.plugins.base.main",
- "kind": "module"
- }
- ]
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "a32b4cc18854fc56349b24a79ae9b6fcd32453c6de5fb0f8dc54cc40b497d277"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING"
}
- ],
- "partialFingerprints": {
- "equalIndicator/v1": "186e7a5902a78a0e91105ac77dbe66f541d9b9f38f734913d702e5fecc78fc28"
},
- "properties": {
- "ideaSeverity": "WARNING",
- "tags": [
- "ideaSeverity"
- ]
- }
- }
- ],
- "automationDetails": {
- "id": "project/qodana/2022-03-31",
- "guid": "e0f8dbc4-e81a-45c2-9168-7128cb27cfcf"
- },
- "newlineSequences": [
- "\r\n",
- "\n"
- ],
- "properties": {
- "qodana.sanity.results": [
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: DeclarationDescriptor",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: DeclarationDescriptor"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 59,
- "startColumn": 24,
- "charOffset": 2388,
- "charLength": 21,
+ "startLine": 810,
+ "startColumn": 18,
+ "charOffset": 41237,
+ "charLength": 2,
"snippet": {
- "text": "DeclarationDescriptor"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 57,
+ "startLine": 808,
"startColumn": 1,
- "charOffset": 2362,
- "charLength": 121,
+ "charOffset": 41100,
+ "charLength": 388,
"snippet": {
- "text": "}\n\nprivate fun Collection<DeclarationDescriptor>.sorted() = sortedWith(\n compareBy(\n { it is ClassDescriptor },"
+ "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"
}
}
},
@@ -78225,44 +66981,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "165728d3becb6b982df3e85d13073e42de2010f7c722d9a0cc64d7ba26c0a998"
+ "equalIndicator/v1": "b5f141f52b1fc8e54a5ebae31ae1a2915b31ee2c84eefb6cbddcd2487a8a386e"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER] Not enough information to infer type variable T",
- "markdown": "\\[NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER\\] Not enough information to infer type variable T"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 60,
- "startColumn": 5,
- "charOffset": 2438,
- "charLength": 9,
+ "startLine": 811,
+ "startColumn": 18,
+ "charOffset": 41355,
+ "charLength": 2,
"snippet": {
- "text": "compareBy"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 58,
+ "startLine": 809,
"startColumn": 1,
- "charOffset": 2364,
- "charLength": 166,
+ "charOffset": 41111,
+ "charLength": 383,
"snippet": {
- "text": "\nprivate fun Collection<DeclarationDescriptor>.sorted() = sortedWith(\n compareBy(\n { it is ClassDescriptor },\n { (it as? FunctionDescriptor)?.name },"
+ "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 }"
}
}
},
@@ -78275,44 +67031,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "1f91a5a6400010cc7123af0c40426cba5c959c1161e371aec7afe08c3527e771"
+ "equalIndicator/v1": "f0d5859f54d0fcb79e34f57f3affe51e9b042dec9951e7d7826d097c26ce26ca"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: ClassDescriptor",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: ClassDescriptor"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 61,
- "startColumn": 17,
- "charOffset": 2465,
- "charLength": 15,
+ "startLine": 681,
+ "startColumn": 73,
+ "charOffset": 34908,
+ "charLength": 2,
"snippet": {
- "text": "ClassDescriptor"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 59,
+ "startLine": 679,
"startColumn": 1,
- "charOffset": 2365,
- "charLength": 229,
+ "charOffset": 34685,
+ "charLength": 330,
"snippet": {
- "text": "private fun Collection<DeclarationDescriptor>.sorted() = sortedWith(\n compareBy(\n { it is ClassDescriptor },\n { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },"
+ "text": " it.toSourceSetDependent().toAdditionalModifiers(),\n annotations.toSourceSetDependent().toAnnotations(),\n psi.getConstantExpression()?.let { DefaultValue(it.toSourceSetDependent()) },\n takeIf { isVar }?.let { IsVar }\n )"
}
}
},
@@ -78325,44 +67081,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "02646a07abe0b6dfce7d2eb0cf0532bd8dce4fb7e9b0b42041183365f0152c83"
+ "equalIndicator/v1": "a263034ca5e4f88c601fc620a6dca82239f3f2d985fce0ecb61d38bab46e2aa0"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: FunctionDescriptor",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: FunctionDescriptor"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/parsers/moduleAndPackage/ModuleAndPackageDocumentationParsingContext.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 62,
- "startColumn": 19,
- "charOffset": 2502,
- "charLength": 18,
+ "startLine": 440,
+ "startColumn": 62,
+ "charOffset": 22241,
+ "charLength": 2,
"snippet": {
- "text": "FunctionDescriptor"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 60,
+ "startLine": 438,
"startColumn": 1,
- "charOffset": 2434,
- "charLength": 254,
+ "charOffset": 22080,
+ "charLength": 315,
"snippet": {
- "text": " compareBy(\n { it is ClassDescriptor },\n { (it as? FunctionDescriptor)?.name },\n { (it as? FunctionDescriptor)?.valueParameters?.size },\n { (it as? FunctionDescriptor)?.valueParameters?.joinToString { it.type.toString() } }"
+ "text": " extra = psi.additionalExtras().let {\n PropertyContainer.withAll(\n inheritedFrom?.let { InheritedMember(it.toSourceSetDependent()) },\n it.toSourceSetDependent().toAdditionalModifiers(),\n (psi.annotations.toList()"
}
}
},
@@ -78375,44 +67131,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "1cb38d35c18d18bd99b50df49e3974dd0c53cf431265bc46ff6692aa128eebfa"
+ "equalIndicator/v1": "e579a38a7c6913697c278bb028526d878dc96e2e1562e1a8f78b36fae49cc98d"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: safeAs",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: safeAs"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/PackageListService.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 13,
- "startColumn": 47,
- "charOffset": 681,
- "charLength": 6,
+ "startLine": 446,
+ "startColumn": 61,
+ "charOffset": 22683,
+ "charLength": 2,
"snippet": {
- "text": "safeAs"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 11,
+ "startLine": 444,
"startColumn": 1,
- "charOffset": 538,
- "charLength": 232,
+ "charOffset": 22498,
+ "charLength": 307,
"snippet": {
- "text": "import org.jetbrains.dokka.plugability.plugin\nimport org.jetbrains.dokka.plugability.querySingle\nimport org.jetbrains.kotlin.utils.addToStdlib.safeAs\n\nclass PackageListService(val context: DokkaContext, val rootPage: RootPageNode) {"
+ "text": " .toAnnotations(),\n ObviousMember.takeIf { psi.isObvious(inheritedFrom) },\n psi.throwsList.toDriList().takeIf { it.isNotEmpty() }\n ?.let { CheckedExceptions(it.toSourceSetDependent()) }\n )"
}
}
},
@@ -78425,44 +67181,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "9dd2702be9d7cca6aaa6020dfc6a7d60b3bb3fd2f2bc35f3b6f3c8b2a76c2591"
+ "equalIndicator/v1": "d20789272edb467fd289e706cf3c23f7fe423ca22e26349790cedabd3370095f"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: safeAs",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: safeAs"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/PackageListService.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 32,
- "startColumn": 36,
- "charOffset": 1453,
- "charLength": 6,
+ "startLine": 447,
+ "startColumn": 55,
+ "charOffset": 22755,
+ "charLength": 2,
"snippet": {
- "text": "safeAs"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 30,
+ "startLine": 445,
"startColumn": 1,
- "charOffset": 1403,
- "charLength": 224,
+ "charOffset": 22544,
+ "charLength": 279,
"snippet": {
- "text": " }\n\n val contentPage = node.safeAs<ContentPage>()\n contentPage?.dri?.forEach { dri ->\n val nodeLocation = locationProvider.resolve(node, context = module, skipExtension = true)"
+ "text": " ObviousMember.takeIf { psi.isObvious(inheritedFrom) },\n psi.throwsList.toDriList().takeIf { it.isNotEmpty() }\n ?.let { CheckedExceptions(it.toSourceSetDependent()) }\n )\n }"
}
}
},
@@ -78475,44 +67231,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "70ee70f56ae9739170cd2e2006ab0ac42dcc31cd967ef904803ae87c0d7a1a50"
+ "equalIndicator/v1": "f0cf498ffbbbb7d509d9b49386e5e87260025eeff308f81a525634c7ceec99a4"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[OVERLOAD_RESOLUTION_AMBIGUITY] Overload resolution ambiguity: public inline fun Iterable.forEach(action: (TypeVariable(T)) -> Unit): Unit defined in kotlin.collections public inline fun Map.forEach(action: (Map.Entry) -> Unit): Unit defined in kotlin.collections",
- "markdown": "\\[OVERLOAD_RESOLUTION_AMBIGUITY\\] Overload resolution ambiguity: public inline fun Iterable.forEach(action: (TypeVariable(T)) -\\> Unit): Unit defined in kotlin.collections public inline fun Map.forEach(action: (Map.Entry) -\\> Unit): Unit defined in kotlin.collections"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/PackageListService.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 33,
- "startColumn": 31,
- "charOffset": 1505,
- "charLength": 7,
+ "startLine": 1215,
+ "startColumn": 25,
+ "charOffset": 60361,
+ "charLength": 2,
"snippet": {
- "text": "forEach"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 31,
+ "startLine": 1213,
"startColumn": 1,
- "charOffset": 1417,
- "charLength": 309,
+ "charOffset": 60251,
+ "charLength": 186,
"snippet": {
- "text": "\n val contentPage = node.safeAs<ContentPage>()\n contentPage?.dri?.forEach { dri ->\n val nodeLocation = locationProvider.resolve(node, context = module, skipExtension = true)\n ?: run { context.logger.error(\"Cannot resolve path for ${node.name}!\"); null }"
+ "text": " it.typeConstructor.let {\n TypeConstructorWithKind(\n it,\n KotlinClassKindTypes.CLASS\n )"
}
}
},
@@ -78525,44 +67281,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "079cea4fa71b6e90d63ac6ad9c592016dc6f82c63c185a276ba2c65750920d3d"
+ "equalIndicator/v1": "5d3591ab9d4de29b884fc87fc91f0b987d4b06185dd45034045827a5b3ed0b68"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: PsiElement",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: PsiElement"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/exceptionTag.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 8,
- "startColumn": 14,
- "charOffset": 260,
- "charLength": 10,
+ "startLine": 1038,
+ "startColumn": 53,
+ "charOffset": 51621,
+ "charLength": 2,
"snippet": {
- "text": "PsiElement"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 6,
+ "startLine": 1036,
"startColumn": 1,
- "charOffset": 205,
- "charLength": 259,
+ "charOffset": 51464,
+ "charLength": 286,
"snippet": {
- "text": "import com.intellij.psi.util.PsiTreeUtil\n\ninternal fun PsiElement.referenceElementOrSelf(): PsiElement? =\n if (node.elementType == JavaDocElementType.DOC_REFERENCE_HOLDER) {\n PsiTreeUtil.findChildOfType(this, PsiJavaCodeReferenceElement::class.java)"
+ "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\")"
}
}
},
@@ -78575,44 +67331,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "b58d959ca49141490f9d9af01f876fee62e6689eb008e284fbcefd3476502538"
+ "equalIndicator/v1": "e0c385fb24fbd8daa06a19912e5bc95f1a527e0695d8dc90d3b0b95f380f2223"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: PsiElement",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: PsiElement"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/exceptionTag.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 8,
- "startColumn": 51,
- "charOffset": 297,
- "charLength": 10,
+ "startLine": 1046,
+ "startColumn": 39,
+ "charOffset": 51973,
+ "charLength": 2,
"snippet": {
- "text": "PsiElement"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 6,
+ "startLine": 1044,
"startColumn": 1,
- "charOffset": 205,
- "charLength": 259,
+ "charOffset": 51809,
+ "charLength": 213,
"snippet": {
- "text": "import com.intellij.psi.util.PsiTreeUtil\n\ninternal fun PsiElement.referenceElementOrSelf(): PsiElement? =\n if (node.elementType == JavaDocElementType.DOC_REFERENCE_HOLDER) {\n PsiTreeUtil.findChildOfType(this, PsiJavaCodeReferenceElement::class.java)"
+ "text": " kdocLocation = toSourceElement.containingFile.name?.let {\n val fqName = fqNameOrNull()?.asString()\n if (fqName != null) \"$it/$fqName\"\n else it\n }"
}
}
},
@@ -78625,44 +67381,44 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "581d1c43e8cb170faba2ce567ca103eb12d821350b87359afceb99a83255fe6a"
+ "equalIndicator/v1": "1ed2506b5f68c31f08c78d7e4277928fdd6286e1a77388ac2db19234502e5894"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "NestedLambdaShadowedImplicitParameter",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: intellij",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: intellij"
+ "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
+ "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/exceptionTag.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 3,
- "startColumn": 12,
- "charOffset": 69,
- "charLength": 8,
+ "startLine": 1047,
+ "startColumn": 22,
+ "charOffset": 52006,
+ "charLength": 2,
"snippet": {
- "text": "intellij"
+ "text": "it"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 1,
+ "startLine": 1045,
"startColumn": 1,
- "charOffset": 0,
- "charLength": 204,
+ "charOffset": 51879,
+ "charLength": 153,
"snippet": {
- "text": "package org.jetbrains.dokka.base.translators.psi.parsers\n\nimport com.intellij.psi.PsiElement\nimport com.intellij.psi.PsiJavaCodeReferenceElement\nimport com.intellij.psi.impl.source.tree.JavaDocElementType"
+ "text": " val fqName = fqNameOrNull()?.asString()\n if (fqName != null) \"$it/$fqName\"\n else it\n }\n )"
}
}
},
@@ -78675,996 +67431,994 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "4b787e7d4952dfc96d09f4b0029d57119b8ce8d861f681891e423e95617227f1"
+ "equalIndicator/v1": "b0e541d707a8052cdc2237dbda8a44806736f0e67631731b749c307d217d84d8"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "PropertyName",
"kind": "fail",
- "level": "error",
+ "level": "note",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: intellij",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: intellij"
+ "text": "Property name 'dokka_version' should not contain underscores",
+ "markdown": "Property name `dokka_version` should not contain underscores"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/psi/parsers/exceptionTag.kt",
+ "uri": "build.gradle.kts",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 4,
- "startColumn": 12,
- "charOffset": 104,
- "charLength": 8,
+ "startLine": 11,
+ "startColumn": 5,
+ "charOffset": 236,
+ "charLength": 13,
"snippet": {
- "text": "intellij"
+ "text": "dokka_version"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 2,
+ "startLine": 9,
"startColumn": 1,
- "charOffset": 57,
- "charLength": 188,
+ "charOffset": 229,
+ "charLength": 54,
"snippet": {
- "text": "\nimport com.intellij.psi.PsiElement\nimport com.intellij.psi.PsiJavaCodeReferenceElement\nimport com.intellij.psi.impl.source.tree.JavaDocElementType\nimport com.intellij.psi.util.PsiTreeUtil"
+ "text": "}\n\nval dokka_version: String by project\n\nallprojects {"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "1120658a1f1186f787eb206b772451090601f482373eb7b0fc78ea26efef8b8f"
+ "equalIndicator/v1": "bae7af824c4a6a55d42805405087c3230d4aab1c307661cf3e4c43b0b26466a9"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "KotlinUnusedImport",
"kind": "fail",
- "level": "error",
+ "level": "warning",
"message": {
- "text": "[DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE] 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": "\\[DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE\\] 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"
+ "text": "Unused import directive",
+ "markdown": "Unused import directive"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
+ "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsOrdering.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 150,
- "startColumn": 44,
- "charOffset": 5831,
- "charLength": 4,
+ "startLine": 6,
+ "startColumn": 1,
+ "charOffset": 207,
+ "charLength": 47,
"snippet": {
- "text": "lazy"
+ "text": "import org.jetbrains.dokka.versioning.VersionId"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 148,
+ "startLine": 4,
"startColumn": 1,
- "charOffset": 5781,
- "charLength": 133,
+ "charOffset": 102,
+ "charLength": 269,
"snippet": {
- "text": " }\n\n protected val jsStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Any::class.java, \"/kotlin/jquery\")\n }"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.test-api.main",
+ "fullyQualifiedName": "dokka.plugins.versioning.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "61d4d8a2492ca7f83e23b11abe721bec3fe67e431efdcc7d22868339997aa8de"
+ "equalIndicator/v1": "e1962c2c6fc6817262f4be8ac314cc1faf275c8765074f429f418326f35dc3ea"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "KotlinUnusedImport",
"kind": "fail",
- "level": "error",
+ "level": "warning",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: PathManager",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: PathManager"
+ "text": "Unused import directive",
+ "markdown": "Unused import directive"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
+ "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsOrdering.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 151,
- "startColumn": 9,
- "charOffset": 5846,
- "charLength": 11,
+ "startLine": 7,
+ "startColumn": 1,
+ "charOffset": 255,
+ "charLength": 61,
"snippet": {
- "text": "PathManager"
+ "text": "import org.jetbrains.dokka.versioning.VersioningConfiguration"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 149,
+ "startLine": 5,
"startColumn": 1,
- "charOffset": 5787,
- "charLength": 128,
+ "charOffset": 154,
+ "charLength": 218,
"snippet": {
- "text": "\n protected val jsStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Any::class.java, \"/kotlin/jquery\")\n }\n"
+ "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.core.test-api.main",
+ "fullyQualifiedName": "dokka.plugins.versioning.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "dec7c830b9d9c5dc2f6c8c4cc1584efe5d6356e8b70deb69ced8f9a73f8bf858"
+ "equalIndicator/v1": "ec9b1fddca2e25c11c693bbb529ccb3ab74173657fa0f8d7743545b94db4c44b"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "KotlinUnusedImport",
"kind": "fail",
- "level": "error",
+ "level": "warning",
"message": {
- "text": "[DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE] 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": "\\[DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE\\] 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"
+ "text": "Unused import directive",
+ "markdown": "Unused import directive"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
+ "uri": "plugins/versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsOrdering.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 146,
- "startColumn": 45,
- "charOffset": 5686,
- "charLength": 4,
+ "startLine": 8,
+ "startColumn": 1,
+ "charOffset": 317,
+ "charLength": 54,
"snippet": {
- "text": "lazy"
+ "text": "import org.jetbrains.dokka.versioning.VersioningPlugin"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 144,
+ "startLine": 6,
"startColumn": 1,
- "charOffset": 5640,
- "charLength": 146,
+ "charOffset": 207,
+ "charLength": 198,
"snippet": {
- "text": "\n\n protected val jvmStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Strictfp::class.java, \"/kotlin/jvm/Strictfp.class\")\n }"
+ "text": "import org.jetbrains.dokka.versioning.VersionId\nimport org.jetbrains.dokka.versioning.VersioningConfiguration\nimport org.jetbrains.dokka.versioning.VersioningPlugin\n\nfun interface VersionsOrdering {"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.test-api.main",
+ "fullyQualifiedName": "dokka.plugins.versioning.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "1482f1eb4fc7e3a8e1def2952d7489717aa11164656e51a82b9e97b3f5c5c826"
+ "equalIndicator/v1": "3e40f0c648b9d58cd09142ce2ece4c8038ead67d334812136be456473868dab9"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WARNING"
}
},
{
- "ruleId": "KotlinAnnotator",
+ "ruleId": "KotlinUnusedImport",
"kind": "fail",
- "level": "error",
+ "level": "warning",
"message": {
- "text": "[UNRESOLVED_REFERENCE] Unresolved reference: PathManager",
- "markdown": "\\[UNRESOLVED_REFERENCE\\] Unresolved reference: PathManager"
+ "text": "Unused import directive",
+ "markdown": "Unused import directive"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt",
+ "uri": "plugins/all-modules-page/src/main/kotlin/ExternalModuleLinkResolver.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 147,
- "startColumn": 9,
- "charOffset": 5701,
- "charLength": 11,
+ "startLine": 8,
+ "startColumn": 1,
+ "charOffset": 376,
+ "charLength": 69,
"snippet": {
- "text": "PathManager"
+ "text": "import org.jetbrains.dokka.base.resolvers.shared.RecognizedLinkFormat"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 145,
+ "startLine": 6,
"startColumn": 1,
- "charOffset": 5641,
- "charLength": 146,
+ "charOffset": 226,
+ "charLength": 308,
"snippet": {
- "text": "\n protected val jvmStdlibPath: String? by lazy {\n PathManager.getResourceRoot(Strictfp::class.java, \"/kotlin/jvm/Strictfp.class\")\n }\n"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.test-api.main",
+ "fullyQualifiedName": "dokka.plugins.all-modules-page.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "2d3beb05bdf2f308606d659b662509b421048077ed5638ba62a47351c660c4f0"
+ "equalIndicator/v1": "3ec9d828b88cdb9430d5e4f2c3c425a30a6b4939852396d658212407299891e8"
},
"properties": {
- "ideaSeverity": "ERROR"
+ "ideaSeverity": "WARNING"
}
- }
- ],
- "qodana.promo.results": [
+ },
{
- "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "ruleId": "KotlinUnusedImport",
"kind": "fail",
- "level": "note",
+ "level": "warning",
"message": {
- "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
- "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ "text": "Unused import directive",
+ "markdown": "Unused import directive"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt",
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaCommonKlibLibraryInfo.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 14,
- "startColumn": 37,
- "charOffset": 397,
- "charLength": 2,
+ "startLine": 10,
+ "startColumn": 1,
+ "charOffset": 380,
+ "charLength": 51,
"snippet": {
- "text": "it"
+ "text": "import org.jetbrains.kotlin.platform.js.JsPlatforms"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 12,
+ "startLine": 8,
"startColumn": 1,
- "charOffset": 319,
- "charLength": 167,
+ "charOffset": 275,
+ "charLength": 227,
"snippet": {
- "text": " val options = it.subList(1, it.size)\n\n val deprecated = options.find { it.endsWith(\"skipDeprecated\") }?.startsWith(\"+\")\n ?: DokkaDefaults.skipDeprecated\n"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.main",
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "217d7f7ac8fda60dd6f83712b917da9c66fe51649b367a0a031ab69e845cbf60"
+ "equalIndicator/v1": "21bd4817cda0ed0d58def26905999e1b441826e0cd5bff85c550aa0170d1bccf"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "WARNING"
}
},
{
- "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "ruleId": "KotlinUnusedImport",
"kind": "fail",
- "level": "note",
+ "level": "warning",
"message": {
- "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
- "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ "text": "Unused import directive",
+ "markdown": "Unused import directive"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt",
+ "uri": "plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 17,
- "startColumn": 45,
- "charOffset": 531,
- "charLength": 2,
+ "startLine": 19,
+ "startColumn": 1,
+ "charOffset": 870,
+ "charLength": 79,
"snippet": {
- "text": "it"
+ "text": "import org.jetbrains.dokka.base.translators.psi.parsers.JavaDocumentationParser"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 15,
+ "startLine": 17,
"startColumn": 1,
- "charOffset": 446,
- "charLength": 182,
+ "charOffset": 787,
+ "charLength": 308,
"snippet": {
- "text": " ?: DokkaDefaults.skipDeprecated\n\n val reportUndocumented = options.find { it.endsWith(\"reportUndocumented\") }?.startsWith(\"+\")\n ?: DokkaDefaults.reportUndocumented\n"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.main",
+ "fullyQualifiedName": "dokka.plugins.base.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "1b25e0857e6516898b1cf2e693d32d2f77a09cd24419fb7eb0bcaba69678e65d"
+ "equalIndicator/v1": "9f3e93872bb4b0c6e92fb7d5ebfebae57fa7c39097f0e0f281155866df217f85"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "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": "core/src/main/kotlin/DokkaBootstrapImpl.kt",
+ "uri": "plugins/gfm/build.gradle.kts",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 20,
- "startColumn": 37,
- "charOffset": 665,
- "charLength": 2,
+ "startLine": 7,
+ "startColumn": 9,
+ "charOffset": 237,
+ "charLength": 15,
"snippet": {
- "text": "it"
+ "text": "jackson_version"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 18,
+ "startLine": 5,
"startColumn": 1,
- "charOffset": 584,
- "charLength": 174,
+ "charOffset": 115,
+ "charLength": 298,
"snippet": {
- "text": " ?: DokkaDefaults.reportUndocumented\n\n val privateApi = options.find { it.endsWith(\"includeNonPublic\") }?.startsWith(\"+\")\n ?: DokkaDefaults.includeNonPublic\n"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.main",
+ "fullyQualifiedName": "dokka.plugins.gfm",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "a914fd12c020ad484624684d97eda0c108c9503053e9919f0ab0a5c873df0419"
+ "equalIndicator/v1": "752d02ca3e22cb754c1a5f800a8a30b304339e658e7ca1a67b443efeb39e3ff7"
},
"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": "core/src/main/kotlin/DokkaBootstrapImpl.kt",
+ "uri": "plugins/gfm/build.gradle.kts",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 23,
- "startColumn": 35,
- "charOffset": 793,
- "charLength": 2,
+ "startLine": 9,
+ "startColumn": 9,
+ "charOffset": 370,
+ "charLength": 24,
"snippet": {
- "text": "it"
+ "text": "jackson_databind_version"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 21,
+ "startLine": 7,
"startColumn": 1,
- "charOffset": 716,
- "charLength": 154,
+ "charOffset": 229,
+ "charLength": 300,
"snippet": {
- "text": " ?: DokkaDefaults.includeNonPublic\n\n val suppress = options.find { it.endsWith(\"suppress\") }?.startsWith(\"+\")\n ?: DokkaDefaults.suppress\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.core.main",
+ "fullyQualifiedName": "dokka.plugins.gfm",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "6604cb933854bebcff32a3e4f7e191056f56da5075646cf1cf1afb6dca673a72"
+ "equalIndicator/v1": "2171da3a2a6be1dee5331d7a0b25c380bb59a3c4cc8592afff5be67e66721bc8"
},
"properties": {
"ideaSeverity": "WEAK WARNING"
}
},
{
- "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "ruleId": "KDocUnresolvedReference",
"kind": "fail",
- "level": "note",
+ "level": "warning",
"message": {
- "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
- "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ "text": "Cannot resolve symbol 'NativeResolverForModuleFactory'",
+ "markdown": "Cannot resolve symbol 'NativeResolverForModuleFactory'"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt",
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaNativeResolverForModuleFactory.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 27,
- "startColumn": 19,
- "charOffset": 930,
- "charLength": 2,
+ "startLine": 22,
+ "startColumn": 23,
+ "charOffset": 1208,
+ "charLength": 30,
"snippet": {
- "text": "it"
+ "text": "NativeResolverForModuleFactory"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 25,
+ "startLine": 20,
"startColumn": 1,
- "charOffset": 870,
- "charLength": 263,
+ "charOffset": 1097,
+ "charLength": 272,
"snippet": {
- "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()"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.main",
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "0c866c2d05c71e97493c258cf83bcd48b701f2659af6678d1d3c0be896fabd4f"
+ "equalIndicator/v1": "7f0a92d536cc49fdf8959543883c796af470414436a8c09eb7adfde4e860e05e"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "WARNING"
}
},
{
- "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
"level": "note",
"message": {
- "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
- "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ "text": "Property 'moduleVersion' could be private",
+ "markdown": "Property 'moduleVersion' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/src/main/kotlin/DokkaBootstrapImpl.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
"startLine": 28,
- "startColumn": 57,
- "charOffset": 1097,
- "charLength": 2,
+ "startColumn": 9,
+ "charOffset": 925,
+ "charLength": 13,
"snippet": {
- "text": "it"
+ "text": "moduleVersion"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
"startLine": 26,
"startColumn": 1,
- "charOffset": 871,
- "charLength": 320,
+ "charOffset": 881,
+ "charLength": 152,
"snippet": {
- "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 }"
+ "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.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "ccb8483e8f64de6e959023a64bc2d9422e926ace1325a563bb8d7deac3bef5e7"
+ "equalIndicator/v1": "2ed12efd77110917144fd0245c27866f9ab5e10adb3dea1fcf5cffc7e255c01b"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
"level": "note",
"message": {
- "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
- "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ "text": "Property 'cacheRoot' could be private",
+ "markdown": "Property 'cacheRoot' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/renderers/html/htmlPreprocessors.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 34,
- "startColumn": 85,
- "charOffset": 1533,
- "charLength": 2,
+ "startLine": 32,
+ "startColumn": 9,
+ "charOffset": 1079,
+ "charLength": 9,
"snippet": {
- "text": "it"
+ "text": "cacheRoot"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 32,
+ "startLine": 30,
"startColumn": 1,
- "charOffset": 1325,
- "charLength": 314,
+ "charOffset": 1002,
+ "charLength": 239,
"snippet": {
- "text": " children.filterIsInstance<ContentPage>().map { visit(it) }\n documentables.any { it is DEnum } ->\n children.filter { it is WithDocumentables && it.documentables.any { it is DEnumEntry } }\n .map { visit(it as ContentPage) }\n else -> emptyList()"
+ "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.plugins.base.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "dcbdea89dcde8f990f7c9b31aa04c84551994ca90eaefb8fcbf74e6d619f641e"
+ "equalIndicator/v1": "ddd69de23e0a12f93a856afda6ac0a1c86c29dbe81c2b9600920ade66708e545"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "NestedLambdaShadowedImplicitParameter",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
"level": "note",
"message": {
- "text": "Implicit parameter 'it' of enclosing lambda is shadowed",
- "markdown": "Implicit parameter 'it' of enclosing lambda is shadowed"
+ "text": "Property 'jdkVersion' could be private",
+ "markdown": "Property 'jdkVersion' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/documentables/InheritorsExtractorTransformer.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 66,
- "startColumn": 56,
- "charOffset": 3700,
- "charLength": 2,
+ "startLine": 98,
+ "startColumn": 9,
+ "charOffset": 4120,
+ "charLength": 10,
"snippet": {
- "text": "it"
+ "text": "jdkVersion"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 64,
+ "startLine": 96,
"startColumn": 1,
- "charOffset": 3542,
- "charLength": 212,
+ "charOffset": 4027,
+ "charLength": 190,
"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": " var skipEmptyPackages: Boolean = false,\n var skipDeprecated: Boolean = false,\n var jdkVersion: Int = 8,\n var languageVersion: String? = null,\n var apiVersion: String? = null,"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "fe1edc7fd589ade3e56a5e4cebab8106779d0784747cc0ef6e0f558673855113"
+ "equalIndicator/v1": "7ce57899855adba4e0fea797a53303a0c2e1b430e001209a34e1dd8aa37c47ce"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "KotlinUnusedImport",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
- "level": "warning",
+ "level": "note",
"message": {
- "text": "Unused import directive",
- "markdown": "Unused import directive"
+ "text": "Property 'apiVersion' could be private",
+ "markdown": "Property 'apiVersion' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/src/main/kotlin/links/DRI.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 3,
- "startColumn": 1,
- "charOffset": 35,
- "charLength": 50,
+ "startLine": 100,
+ "startColumn": 9,
+ "charOffset": 4190,
+ "charLength": 10,
"snippet": {
- "text": "import com.fasterxml.jackson.annotation.JsonIgnore"
+ "text": "apiVersion"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 1,
+ "startLine": 98,
"startColumn": 1,
- "charOffset": 0,
- "charLength": 200,
+ "charOffset": 4112,
+ "charLength": 180,
"snippet": {
- "text": "package org.jetbrains.dokka.links\n\nimport com.fasterxml.jackson.annotation.JsonIgnore\nimport com.fasterxml.jackson.annotation.JsonTypeInfo\nimport com.fasterxml.jackson.annotation.JsonTypeInfo.Id.CLASS"
+ "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,"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "1fd8d01ba7877ef0f71eea651e293db30f58e695245eff5ef40d649c022b974b"
+ "equalIndicator/v1": "66f7cc7964dfa6780451eb24b6ea0defe96cbbb95fbd37c9af701ec9314791d5"
},
"properties": {
- "ideaSeverity": "WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "KotlinUnusedImport",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
- "level": "warning",
+ "level": "note",
"message": {
- "text": "Unused import directive",
- "markdown": "Unused import directive"
+ "text": "Property 'noStdlibLink' could be private",
+ "markdown": "Property 'noStdlibLink' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 15,
- "startColumn": 1,
- "charOffset": 618,
- "charLength": 49,
+ "startLine": 101,
+ "startColumn": 9,
+ "charOffset": 4226,
+ "charLength": 12,
"snippet": {
- "text": "import org.jetbrains.kotlin.descriptors.ClassKind"
+ "text": "noStdlibLink"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 13,
+ "startLine": 99,
"startColumn": 1,
- "charOffset": 527,
- "charLength": 219,
+ "charOffset": 4141,
+ "charLength": 204,
"snippet": {
- "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"
+ "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(),"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.javadoc.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "0871cc46731ba6fc4a9e0243d0b73a35fb1f4b61ccc81700daf9ed3de47105ab"
+ "equalIndicator/v1": "6c00be28afea4d5e04d1bf9b4ea8af8fbb4092857b7baa3507b1ac52bd6ccb93"
},
"properties": {
- "ideaSeverity": "WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "PropertyName",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
"level": "note",
"message": {
- "text": "Property name 'dokka_version' should not contain underscores",
- "markdown": "Property name `dokka_version` should not contain underscores"
+ "text": "Property 'noJdkLink' could be private",
+ "markdown": "Property 'noJdkLink' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "integration-tests/cli/build.gradle.kts",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 8,
- "startColumn": 5,
- "charOffset": 127,
- "charLength": 13,
+ "startLine": 102,
+ "startColumn": 9,
+ "charOffset": 4265,
+ "charLength": 9,
"snippet": {
- "text": "dokka_version"
+ "text": "noJdkLink"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 6,
+ "startLine": 100,
"startColumn": 1,
- "charOffset": 120,
- "charLength": 112,
+ "charOffset": 4182,
+ "charLength": 205,
"snippet": {
- "text": "}\n\nval dokka_version: String by project\nevaluationDependsOn(\":runners:cli\")\nevaluationDependsOn(\":plugins:base\")"
+ "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\","
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.integration-tests.cli",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "ebcd3c7d0f4f87636e4deb8e35c8c8e2bc866a39bf758ca42e5a7e22c7a2785b"
+ "equalIndicator/v1": "09eda6d6b00aba160809a0ff2e562988f221b51e8d389b0d8ca1f0f30a6bf686"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "LocalVariableName",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
"level": "note",
"message": {
- "text": "Local variable name 'coroutines_version' should not contain underscores",
- "markdown": "Local variable name `coroutines_version` should not contain underscores"
+ "text": "Property 'pluginsClasspath' could be private",
+ "markdown": "Property 'pluginsClasspath' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/gfm/gfm-template-processing/build.gradle.kts",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 9,
+ "startLine": 33,
"startColumn": 9,
- "charOffset": 276,
- "charLength": 18,
+ "charOffset": 1113,
+ "charLength": 16,
"snippet": {
- "text": "coroutines_version"
+ "text": "pluginsClasspath"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 7,
+ "startLine": 31,
"startColumn": 1,
- "charOffset": 216,
- "charLength": 187,
+ "charOffset": 1034,
+ "charLength": 246,
"snippet": {
- "text": " implementation(project(\":plugins:templating\"))\n\n val coroutines_version: String by project\n implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version\")\n}"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.gfm.gfm-template-processing",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "bcc6bdd4e78cf56d36fa26cc6d03ad362aec4dbbfd6dc10b94c221b48cb60a10"
+ "equalIndicator/v1": "e9c21222bb635ed09b222914e17350ebab2b73c96b5ddb5423b67960cb04ba26"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "LocalVariableName",
+ "ruleId": "MemberVisibilityCanBePrivate",
"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": "Property 'offlineMode' could be private",
+ "markdown": "Property 'offlineMode' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "runners/gradle-plugin/build.gradle.kts",
+ "uri": "core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 16,
+ "startLine": 31,
"startColumn": 9,
- "charOffset": 254,
- "charLength": 15,
+ "charOffset": 1042,
+ "charLength": 11,
"snippet": {
- "text": "jackson_version"
+ "text": "offlineMode"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 14,
+ "startLine": 29,
"startColumn": 1,
- "charOffset": 219,
- "charLength": 213,
+ "charOffset": 964,
+ "charLength": 191,
"snippet": {
- "text": " api(project(\":core\"))\n\n val jackson_version: String by project\n compileOnly(\"com.fasterxml.jackson.core:jackson-annotations:$jackson_version\")\n compileOnly(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")"
+ "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()"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.runners.gradle-plugin",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "38a9e3b1ed27a27df402beade1af08e04c636073f63495bb7b93623b9d2b66f9"
+ "equalIndicator/v1": "99f9567b8d592931345980dfc78f5a4c2c789e471d38fa46247ad945598df7da"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "LocalVariableName",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
"level": "note",
"message": {
- "text": "Local variable name 'kotlin_version' should not contain underscores",
- "markdown": "Local variable name `kotlin_version` should not contain underscores"
+ "text": "Property 'packagesIndex' could be private",
+ "markdown": "Property 'packagesIndex' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "runners/gradle-plugin/build.gradle.kts",
+ "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 37,
- "startColumn": 13,
- "charOffset": 1112,
- "charLength": 14,
+ "startLine": 41,
+ "startColumn": 5,
+ "charOffset": 2103,
+ "charLength": 9,
"snippet": {
- "text": "kotlin_version"
+ "text": "protected"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 35,
+ "startLine": 39,
"startColumn": 1,
- "charOffset": 1081,
- "charLength": 217,
+ "charOffset": 2084,
+ "charLength": 187,
"snippet": {
- "text": "\n constraints {\n val kotlin_version: String by project\n compileOnly(\"org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}\") {\n because(\"kotlin-gradle-plugin and :core both depend on this\")"
+ "text": " }\n\n protected val packagesIndex: Map<String, ExternalLocationProvider?> =\n externalLocationProviders\n .flatMap { (extDocInfo, externalLocationProvider) ->"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.runners.gradle-plugin",
+ "fullyQualifiedName": "dokka.plugins.base.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "556c8e2463241abcfcb6039f9bec1981f86beb42415088f6f6d418faf28f5dda"
+ "equalIndicator/v1": "35ccae1c0db8fe872340fd4d69de459cb76af564d6e3b09c23e7dcf3e08f079d"
},
"properties": {
- "ideaSeverity": "WEAK WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "RedundantNullableReturnType",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
- "level": "warning",
+ "level": "note",
"message": {
- "text": "'lineNumber' always returns non-null type",
- "markdown": "'lineNumber' always returns non-null type"
+ "text": "Property 'locationsIndex' could be private",
+ "markdown": "Property 'locationsIndex' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt",
+ "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 136,
- "startColumn": 45,
- "charOffset": 5481,
- "charLength": 1,
+ "startLine": 53,
+ "startColumn": 5,
+ "charOffset": 2674,
+ "charLength": 9,
"snippet": {
- "text": "?"
+ "text": "protected"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 134,
+ "startLine": 51,
"startColumn": 1,
- "charOffset": 5426,
- "charLength": 222,
+ "charOffset": 2668,
+ "charLength": 278,
"snippet": {
- "text": " }\n\n private fun PsiElement.lineNumber(): Int? {\n val doc = PsiDocumentManager.getInstance(project).getDocument(containingFile)\n // IJ uses 0-based line-numbers; external source browsers use 1-based"
+ "text": "\n\n protected val locationsIndex: Map<String, ExternalLocationProvider?> = externalLocationProviders\n .flatMap { (extDocInfo, externalLocationProvider) ->\n extDocInfo.packageList.locations.keys.map { relocatedDri -> relocatedDri to externalLocationProvider }"
}
}
},
@@ -79677,60 +68431,60 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "a74e902f98778223d0e027dbada5a0b1e677000df3ad2fb410c36a95d5172baf"
+ "equalIndicator/v1": "be8220e6f554fe43bc4d34091701e0f616c05a912546c2c8f95c877e0db42778"
},
"properties": {
- "ideaSeverity": "WARNING"
+ "ideaSeverity": "INFO"
}
},
{
- "ruleId": "KDocUnresolvedReference",
+ "ruleId": "MemberVisibilityCanBePrivate",
"kind": "fail",
- "level": "warning",
+ "level": "note",
"message": {
- "text": "Cannot resolve symbol 'RejectedExecutionException'",
- "markdown": "Cannot resolve symbol 'RejectedExecutionException'"
+ "text": "Property 'externalLocationProviders' could be private",
+ "markdown": "Property 'externalLocationProviders' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "core/src/main/kotlin/configuration.kt",
+ "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 143,
- "startColumn": 40,
- "charOffset": 5197,
- "charLength": 26,
+ "startLine": 25,
+ "startColumn": 5,
+ "charOffset": 1223,
+ "charLength": 9,
"snippet": {
- "text": "RejectedExecutionException"
+ "text": "protected"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 141,
+ "startLine": 23,
"startColumn": 1,
- "charOffset": 5025,
- "charLength": 279,
+ "charOffset": 1135,
+ "charLength": 248,
"snippet": {
- "text": " * It effectively stops all background threads associated with\n * coroutines in order to make classes unloadable by the JVM,\n * and rejects all new tasks with [RejectedExecutionException]\n *\n * This is primarily useful for multi-module builds where coroutines"
+ "text": " dokkaContext.plugin<DokkaBase>().query { externalLocationProviderFactory }\n\n protected val externalLocationProviders: Map<ExternalDocumentation, ExternalLocationProvider?> = dokkaContext\n .configuration\n .sourceSets"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.core.main",
+ "fullyQualifiedName": "dokka.plugins.base.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "622e50a5cb9f8a193e5e2817b9c3916a2e914be052d9709ac2696d2448390afd"
+ "equalIndicator/v1": "9d0aeadc4f1b5cfe0817539e034a3707bca3fd8935806098076b18b278c26f9a"
},
"properties": {
- "ideaSeverity": "WARNING"
+ "ideaSeverity": "INFO"
}
},
{
@@ -79738,33 +68492,33 @@
"kind": "fail",
"level": "note",
"message": {
- "text": "Function 'runPostActions' could be private",
- "markdown": "Function 'runPostActions' could be private"
+ "text": "Property 'externalLocationProviderFactories' could be private",
+ "markdown": "Property 'externalLocationProviderFactories' could be private"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/generation/SingleModuleGeneration.kt",
+ "uri": "plugins/base/src/main/kotlin/resolvers/local/DefaultLocationProvider.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 82,
- "startColumn": 9,
- "charOffset": 3425,
- "charLength": 14,
+ "startLine": 22,
+ "startColumn": 5,
+ "charOffset": 1085,
+ "charLength": 9,
"snippet": {
- "text": "runPostActions"
+ "text": "protected"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 80,
+ "startLine": 20,
"startColumn": 1,
- "charOffset": 3410,
- "charLength": 100,
+ "charOffset": 1013,
+ "charLength": 205,
"snippet": {
- "text": " }\n\n fun runPostActions() {\n context[CoreExtensions.postActions].forEach { it() }\n }"
+ "text": " protected val dokkaContext: DokkaContext\n) : LocationProvider {\n protected val externalLocationProviderFactories =\n dokkaContext.plugin<DokkaBase>().query { externalLocationProviderFactory }\n"
}
}
},
@@ -79777,7 +68531,7 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "0cb7ccfc388b287822a97033c5f27f798d6728a7d9901c9a26befa78370db644"
+ "equalIndicator/v1": "ba570312ff5b8f9d7288a668786acb8a083505cf3e796a9d6c33a94ae8280df5"
},
"properties": {
"ideaSeverity": "INFO"
@@ -79795,13 +68549,13 @@
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/test/kotlin/DRITranslationTest.kt",
+ "uri": "plugins/kotlin-as-java/src/test/kotlin/JvmFieldTest.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 11,
+ "startLine": 14,
"startColumn": 9,
- "charOffset": 318,
+ "charOffset": 455,
"charLength": 13,
"snippet": {
"text": "configuration"
@@ -79809,12 +68563,12 @@
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 9,
+ "startLine": 12,
"startColumn": 1,
- "charOffset": 261,
- "charLength": 138,
+ "charOffset": 404,
+ "charLength": 132,
"snippet": {
- "text": "\nclass DRITranslationTest : BaseAbstractTest() {\n val configuration = dokkaConfiguration {\n sourceSets {\n sourceSet {"
+ "text": "\nclass JvmFieldTest : BaseAbstractTest() {\n val configuration = dokkaConfiguration {\n sourceSets {\n sourceSet {"
}
}
},
@@ -79827,57 +68581,107 @@
}
],
"partialFingerprints": {
- "equalIndicator/v1": "0c523caaf231199bf45a34fea77eeb8e8f9acd6594b436a0160d8691bad5247c"
+ "equalIndicator/v1": "40e0237c5d903a0ee7a5a92d974d972a511f20fc44495e9df0bb59a4b9d9a41d"
},
"properties": {
"ideaSeverity": "INFO"
}
},
{
+ "ruleId": "IncompleteDestructuring",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "Incomplete destructuring declaration",
+ "markdown": "Incomplete destructuring declaration"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/resolve/DokkaCommonResolverForModuleFactory.kt",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 104,
+ "startColumn": 25,
+ "charOffset": 5105,
+ "charLength": 31,
+ "snippet": {
+ "text": "(header, packageFragmentProtos)"
+ },
+ "sourceLanguage": "kotlin"
+ },
+ "contextRegion": {
+ "startLine": 102,
+ "startColumn": 1,
+ "charOffset": 4992,
+ "charLength": 322,
+ "snippet": {
+ "text": " .filter { it.version.isCompatible() }\n .map { metadata ->\n val (header, packageFragmentProtos) =\n KotlinJavascriptSerializationUtil.readModuleAsProto(metadata.body, metadata.version)\n createKotlinJavascriptPackageFragmentProvider("
+ }
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v1": "6f211874efd1486d4f952d3cfc4c8b6324ec79ef65bacd6ad7b22f47b32df917"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING"
+ }
+ },
+ {
"ruleId": "UnusedSymbol",
"kind": "fail",
"level": "warning",
"message": {
- "text": "Property \"scope\" is never used",
- "markdown": "Property \"scope\" is never used"
+ "text": "Function \"relativeTo\" is never used",
+ "markdown": "Function \"relativeTo\" is never used"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/base/src/main/kotlin/translators/descriptors/DefaultExternalDocumentablesProvider.kt",
+ "uri": "core/src/main/kotlin/utilities/Uri.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 36,
- "startColumn": 39,
- "charOffset": 1737,
- "charLength": 5,
+ "startLine": 6,
+ "startColumn": 9,
+ "charOffset": 69,
+ "charLength": 10,
"snippet": {
- "text": "scope"
+ "text": "relativeTo"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 34,
+ "startLine": 4,
"startColumn": 1,
- "charOffset": 1692,
- "charLength": 145,
+ "charOffset": 59,
+ "charLength": 119,
"snippet": {
- "text": " }\n\n private val DeclarationDescriptor.scope: MemberScope\n get() = when (this) {\n is PackageViewDescriptor -> memberScope"
+ "text": "\n\nfun URI.relativeTo(uri: URI): URI {\n // Normalize paths to remove . and .. segments\n val base = uri.normalize()"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.base.main",
+ "fullyQualifiedName": "dokka.core.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "70adaa42fb6b84e16bc4f42ed3f56b8a5133aec92dd2d7ab99cba3d8688baf07"
+ "equalIndicator/v1": "2e18575adb917ecdf8945e8f4be11571f8ef0899f27c1d84178abdc51a217721"
},
"properties": {
"ideaSeverity": "WARNING"
@@ -79888,46 +68692,46 @@
"kind": "fail",
"level": "warning",
"message": {
- "text": "Property \"jekyllLocationProvider\" is never used",
- "markdown": "Property \"jekyllLocationProvider\" is never used"
+ "text": "Property \"infoMessages\" is never used",
+ "markdown": "Property \"infoMessages\" is never used"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/jekyll/jekyll-template-processing/src/main/kotlin/org/jetbrains/dokka/gfm/templateProcessing/JekyllTemplateProcessingPlugin.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 19,
+ "startLine": 13,
"startColumn": 9,
- "charOffset": 758,
- "charLength": 22,
+ "charOffset": 469,
+ "charLength": 12,
"snippet": {
- "text": "jekyllLocationProvider"
+ "text": "infoMessages"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 17,
+ "startLine": 11,
"startColumn": 1,
- "charOffset": 691,
- "charLength": 253,
+ "charOffset": 404,
+ "charLength": 183,
"snippet": {
- "text": " private val dokkaBase by lazy { plugin<DokkaBase>() }\n\n val jekyllLocationProvider by extending {\n dokkaBase.locationProviderFactory providing MultimoduleLocationProvider::Factory override listOf(\n jekyllPlugin.locationProvider,"
+ "text": "\n private var _infoMessages = mutableListOf<String>()\n val infoMessages: List<String> get() = _infoMessages.toList()\n\n private var _progressMessages = mutableListOf<String>()"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.jekyll.jekyll-template-processing.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "d33652994fa020d3fbf642ff466ce619099509009eb639f19c5549f030b6c959"
+ "equalIndicator/v1": "923f622560b8ab2e5183def7c724f89f84260826df8e241f35ec445e48a88f05"
},
"properties": {
"ideaSeverity": "WARNING"
@@ -79938,46 +68742,46 @@
"kind": "fail",
"level": "warning",
"message": {
- "text": "Property \"jekyllPartialLocationProvider\" is never used",
- "markdown": "Property \"jekyllPartialLocationProvider\" is never used"
+ "text": "Property \"debugMessages\" is never used",
+ "markdown": "Property \"debugMessages\" is never used"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/jekyll/jekyll-template-processing/src/main/kotlin/org/jetbrains/dokka/gfm/templateProcessing/JekyllTemplateProcessingPlugin.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 26,
+ "startLine": 10,
"startColumn": 9,
- "charOffset": 1022,
- "charLength": 29,
+ "charOffset": 344,
+ "charLength": 13,
"snippet": {
- "text": "jekyllPartialLocationProvider"
+ "text": "debugMessages"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 24,
+ "startLine": 8,
"startColumn": 1,
- "charOffset": 1007,
- "charLength": 239,
+ "charOffset": 278,
+ "charLength": 182,
"snippet": {
- "text": " }\n\n val jekyllPartialLocationProvider by extending {\n allModulesPagePlugin.partialLocationProviderFactory providing ::DokkaLocationProviderFactory override listOf(\n allModulesPagePlugin.baseLocationProviderFactory,"
+ "text": "\n private var _debugMessages = mutableListOf<String>()\n val debugMessages: List<String> get() = _debugMessages.toList()\n\n private var _infoMessages = mutableListOf<String>()"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.jekyll.jekyll-template-processing.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "89bec8e3d5b4942b2e96ac4690237ecb0ef297c76742271217bfd9f32bc2a516"
+ "equalIndicator/v1": "4284139e36354ab80f9238676b0fa507fe2164c073890d7cc4be7c0696aa2245"
},
"properties": {
"ideaSeverity": "WARNING"
@@ -79988,46 +68792,46 @@
"kind": "fail",
"level": "warning",
"message": {
- "text": "Function \"jvmNameAnnotation\" is never used",
- "markdown": "Function \"jvmNameAnnotation\" is never used"
+ "text": "Property \"errorMessages\" is never used",
+ "markdown": "Property \"errorMessages\" is never used"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/jvmName.kt",
+ "uri": "core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 16,
- "startColumn": 43,
- "charOffset": 840,
- "charLength": 17,
+ "startLine": 22,
+ "startColumn": 9,
+ "charOffset": 851,
+ "charLength": 13,
"snippet": {
- "text": "jvmNameAnnotation"
+ "text": "errorMessages"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 14,
+ "startLine": 20,
"startColumn": 1,
- "charOffset": 667,
- "charLength": 255,
+ "charOffset": 785,
+ "charLength": 168,
"snippet": {
- "text": " extra[Annotations]?.fileLevelAnnotations?.entries?.firstNotNullResult { (_, annotations) -> annotations.jvmNameAnnotation() }\n\ninternal fun List<Annotations.Annotation>.jvmNameAnnotation(): Annotations.Annotation? =\n firstOrNull { it.isJvmName() }\n"
+ "text": "\n private var _errorMessages = mutableListOf<String>()\n val errorMessages: List<String> get() = _errorMessages.toList()\n\n override fun debug(message: String) {"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
+ "fullyQualifiedName": "dokka.core.test-api.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "7e20b105943ba92e31572144ceddb1d2f59bd8b9c764df52bddc36f0d785b483"
+ "equalIndicator/v1": "fc9ca4e611a28748095ebdf51d713aa298556a5da832a52ea23856ebcff48df8"
},
"properties": {
"ideaSeverity": "WARNING"
@@ -80038,46 +68842,46 @@
"kind": "fail",
"level": "warning",
"message": {
- "text": "Function \"toDRI\" is never used",
- "markdown": "Function \"toDRI\" is never used"
+ "text": "Property \"suppressedByHideTagDocumentableFilter\" is never used",
+ "markdown": "Property \"suppressedByHideTagDocumentableFilter\" is never used"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt",
+ "uri": "plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 417,
- "startColumn": 22,
- "charOffset": 16096,
- "charLength": 5,
+ "startLine": 10,
+ "startColumn": 9,
+ "charOffset": 323,
+ "charLength": 37,
"snippet": {
- "text": "toDRI"
+ "text": "suppressedByHideTagDocumentableFilter"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 415,
+ "startLine": 8,
"startColumn": 1,
- "charOffset": 16008,
- "charLength": 191,
+ "charOffset": 256,
+ "charLength": 261,
"snippet": {
- "text": " JavaToKotlinClassMap.mapKotlinToJava(FqName(this).toUnsafe())\n\ninternal fun ClassId.toDRI(dri: DRI?): DRI = DRI(\n packageName = packageFqName.asString(),\n classNames = classNames(),"
+ "text": " private val dokkaBase by lazy { plugin<DokkaBase>() }\n\n val suppressedByHideTagDocumentableFilter by extending {\n dokkaBase.preMergeDocumentableTransformer providing ::HideTagDocumentableFilter order { before(dokkaBase.emptyPackagesFilter) }\n }"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
+ "fullyQualifiedName": "dokka.plugins.android-documentation.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "c5e27d84768a19f23e95e347107bcc10fd2eaad595d5fb36e5efdf83fd2385b9"
+ "equalIndicator/v1": "7c45cf2c79658466e7e29400819dbb3f3b946e31b5f1039c2eeede902453a83a"
},
"properties": {
"ideaSeverity": "WARNING"
@@ -80088,46 +68892,46 @@
"kind": "fail",
"level": "warning",
"message": {
- "text": "Function \"getAsPrimitive\" is never used",
- "markdown": "Function \"getAsPrimitive\" is never used"
+ "text": "Class \"KotlinCliJavaFileManagerImpl\" is never used",
+ "markdown": "Class \"KotlinCliJavaFileManagerImpl\" is never used"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
- "uri": "plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt",
+ "uri": "kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/KotlinCliJavaFileManagerImpl.kt",
"uriBaseId": "SRCROOT"
},
"region": {
- "startLine": 403,
- "startColumn": 21,
- "charOffset": 15397,
- "charLength": 14,
+ "startLine": 48,
+ "startColumn": 7,
+ "charOffset": 2288,
+ "charLength": 28,
"snippet": {
- "text": "getAsPrimitive"
+ "text": "KotlinCliJavaFileManagerImpl"
},
"sourceLanguage": "kotlin"
},
"contextRegion": {
- "startLine": 401,
+ "startLine": 46,
"startColumn": 1,
- "charOffset": 15344,
- "charLength": 229,
+ "charOffset": 2102,
+ "charLength": 444,
"snippet": {
- "text": " else JavaVisibility.Private\n\ninternal fun String.getAsPrimitive(): JvmPrimitiveType? = org.jetbrains.kotlin.builtins.PrimitiveType.values()\n .find { it.typeFqName.asString() == this }\n ?.let { JvmPrimitiveType.get(it) }"
+ "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"
}
}
},
"logicalLocations": [
{
- "fullyQualifiedName": "dokka.plugins.kotlin-as-java.main",
+ "fullyQualifiedName": "dokka.kotlin-analysis.main",
"kind": "module"
}
]
}
],
"partialFingerprints": {
- "equalIndicator/v1": "c45a19367d576cd32619deaf15eb420c26597420263f1234fdaa5df034d78e56"
+ "equalIndicator/v1": "dd97a0bac4528b6b1a12c082f9b4e90f1e564ea184bfd7806b7fb603c23576e8"
},
"properties": {
"ideaSeverity": "WARNING"