1
0
Fork 0
IntelliJ-IdeaVim/qodana.sarif.json

83659 lines
4.9 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"$schema": "https://raw.githubusercontent.com/schemastore/schemastore/master/src/schemas/json/sarif-2.1.0-rtm.5.json",
"version": "2.1.0",
"runs": [
{
"tool": {
"driver": {
"name": "QDJVM",
"fullName": "Qodana for JVM",
"version": "223.8787.119",
"rules": [],
"taxa": [
{
"id": "Language injection",
"name": "Language injection"
},
{
"id": "Kotlin",
"name": "Kotlin"
},
{
"id": "Kotlin/Style issues",
"name": "Style issues",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "JVM languages",
"name": "JVM languages"
},
{
"id": "Kotlin/Redundant constructs",
"name": "Redundant constructs",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java",
"name": "Java"
},
{
"id": "Java/Internationalization",
"name": "Internationalization",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Performance",
"name": "Performance",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring",
"name": "Spring"
},
{
"id": "Spring/Spring Core",
"name": "Spring Core",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring Core/XML",
"name": "XML",
"relationships": [
{
"target": {
"id": "Spring/Spring Core",
"index": 9,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Code style issues",
"name": "Code style issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Declaration redundancy",
"name": "Declaration redundancy",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Error handling",
"name": "Error handling",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring Core/Code",
"name": "Code",
"relationships": [
{
"target": {
"id": "Spring/Spring Core",
"index": 9,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Kotlin/Migration",
"name": "Migration",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Probable bugs",
"name": "Probable bugs",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring Cloud",
"name": "Spring Cloud",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Class structure",
"name": "Class structure",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Serialization issues",
"name": "Serialization issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy",
"name": "Groovy"
},
{
"id": "Groovy/GPath",
"name": "GPath",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Imports",
"name": "Imports",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Maven",
"name": "Maven"
},
{
"id": "MySQL",
"name": "MySQL"
},
{
"id": "Kotlin/Probable bugs",
"name": "Probable bugs",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Threading issues",
"name": "Threading issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Numeric issues",
"name": "Numeric issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Control flow issues",
"name": "Control flow issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "JPA",
"name": "JPA"
},
{
"id": "Java/Initialization",
"name": "Initialization",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "HTML",
"name": "HTML"
},
{
"id": "Java/Security",
"name": "Security",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Properties files",
"name": "Properties files"
},
{
"id": "Java/Java language level migration aids",
"name": "Java language level migration aids",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Probable bugs",
"name": "Probable bugs",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Naming conventions",
"name": "Naming conventions",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Packaging issues",
"name": "Packaging issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Reactive Streams",
"name": "Reactive Streams"
},
{
"id": "Reactive Streams/Common",
"name": "Common",
"relationships": [
{
"target": {
"id": "Reactive Streams",
"index": 38,
"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": "General",
"name": "General"
},
{
"id": "Gradle",
"name": "Gradle"
},
{
"id": "Gradle/Probable bugs",
"name": "Probable bugs",
"relationships": [
{
"target": {
"id": "Gradle",
"index": 42,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "FreeMarker",
"name": "FreeMarker"
},
{
"id": "EditorConfig",
"name": "EditorConfig"
},
{
"id": "Gradle/Validity issues",
"name": "Validity issues",
"relationships": [
{
"target": {
"id": "Gradle",
"index": 42,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Code maturity",
"name": "Code maturity",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "SQL",
"name": "SQL"
},
{
"id": "Spring/Spring Data",
"name": "Spring Data",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Probable bugs",
"name": "Probable bugs",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Kotlin/Other problems",
"name": "Other problems",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Data flow",
"name": "Data flow",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "CDI (Contexts and Dependency Injection)",
"name": "CDI (Contexts and Dependency Injection)"
},
{
"id": "Velocity",
"name": "Velocity"
},
{
"id": "Kotlin/Naming conventions",
"name": "Naming conventions",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "CSS",
"name": "CSS"
},
{
"id": "CSS/Invalid elements",
"name": "Invalid elements",
"relationships": [
{
"target": {
"id": "CSS",
"index": 56,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Finalization",
"name": "Finalization",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Logging",
"name": "Logging",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Modularization issues",
"name": "Modularization issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Javadoc",
"name": "Javadoc",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Kotlin/Java interop issues",
"name": "Java interop issues",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Naming conventions",
"name": "Naming conventions",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Naming conventions/Class",
"name": "Class",
"relationships": [
{
"target": {
"id": "Java/Naming conventions",
"index": 63,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Hibernate",
"name": "Hibernate"
},
{
"id": "Spring/Spring Integration",
"name": "Spring Integration",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Plugin DevKit",
"name": "Plugin DevKit"
},
{
"id": "Plugin DevKit/Plugin descriptor",
"name": "Plugin descriptor",
"relationships": [
{
"target": {
"id": "Plugin DevKit",
"index": 67,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Abstraction issues",
"name": "Abstraction issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Assignment issues",
"name": "Assignment issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 9",
"name": "Java 9",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Threading issues",
"name": "Threading issues",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Control flow issues",
"name": "Control flow issues",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/JUnit",
"name": "JUnit",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring Core/Setup",
"name": "Setup",
"relationships": [
{
"target": {
"id": "Spring/Spring Core",
"index": 9,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "XSLT",
"name": "XSLT"
},
{
"id": "Groovy/Style",
"name": "Style",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java EE",
"name": "Java EE"
},
{
"id": "Java/Portability",
"name": "Portability",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/TestNG",
"name": "TestNG",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Plugin DevKit/Code",
"name": "Code",
"relationships": [
{
"target": {
"id": "Plugin DevKit",
"index": 67,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "JSP",
"name": "JSP"
},
{
"id": "Java/Visibility",
"name": "Visibility",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Concurrency annotation issues",
"name": "Concurrency annotation issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "CSS/Probable bugs",
"name": "Probable bugs",
"relationships": [
{
"target": {
"id": "CSS",
"index": 56,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Lombok",
"name": "Lombok",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Lombok/Redundant modifiers",
"name": "Redundant modifiers",
"relationships": [
{
"target": {
"id": "Java/Lombok",
"index": 86,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "RegExp",
"name": "RegExp"
},
{
"id": "UI form",
"name": "UI form"
},
{
"id": "Java/Naming conventions/Method",
"name": "Method",
"relationships": [
{
"target": {
"id": "Java/Naming conventions",
"index": 63,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Annotations",
"name": "Annotations",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Proofreading",
"name": "Proofreading"
},
{
"id": "XML",
"name": "XML"
},
{
"id": "Java/Cloning issues",
"name": "Cloning issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Manifest",
"name": "Manifest"
},
{
"id": "Groovy/Potentially confusing code constructs",
"name": "Potentially confusing code constructs",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Ant",
"name": "Ant"
},
{
"id": "Groovy/Error handling",
"name": "Error handling",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 5",
"name": "Java 5",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 8",
"name": "Java 8",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Assignment issues",
"name": "Assignment issues",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Class metrics",
"name": "Class metrics",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "RESTful Web Service (JAX-RS)",
"name": "RESTful Web Service (JAX-RS)"
},
{
"id": "Java/Encapsulation",
"name": "Encapsulation",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "JVM languages/Test frameworks",
"name": "Test frameworks",
"relationships": [
{
"target": {
"id": "JVM languages",
"index": 3,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Test frameworks",
"name": "Test frameworks",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Reflective access",
"name": "Reflective access",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 15",
"name": "Java 15",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring AOP",
"name": "Spring AOP",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Method metrics",
"name": "Method metrics",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Resource management",
"name": "Resource management",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 14",
"name": "Java 14",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Numeric issues/Cast",
"name": "Cast",
"relationships": [
{
"target": {
"id": "Java/Numeric issues",
"index": 27,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Plugin DevKit/Description file",
"name": "Description file",
"relationships": [
{
"target": {
"id": "Plugin DevKit",
"index": 67,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/JavaBeans issues",
"name": "JavaBeans issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Pattern validation",
"name": "Pattern validation"
},
{
"id": "JSON and JSON5",
"name": "JSON and JSON5"
},
{
"id": "Java/Dependency issues",
"name": "Dependency issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level issues",
"name": "Java language level issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "HTML/Accessibility",
"name": "Accessibility",
"relationships": [
{
"target": {
"id": "HTML",
"index": 31,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Method metrics",
"name": "Method metrics",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "XPath",
"name": "XPath"
},
{
"id": "Java/Inheritance issues",
"name": "Inheritance issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "AOP",
"name": "AOP"
},
{
"id": "Bean Validation",
"name": "Bean Validation"
},
{
"id": "Oracle",
"name": "Oracle"
},
{
"id": "Kotlin/Migration/Maven",
"name": "Maven",
"relationships": [
{
"target": {
"id": "Kotlin/Migration",
"index": 15,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Internationalization",
"name": "Internationalization"
},
{
"id": "Java/Java language level migration aids/Java 10",
"name": "Java 10",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 7",
"name": "Java 7",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Compiler issues",
"name": "Compiler issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Version control",
"name": "Version control"
},
{
"id": "MongoJS",
"name": "MongoJS"
},
{
"id": "Kotlin/Migration/Gradle",
"name": "Gradle",
"relationships": [
{
"target": {
"id": "Kotlin/Migration",
"index": 15,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Memory",
"name": "Memory",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Reactive Streams/Reactor",
"name": "Reactor",
"relationships": [
{
"target": {
"id": "Reactive Streams",
"index": 38,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Code style issues",
"name": "Code style issues",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Structural search",
"name": "Structural search"
},
{
"id": "Spring/Spring Security",
"name": "Spring Security",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Performance/Embedded",
"name": "Embedded",
"relationships": [
{
"target": {
"id": "Java/Performance",
"index": 7,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Probable bugs/Nullability problems",
"name": "Nullability problems",
"relationships": [
{
"target": {
"id": "Java/Probable bugs",
"index": 16,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring Boot",
"name": "Spring Boot",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "RELAX NG",
"name": "RELAX NG"
},
{
"id": "Java/Properties files",
"name": "Properties files",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring Cloud Stream",
"name": "Spring Cloud Stream",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Java language level migration aids/Java 11",
"name": "Java 11",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "PostgreSQL",
"name": "PostgreSQL"
},
{
"id": "SQL server",
"name": "SQL server"
},
{
"id": "Groovy/Data flow",
"name": "Data flow",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "YAML",
"name": "YAML"
},
{
"id": "Dependency analysis",
"name": "Dependency analysis"
},
{
"id": "EL",
"name": "EL"
},
{
"id": "Java/Java language level migration aids/Java 16",
"name": "Java 16",
"relationships": [
{
"target": {
"id": "Java/Java language level migration aids",
"index": 34,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Shell script",
"name": "Shell script"
},
{
"id": "Java/Lombok/Redundant definitions",
"name": "Redundant definitions",
"relationships": [
{
"target": {
"id": "Java/Lombok",
"index": 86,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Spring/Spring MVC",
"name": "Spring MVC",
"relationships": [
{
"target": {
"id": "Spring",
"index": 8,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "CSS/Code style issues",
"name": "Code style issues",
"relationships": [
{
"target": {
"id": "CSS",
"index": 56,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Plugin DevKit/Workspace model",
"name": "Workspace model",
"relationships": [
{
"target": {
"id": "Plugin DevKit",
"index": 67,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Other",
"name": "Other",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Reactive Streams/Mutiny",
"name": "Mutiny",
"relationships": [
{
"target": {
"id": "Reactive Streams",
"index": 38,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/Bitwise operation issues",
"name": "Bitwise operation issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Validity issues",
"name": "Validity issues",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Kotlin/Logging",
"name": "Logging",
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Java/toString() issues",
"name": "toString() issues",
"relationships": [
{
"target": {
"id": "Java",
"index": 5,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Gradle/Best practises",
"name": "Best practises",
"relationships": [
{
"target": {
"id": "Gradle",
"index": 42,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "Groovy/Declaration redundancy",
"name": "Declaration redundancy",
"relationships": [
{
"target": {
"id": "Groovy",
"index": 20,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
}
],
"language": "en-US",
"contents": [
"localizedData",
"nonLocalizedData"
],
"isComprehensive": false
},
"extensions": [
{
"name": "org.intellij.intelliLang",
"version": "223.8787",
"rules": [
{
"id": "InjectionNotApplicable",
"shortDescription": {
"text": "Injection Annotation not applicable"
},
"fullDescription": {
"text": "Reports when a '@Language' annotation is applied to an element with a type other than 'String' or 'String[]'. Example: '@Language(\"HTML\") int i;' After the quick-fix is applied: 'int i;'",
"markdown": "Reports when a `@Language` annotation is applied to an element with a type other than `String` or `String[]`.\n\n**Example:**\n\n\n @Language(\"HTML\") int i;\n\nAfter the quick-fix is applied:\n\n\n int i;\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "error",
"parameters": {
"ideaSeverity": "ERROR"
}
},
"relationships": [
{
"target": {
"id": "Language injection",
"index": 0,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "PatternOverriddenByNonAnnotatedMethod",
"shortDescription": {
"text": "Non-annotated Method overrides @Pattern Method"
},
"fullDescription": {
"text": "Reports when a method without any '@Pattern' annotation overrides a '@Pattern' annotated method. This does not prevent error-highlighting inside the editor, however the overriding method will not be checked at runtime. A quick fix is provided to add a '@Pattern' annotation that matches the one from the superclass method. This ensures the runtime-check instrumentation works correctly. Example: 'abstract class Parent {\n abstract @Pattern(\"\\\\d\\\\d-\\\\d\\\\d\\\\d\") String getId();\n }\n class Child extends Parent {\n @Override String getId() { // warning here\n return \"12-345\";\n }\n }'",
"markdown": "Reports when a method without any `@Pattern` annotation overrides a `@Pattern` annotated method. This does not prevent error-highlighting inside the editor, however the overriding method will not be checked at runtime.\n\n\nA quick fix is provided to add a `@Pattern` annotation that matches the one from the superclass method. This ensures the\nruntime-check instrumentation works correctly.\n\n**Example:**\n\n\n abstract class Parent {\n abstract @Pattern(\"\\\\d\\\\d-\\\\d\\\\d\\\\d\") String getId();\n }\n class Child extends Parent {\n @Override String getId() { // warning here\n return \"12-345\";\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Pattern validation",
"index": 116,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "InjectedReferences",
"shortDescription": {
"text": "Injected references"
},
"fullDescription": {
"text": "Reports unresolved references injected by Language Injections. Example: @Language(\"file-reference\")\n String fileName = \"/home/user/nonexistent.file\"; // highlighted if file doesn't exist",
"markdown": "Reports unresolved references injected by [Language Injections](https://www.jetbrains.com/help/idea/using-language-injections.html).\n\nExample:\n\n```\n @Language(\"file-reference\")\n String fileName = \"/home/user/nonexistent.file\"; // highlighted if file doesn't exist\n```"
},
"defaultConfiguration": {
"enabled": true,
"level": "error",
"parameters": {
"ideaSeverity": "ERROR"
}
},
"relationships": [
{
"target": {
"id": "General",
"index": 41,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "PatternNotApplicable",
"shortDescription": {
"text": "Pattern Annotation not applicable"
},
"fullDescription": {
"text": "Reports when a '@Pattern' annotation is applied to an element with a type other than 'String'. Example: '@Pattern(\"\\\\d\\\\d\") int i;'",
"markdown": "Reports when a `@Pattern` annotation is applied to an element with a type other than `String`.\n\n**Example:**\n\n\n @Pattern(\"\\\\d\\\\d\") int i;\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "error",
"parameters": {
"ideaSeverity": "ERROR"
}
},
"relationships": [
{
"target": {
"id": "Pattern validation",
"index": 116,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "UnknownLanguage",
"shortDescription": {
"text": "Unknown Language ID"
},
"fullDescription": {
"text": "Reports when the ID of the language used in a '@Language' annotation is unknown. Example: '@Language(\"HMTL\") String html;'",
"markdown": "Reports when the ID of the language used in a `@Language` annotation is unknown.\n\n**Example:**\n\n\n @Language(\"HMTL\") String html;\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "error",
"parameters": {
"ideaSeverity": "ERROR"
}
},
"relationships": [
{
"target": {
"id": "Language injection",
"index": 0,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "PatternValidation",
"shortDescription": {
"text": "Validate annotated patterns"
},
"fullDescription": {
"text": "Reports expressions passed as arguments for '@Pattern' parameters and returned from '@Pattern'-annotated methods that do not match the specified pattern. Example: '@Pattern(\"\\\\d\\\\d-\\\\d\\\\d\\\\d\") String getId() {\n return \"1\";\n }'",
"markdown": "Reports expressions passed as arguments for `@Pattern` parameters and returned from `@Pattern`-annotated methods that do not match the specified pattern.\n\n**Example:**\n\n\n @Pattern(\"\\\\d\\\\d-\\\\d\\\\d\\\\d\") String getId() {\n return \"1\";\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Pattern validation",
"index": 116,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "LanguageMismatch",
"shortDescription": {
"text": "Language mismatch"
},
"fullDescription": {
"text": "Reports when the language of a reference does not match the expected language of the usage context. Example: '@Language(\"JavaScript\")\n String JS_CODE = \"var x;\";\n\n @Language(\"XPath\")\n String XPATH_CODE = JS_CODE; // warning here'",
"markdown": "Reports when the language of a reference does not match the expected language of the usage context.\n\nExample:\n\n\n @Language(\"JavaScript\")\n String JS_CODE = \"var x;\";\n\n @Language(\"XPath\")\n String XPATH_CODE = JS_CODE; // warning here\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Language injection",
"index": 0,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
}
],
"language": "en-US",
"contents": [
"localizedData",
"nonLocalizedData"
],
"isComprehensive": false
},
{
"name": "org.jetbrains.kotlin",
"version": "223-1.8.0-release-345-IJ8787",
"rules": [
{
"id": "RedundantRunCatching",
"shortDescription": {
"text": "Redundant 'runCatching' call"
},
"fullDescription": {
"text": "Reports 'runCatching' calls that are immediately followed by 'getOrThrow'. Such calls can be replaced with just 'run'. Example: 'fun foo() = runCatching { doSomething() }.getOrThrow()' After the quick-fix is applied: 'fun foo() = run { doSomething() }'",
"markdown": "Reports `runCatching` calls that are immediately followed by `getOrThrow`. Such calls can be replaced with just `run`.\n\n**Example:**\n\n\n fun foo() = runCatching { doSomething() }.getOrThrow()\n\nAfter the quick-fix is applied:\n\n\n fun foo() = run { doSomething() }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Style issues",
"index": 2,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "SimpleRedundantLet",
"shortDescription": {
"text": "Redundant receiver-based 'let' call"
},
"fullDescription": {
"text": "Reports redundant receiver-based 'let' calls. The quick-fix removes the redundant 'let' call. Example: 'fun test(s: String?): Int? = s?.let { it.length }' After the quick-fix is applied: 'fun test(s: String?): Int? = s?.length'",
"markdown": "Reports redundant receiver-based `let` calls.\n\nThe quick-fix removes the redundant `let` call.\n\n**Example:**\n\n\n fun test(s: String?): Int? = s?.let { it.length }\n\nAfter the quick-fix is applied:\n\n\n fun test(s: String?): Int? = s?.length\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Redundant constructs",
"index": 4,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "RemoveSingleExpressionStringTemplate",
"shortDescription": {
"text": "Redundant string template"
},
"fullDescription": {
"text": "Reports single-expression string templates that can be safely removed. Example: 'val x = \"Hello\"\n val y = \"$x\"' After the quick-fix is applied: 'val x = \"Hello\"\n val y = x // <== Updated'",
"markdown": "Reports single-expression string templates that can be safely removed.\n\n**Example:**\n\n val x = \"Hello\"\n val y = \"$x\"\n\nAfter the quick-fix is applied:\n\n val x = \"Hello\"\n val y = x // <== Updated\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Redundant constructs",
"index": 4,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"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"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Migration",
"index": 15,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "IncompleteDestructuring",
"shortDescription": {
"text": "Incomplete destructuring declaration"
},
"fullDescription": {
"text": "Reports incomplete destructuring declaration. Example: 'data class Person(val name: String, val age: Int)\n val person = Person(\"\", 0)\n val (name) = person' The quick fix completes destructuring declaration with new variables: 'data class Person(val name: String, val age: Int)\n val person = Person(\"\", 0)\n val (name, age) = person'",
"markdown": "Reports incomplete destructuring declaration.\n\n**Example:**\n\n\n data class Person(val name: String, val age: Int)\n val person = Person(\"\", 0)\n val (name) = person\n\nThe quick fix completes destructuring declaration with new variables:\n\n\n data class Person(val name: String, val age: Int)\n val person = Person(\"\", 0)\n val (name, age) = person\n"
},
"defaultConfiguration": {
"enabled": false,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Probable bugs",
"index": 25,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "ScopeFunctionConversion",
"shortDescription": {
"text": "Scope function can be converted to another one"
},
"fullDescription": {
"text": "Reports scope functions ('let', 'run', 'apply', 'also') that can be converted between each other. Using corresponding functions makes your code simpler. The quick-fix replaces the scope function to another one. Example: 'val x = \"\".let {\n it.length\n }' After the quick-fix is applied: 'val x = \"\".run {\n length\n }'",
"markdown": "Reports scope functions (`let`, `run`, `apply`, `also`) that can be converted between each other.\n\nUsing corresponding functions makes your code simpler.\n\nThe quick-fix replaces the scope function to another one.\n\n**Example:**\n\n\n val x = \"\".let {\n it.length\n }\n\nAfter the quick-fix is applied:\n\n\n val x = \"\".run {\n length\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "INFORMATION"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Style issues",
"index": 2,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "TrailingComma",
"shortDescription": {
"text": "Trailing comma recommendations"
},
"fullDescription": {
"text": "Reports trailing commas that do not follow the recommended style guide.",
"markdown": "Reports trailing commas that do not follow the recommended [style guide](https://kotlinlang.org/docs/coding-conventions.html#trailing-commas)."
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Style issues",
"index": 2,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "FoldInitializerAndIfToElvis",
"shortDescription": {
"text": "If-Null return/break/... foldable to '?:'"
},
"fullDescription": {
"text": "Reports an 'if' expression that checks variable being null or not right after initializing it that can be converted into an elvis operator in the initializer. Example: 'fun test(foo: Int?, bar: Int): Int {\n var i = foo\n if (i == null) {\n return bar\n }\n return i\n }' The quick-fix converts the 'if' expression with an initializer into an elvis expression: 'fun test(foo: Int?, bar: Int): Int {\n var i = foo ?: return bar\n return i\n }'",
"markdown": "Reports an `if` expression that checks variable being null or not right after initializing it that can be converted into an elvis operator in the initializer.\n\n**Example:**\n\n\n fun test(foo: Int?, bar: Int): Int {\n var i = foo\n if (i == null) {\n return bar\n }\n return i\n }\n\nThe quick-fix converts the `if` expression with an initializer into an elvis expression:\n\n\n fun test(foo: Int?, bar: Int): Int {\n var i = foo ?: return bar\n return i\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Style issues",
"index": 2,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "ReplaceWithStringBuilderAppendRange",
"shortDescription": {
"text": "'StringBuilder.append(CharArray, offset, len)' call on the JVM"
},
"fullDescription": {
"text": "Reports a 'StringBuilder.append(CharArray, offset, len)' function call on the JVM platform that should be replaced with a 'StringBuilder.appendRange(CharArray, startIndex, endIndex)' function call. The 'append' function behaves differently on the JVM, JS and Native platforms, so using the 'appendRange' function is recommended. Example: 'fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n append(charArray, offset, len)\n }\n }' After the quick-fix is applied: 'fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n appendRange(charArray, offset, offset + len)\n }\n }'",
"markdown": "Reports a `StringBuilder.append(CharArray, offset, len)` function call on the JVM platform that should be replaced with a `StringBuilder.appendRange(CharArray, startIndex, endIndex)` function call.\n\nThe `append` function behaves differently on the JVM, JS and Native platforms, so using the `appendRange` function is recommended.\n\n**Example:**\n\n\n fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n append(charArray, offset, len)\n }\n }\n\nAfter the quick-fix is applied:\n\n\n fun f(charArray: CharArray, offset: Int, len: Int): String {\n return buildString {\n appendRange(charArray, offset, offset + len)\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Other problems",
"index": 51,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "KotlinInvalidBundleOrProperty",
"shortDescription": {
"text": "Invalid property key"
},
"fullDescription": {
"text": "Reports unresolved references to '.properties' file keys and resource bundles in Kotlin files.",
"markdown": "Reports unresolved references to `.properties` file keys and resource bundles in Kotlin files."
},
"defaultConfiguration": {
"enabled": true,
"level": "error",
"parameters": {
"ideaSeverity": "ERROR"
}
},
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "UselessCallOnCollection",
"shortDescription": {
"text": "Useless call on collection type"
},
"fullDescription": {
"text": "Reports 'filter…' calls from the standard library on already filtered collections. Several functions from the standard library such as 'filterNotNull()' or 'filterIsInstance' have sense only when they are called on receivers that have types distinct from the resulting one. Otherwise, such calls can be omitted as the result will be the same. Remove redundant call quick-fix can be used to amend the code automatically. Example: 'fun test(list: List<String>) {\n val x = list.filterNotNull() // quick-fix simplifies to 'list'\n val y = list.filterIsInstance<String>() // quick-fix simplifies to 'list'\n }'",
"markdown": "Reports `filter...` calls from the standard library on already filtered collections.\n\nSeveral functions from the standard library such as `filterNotNull()` or `filterIsInstance`\nhave sense only when they are called on receivers that have types distinct from the resulting one. Otherwise,\nsuch calls can be omitted as the result will be the same.\n\n**Remove redundant call** quick-fix can be used to amend the code automatically.\n\nExample:\n\n\n fun test(list: List<String>) {\n val x = list.filterNotNull() // quick-fix simplifies to 'list'\n val y = list.filterIsInstance<String>() // quick-fix simplifies to 'list'\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Probable bugs",
"index": 25,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "RedundantRequireNotNullCall",
"shortDescription": {
"text": "Redundant 'requireNotNull' or 'checkNotNull' call"
},
"fullDescription": {
"text": "Reports redundant 'requireNotNull' or 'checkNotNull' call on non-nullable expressions. Example: 'fun foo(i: Int) {\n requireNotNull(i) // This 'i' is always not null, so this 'requireNotNull' call is redundant.\n ...\n }' After the quick-fix is applied: 'fun foo(i: Int) {\n ...\n }'",
"markdown": "Reports redundant `requireNotNull` or `checkNotNull` call on non-nullable expressions.\n\n**Example:**\n\n\n fun foo(i: Int) {\n requireNotNull(i) // This 'i' is always not null, so this 'requireNotNull' call is redundant.\n ...\n }\n\nAfter the quick-fix is applied:\n\n\n fun foo(i: Int) {\n ...\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Redundant constructs",
"index": 4,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "ObjectPropertyName",
"shortDescription": {
"text": "Object property naming convention"
},
"fullDescription": {
"text": "Reports properties that do not follow the naming conventions. The following properties are reported: Top-level properties Properties in objects and companion objects You can specify the required pattern in the inspection options. Recommended naming conventions: it has to start with an uppercase letter, use camel case and no underscores. Example: '// top-level property\n val USER_NAME_FIELD = \"UserName\"\n // top-level property holding reference to singleton object\n val PersonComparator: Comparator<Person> = /*...*/\n\n class Person {\n companion object {\n // property in companion object\n val NO_NAME = Person()\n }\n }'",
"markdown": "Reports properties that do not follow the naming conventions.\n\nThe following properties are reported:\n\n* Top-level properties\n* Properties in objects and companion objects\n\nYou can specify the required pattern in the inspection options.\n\n[Recommended naming conventions](https://kotlinlang.org/docs/coding-conventions.html#naming-rules): it has to start with an uppercase letter, use camel case and no underscores.\n\n**Example:**\n\n\n // top-level property\n val USER_NAME_FIELD = \"UserName\"\n // top-level property holding reference to singleton object\n val PersonComparator: Comparator<Person> = /*...*/\n\n class Person {\n companion object {\n // property in companion object\n val NO_NAME = Person()\n }\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Naming conventions",
"index": 55,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "PackageDirectoryMismatch",
"shortDescription": {
"text": "Package name does not match containing directory"
},
"fullDescription": {
"text": "Reports 'package' directives that do not match the location of the file. When applying fixes, \"Move refactoring\" defaults are used to update usages of changed declarations, namely: \"Search in comments and strings\" \"Search for text occurrences\"",
"markdown": "Reports `package` directives that do not match the location of the file.\n\n\nWhen applying fixes, \"Move refactoring\" defaults are used to update usages of changed declarations, namely:\n\n* \"Search in comments and strings\"\n* \"Search for text occurrences\""
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Java interop issues",
"index": 62,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "KotlinCovariantEquals",
"shortDescription": {
"text": "Covariant 'equals()'"
},
"fullDescription": {
"text": "Reports 'equals()' that takes an argument type other than 'Any?' if the class does not have another 'equals()' that takes 'Any?' as its argument type. Example: 'class Foo {\n fun equals(other: Foo?): Boolean {\n return true\n }\n }' To fix the problem create 'equals()' method that takes an argument of type 'Any?'.",
"markdown": "Reports `equals()` that takes an argument type other than `Any?` if the class does not have another `equals()` that takes `Any?` as its argument type.\n\n**Example:**\n\n\n class Foo {\n fun equals(other: Foo?): Boolean {\n return true\n }\n }\n\nTo fix the problem create `equals()` method that takes an argument of type `Any?`."
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Probable bugs",
"index": 25,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "ReplaceSizeZeroCheckWithIsEmpty",
"shortDescription": {
"text": "Size zero check can be replaced with 'isEmpty()'"
},
"fullDescription": {
"text": "Reports 'size == 0' checks on 'Collections/Array/String' that should be replaced with 'isEmpty()'. Using 'isEmpty()' makes your code simpler. The quick-fix replaces the size check with 'isEmpty()'. Example: 'fun foo() {\n val arrayOf = arrayOf(1, 2, 3)\n arrayOf.size == 0\n }' After the quick-fix is applied: 'fun foo() {\n val arrayOf = arrayOf(1, 2, 3)\n arrayOf.isEmpty()\n }'",
"markdown": "Reports `size == 0` checks on `Collections/Array/String` that should be replaced with `isEmpty()`.\n\nUsing `isEmpty()` makes your code simpler.\n\nThe quick-fix replaces the size check with `isEmpty()`.\n\n**Example:**\n\n\n fun foo() {\n val arrayOf = arrayOf(1, 2, 3)\n arrayOf.size == 0\n }\n\nAfter the quick-fix is applied:\n\n\n fun foo() {\n val arrayOf = arrayOf(1, 2, 3)\n arrayOf.isEmpty()\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Style issues",
"index": 2,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"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"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Migration",
"index": 15,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "RedundantEnumConstructorInvocation",
"shortDescription": {
"text": "Redundant enum constructor invocation"
},
"fullDescription": {
"text": "Reports redundant constructor invocation on an enum entry. Example: 'enum class Baz(i: Int = 0) {\n A(1),\n B(),\n C(),\n }' After the quick-fix is applied: 'enum class Baz(i: Int = 0) {\n A(1),\n B,\n C,\n }'",
"markdown": "Reports redundant constructor invocation on an enum entry.\n\n**Example:**\n\n\n enum class Baz(i: Int = 0) {\n A(1),\n B(),\n C(),\n }\n\nAfter the quick-fix is applied:\n\n\n enum class Baz(i: Int = 0) {\n A(1),\n B,\n C,\n }\n"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Redundant constructs",
"index": 4,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "FakeJvmFieldConstant",
"shortDescription": {
"text": "Kotlin non-const property used as Java constant"
},
"fullDescription": {
"text": "Reports Kotlin properties that are not 'const' and used as Java annotation arguments. For example, a property with the '@JvmField' annotation has an initializer that can be evaluated at compile-time, and it has a primitive or 'String' type. Such properties have a 'ConstantValue' attribute in bytecode in Kotlin 1.1-1.2. This attribute allows javac to fold usages of the corresponding field and use that field in annotations. This can lead to incorrect behavior in the case of separate or incremental compilation in mixed Java/Kotlin code. This behavior is subject to change in Kotlin 1.3 (no 'ConstantValue' attribute any more). Example: Kotlin code in foo.kt file: 'annotation class Ann(val s: String)\n @JvmField val importantString = \"important\"' Java code: 'public class JavaUser {\n // This is dangerous\n @Ann(s = FooKt.importantString)\n public void foo() {}\n }' To fix the problem replace the '@JvmField' annotation with the 'const' modifier on a relevant Kotlin property or inline it.",
"markdown": "Reports Kotlin properties that are not `const` and used as Java annotation arguments.\n\n\nFor example, a property with the `@JvmField` annotation has an initializer that can be evaluated at compile-time,\nand it has a primitive or `String` type.\n\n\nSuch properties have a `ConstantValue` attribute in bytecode in Kotlin 1.1-1.2.\nThis attribute allows javac to fold usages of the corresponding field and use that field in annotations.\nThis can lead to incorrect behavior in the case of separate or incremental compilation in mixed Java/Kotlin code.\nThis behavior is subject to change in Kotlin 1.3 (no `ConstantValue` attribute any more).\n\n**Example:**\n\nKotlin code in foo.kt file:\n\n\n annotation class Ann(val s: String)\n @JvmField val importantString = \"important\"\n\nJava code:\n\n\n public class JavaUser {\n // This is dangerous\n @Ann(s = FooKt.importantString)\n public void foo() {}\n }\n\nTo fix the problem replace the `@JvmField` annotation with the `const` modifier on a relevant Kotlin property or inline it."
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Java interop issues",
"index": 62,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "WhenWithOnlyElse",
"shortDescription": {
"text": "'when' has only 'else' branch and can be simplified"
},
"fullDescription": {
"text": "Reports 'when' expressions with only an 'else' branch that can be simplified. Simplify expression quick-fix can be used to amend the code automatically. Example: 'fun redundant() {\n val x = when { // <== redundant, a quick-fix simplifies the when expression to \"val x = 1\"\n else -> 1\n }\n }'",
"markdown": "Reports `when` expressions with only an `else` branch that can be simplified.\n\n**Simplify expression** quick-fix can be used to amend the code automatically.\n\nExample:\n\n\n fun redundant() {\n val x = when { // <== redundant, a quick-fix simplifies the when expression to \"val x = 1\"\n else -> 1\n }\n }\n"
},
"defaultConfiguration": {
"enabled": false,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Redundant constructs",
"index": 4,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "KotlinTestJUnit",
"shortDescription": {
"text": "kotlin-test-junit could be used"
},
"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."
},
"defaultConfiguration": {
"enabled": true,
"level": "warning",
"parameters": {
"ideaSeverity": "WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin",
"index": 1,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "SafeCastWithReturn",
"shortDescription": {
"text": "Safe cast with 'return' should be replaced with 'if' type check"
},
"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"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters": {
"ideaSeverity": "WEAK WARNING"
}
},
"relationships": [
{
"target": {
"id": "Kotlin/Style issues",
"index": 2,
"toolComponent": {
"name": "QDJVM"
}
},
"kinds": [
"superset"
]
}
]
},
{
"id": "ReplaceAssertBooleanWithAssertEquality",
"shortDescription": {
"text": "Assert boolean could be replaced with assert equality"
},
"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"
},
"defaultConfiguration": {
"enabled": true,
"level": "note",
"parameters":