' tag.",
+ "markdown": "Reports a root tag name different from the name specified in the `` tag."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XmlWrongRootElement",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlUnknownAttribute",
+ "shortDescription": {
+ "text": "Unknown attribute"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown HTML attribute. Suggests configuring attributes that should not be reported.",
+ "markdown": "Reports an unknown HTML attribute. Suggests configuring attributes that should not be reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlUnknownAttribute",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpRedundantEscape",
+ "shortDescription": {
+ "text": "Redundant character escape"
+ },
+ "fullDescription": {
+ "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": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpRedundantEscape",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlExtraClosingTag",
+ "shortDescription": {
+ "text": "Redundant closing tag"
+ },
+ "fullDescription": {
+ "text": "Reports redundant closing tags on empty elements, for example, 'img' or 'br'. Example: '\n \n \n \n ' After the quick-fix is applied: '\n \n \n \n '",
+ "markdown": "Reports redundant closing tags on empty elements, for example, `img` or `br`.\n\n**Example:**\n\n\n \n \n \n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n \n \n \n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlExtraClosingTag",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlDuplicatedId",
+ "shortDescription": {
+ "text": "Duplicate 'id' attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a duplicate 'id' attribute in XML.",
+ "markdown": "Reports a duplicate `id` attribute in XML."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XmlDuplicatedId",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlUnboundNsPrefix",
+ "shortDescription": {
+ "text": "Unbound namespace prefix"
+ },
+ "fullDescription": {
+ "text": "Reports an unbound namespace prefix in XML.",
+ "markdown": "Reports an unbound namespace prefix in XML."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "XmlUnboundNsPrefix",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlPathReference",
+ "shortDescription": {
+ "text": "Unresolved file reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved file reference in XML.",
+ "markdown": "Reports an unresolved file reference in XML."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XmlPathReference",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LossyEncoding",
+ "shortDescription": {
+ "text": "Lossy encoding"
+ },
+ "fullDescription": {
+ "text": "Reports characters that cannot be displayed because of the current document encoding. Examples: If you type international characters in a document with the US-ASCII charset, some characters will be lost on save. If you load a UTF-8-encoded file using the ISO-8859-1 one-byte charset, some characters will be displayed incorrectly. You can fix this by changing the file encoding either by specifying the encoding directly in the file, e.g. by editing 'encoding=' attribute in the XML prolog of XML file, or by changing the corresponding options in Settings | Editor | File Encodings.",
+ "markdown": "Reports characters that cannot be displayed because of the current document encoding.\n\nExamples:\n\n* If you type international characters in a document with the **US-ASCII** charset, some characters will be lost on save.\n* If you load a **UTF-8** -encoded file using the **ISO-8859-1** one-byte charset, some characters will be displayed incorrectly.\n\nYou can fix this by changing the file encoding\neither by specifying the encoding directly in the file, e.g. by editing `encoding=` attribute in the XML prolog of XML file,\nor by changing the corresponding options in **Settings \\| Editor \\| File Encodings**."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LossyEncoding",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Internationalization",
+ "index": 124,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpRedundantNestedCharacterClass",
+ "shortDescription": {
+ "text": "Redundant nested character class"
+ },
+ "fullDescription": {
+ "text": "Reports unnecessary nested character classes. Example: '[a-c[x-z]]' After the quick-fix is applied: '[a-cx-z]' New in 2020.2",
+ "markdown": "Reports unnecessary nested character classes.\n\n**Example:**\n\n\n [a-c[x-z]]\n\nAfter the quick-fix is applied:\n\n\n [a-cx-z]\n\nNew in 2020.2"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpRedundantNestedCharacterClass",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpOctalEscape",
+ "shortDescription": {
+ "text": "Octal escape"
+ },
+ "fullDescription": {
+ "text": "Reports octal escapes, which are easily confused with back references. Use hexadecimal escapes to avoid confusion. Example: '\\07' After the quick-fix is applied: '\\x07' New in 2017.1",
+ "markdown": "Reports octal escapes, which are easily confused with back references. Use hexadecimal escapes to avoid confusion.\n\n**Example:**\n\n\n \\07\n\nAfter the quick-fix is applied:\n\n\n \\x07\n\nNew in 2017.1"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "RegExpOctalEscape",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnusedDefine",
+ "shortDescription": {
+ "text": "Unused define"
+ },
+ "fullDescription": {
+ "text": "Reports an unused named pattern ('define') in a RELAX-NG file (XML or Compact Syntax). 'define' elements that are used through an include in another file are ignored.",
+ "markdown": "Reports an unused named pattern (`define`) in a RELAX-NG file (XML or Compact Syntax). `define` elements that are used through an include in another file are ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnusedDefine",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RELAX NG",
+ "index": 136,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpDuplicateAlternationBranch",
+ "shortDescription": {
+ "text": "Duplicate branch in alternation"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1",
+ "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpDuplicateAlternationBranch",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RedundantSuppression",
+ "shortDescription": {
+ "text": "Redundant suppression"
+ },
+ "fullDescription": {
+ "text": "Reports usages of the following elements that can be safely removed because the inspection they affect is no longer applicable in this context: '@SuppressWarning' annotation, or '// noinspection' line comment, or '/** noinspection */' JavaDoc comment Example: 'public class C {\n // symbol is already private,\n // but annotation is still around\n @SuppressWarnings({\"WeakerAccess\"})\n private boolean CONST = true;\n void f() {\n CONST = false;\n }\n}'",
+ "markdown": "Reports usages of the following elements that can be safely removed because the inspection they affect is no longer applicable in this context:\n\n* `@SuppressWarning` annotation, or\n* `// noinspection` line comment, or\n* `/** noinspection */` JavaDoc comment\n\nExample:\n\n\n public class C {\n // symbol is already private,\n // but annotation is still around\n @SuppressWarnings({\"WeakerAccess\"})\n private boolean CONST = true;\n void f() {\n CONST = false;\n }\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RedundantSuppression",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CustomRegExpInspection",
+ "shortDescription": {
+ "text": "Custom RegExp inspection"
+ },
+ "fullDescription": {
+ "text": "Custom Regex Inspection",
+ "markdown": "Custom Regex Inspection"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CustomRegExpInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpUnexpectedAnchor",
+ "shortDescription": {
+ "text": "Begin or end anchor in unexpected position"
+ },
+ "fullDescription": {
+ "text": "Reports '^' or '\\A' anchors not at the beginning of the pattern and '$', '\\Z' or '\\z' anchors not at the end of the pattern. In the wrong position these RegExp anchors prevent the pattern from matching anything. In case of the '^' and '$' anchors, most likely the literal character was meant and the escape forgotten. Example: '(Price $10)' New in 2018.1",
+ "markdown": "Reports `^` or `\\A` anchors not at the beginning of the pattern and `$`, `\\Z` or `\\z` anchors not at the end of the pattern. In the wrong position these RegExp anchors prevent the pattern from matching anything. In case of the `^` and `$` anchors, most likely the literal character was meant and the escape forgotten.\n\n**Example:**\n\n\n (Price $10)\n\n\nNew in 2018.1"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpUnexpectedAnchor",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SpellCheckingInspection",
+ "shortDescription": {
+ "text": "Typo"
+ },
+ "fullDescription": {
+ "text": "Reports typos and misspellings in your code, comments, and literals and fixes them with one click.",
+ "markdown": "Reports typos and misspellings in your code, comments, and literals and fixes them with one click."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "SpellCheckingInspection",
+ "ideaSeverity": "TYPO",
+ "qodanaSeverity": "Low",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Proofreading",
+ "index": 122,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "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": "note",
+ "parameters": {
+ "suppressToolId": "RegExpSimplifiable",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpEmptyAlternationBranch",
+ "shortDescription": {
+ "text": "Empty branch in alternation"
+ },
+ "fullDescription": {
+ "text": "Reports empty branches in a RegExp alternation. An empty branch will only match the empty string, and in most cases that is not what is desired. This inspection will not report a single empty branch at the start or the end of an alternation. Example: '(alpha||bravo)' After the quick-fix is applied: '(alpha|bravo)' New in 2017.2",
+ "markdown": "Reports empty branches in a RegExp alternation. An empty branch will only match the empty string, and in most cases that is not what is desired. This inspection will not report a single empty branch at the start or the end of an alternation.\n\n**Example:**\n\n\n (alpha||bravo)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo)\n\nNew in 2017.2"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpEmptyAlternationBranch",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TodoComment",
+ "shortDescription": {
+ "text": "TODO comment"
+ },
+ "fullDescription": {
+ "text": "Reports TODO comments in your code. You can configure the format for TODO comments in Settings | Editor | TODO. Enable the Only warn on TODO comments without any details option to only warn on empty TODO comments, that don't provide any description on the task that should be done. Disable to report all TODO comments.",
+ "markdown": "Reports **TODO** comments in your code.\n\nYou can configure the format for **TODO** comments in [Settings \\| Editor \\| TODO](settings://preferences.toDoOptions).\n\nEnable the **Only warn on TODO comments without any details** option to only warn on empty TODO comments, that\ndon't provide any description on the task that should be done. Disable to report all TODO comments."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TodoComment",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlDefaultAttributeValue",
+ "shortDescription": {
+ "text": "Redundant attribute with default value"
+ },
+ "fullDescription": {
+ "text": "Reports a redundant assignment of the default value to an XML attribute.",
+ "markdown": "Reports a redundant assignment of the default value to an XML attribute."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "XmlDefaultAttributeValue",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "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": {
+ "suppressToolId": "EmptyDirectory",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NonAsciiCharacters",
+ "shortDescription": {
+ "text": "Non-ASCII characters"
+ },
+ "fullDescription": {
+ "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,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NonAsciiCharacters",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Internationalization",
+ "index": 124,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IgnoreFileDuplicateEntry",
+ "shortDescription": {
+ "text": "Ignore file duplicates"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed. Example: '# Output directories\n /out/\n /target/\n /out/'",
+ "markdown": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed.\n\nExample:\n\n\n # Output directories\n /out/\n /target/\n /out/\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IgnoreFileDuplicateEntry",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Version control",
+ "index": 148,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "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": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpSuspiciousBackref",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnresolvedReference",
+ "shortDescription": {
+ "text": "Unresolved reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference to a named pattern ('define') in RELAX-NG files that use XML syntax. Suggests creating the referenced 'define' element.",
+ "markdown": "Reports an unresolved reference to a named pattern (`define`) in RELAX-NG files that use XML syntax. Suggests creating the referenced `define` element."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "UnresolvedReference",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RELAX NG",
+ "index": 136,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlMissingClosingTag",
+ "shortDescription": {
+ "text": "Missing closing tag"
+ },
+ "fullDescription": {
+ "text": "Reports an HTML element without a closing tag. Some coding styles require that HTML elements have closing tags even where this is optional. Example: '\n \n Behold!\n \n ' After the quick-fix is applied: '\n
\n Behold!
\n \n '",
+ "markdown": "Reports an HTML element without a closing tag. Some coding styles require that HTML elements have closing tags even where this is optional.\n\n**Example:**\n\n\n \n \n Behold!\n \n \n\nAfter the quick-fix is applied:\n\n\n \n
\n Behold!
\n \n \n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HtmlMissingClosingTag",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlInvalidId",
+ "shortDescription": {
+ "text": "Unresolved 'id' reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved 'id' reference in XML.",
+ "markdown": "Reports an unresolved `id` reference in XML."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XmlInvalidId",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlDeprecatedElement",
+ "shortDescription": {
+ "text": "Deprecated symbol"
+ },
+ "fullDescription": {
+ "text": "Reports a deprecated XML element or attribute. Symbols can be marked by XML comment or documentation tag with text 'deprecated'.",
+ "markdown": "Reports a deprecated XML element or attribute.\n\nSymbols can be marked by XML comment or documentation tag with text 'deprecated'."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "XmlDeprecatedElement",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpAnonymousGroup",
+ "shortDescription": {
+ "text": "Anonymous capturing group or numeric back reference"
+ },
+ "fullDescription": {
+ "text": "Reports anonymous capturing groups and numeric back references in a RegExp. These are only reported when the RegExp dialect supports named group and named group references. Named groups and named back references improve code readability and are recommended to use instead. When a capture is not needed, matching can be more performant and use less memory by using a non-capturing group, i.e. '(?:xxx)' instead of '(xxx)'. Example: '(\\d\\d\\d\\d)\\1' A better regex pattern could look like this: '(?\\d\\d\\d\\d)\\k' New in 2017.2",
+ "markdown": "Reports anonymous capturing groups and numeric back references in a RegExp. These are only reported when the RegExp dialect supports named group and named group references. Named groups and named back references improve code readability and are recommended to use instead. When a capture is not needed, matching can be more performant and use less memory by using a non-capturing group, i.e. `(?:xxx)` instead of `(xxx)`.\n\n**Example:**\n\n\n (\\d\\d\\d\\d)\\1\n\nA better regex pattern could look like this:\n\n\n (?\\d\\d\\d\\d)\\k\n\nNew in 2017.2"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpAnonymousGroup",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlUnresolvedReference",
+ "shortDescription": {
+ "text": "Unresolved references"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved references in XML.",
+ "markdown": "Reports an unresolved references in XML."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XmlUnresolvedReference",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpRepeatedSpace",
+ "shortDescription": {
+ "text": "Consecutive spaces"
+ },
+ "fullDescription": {
+ "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1",
+ "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpRepeatedSpace",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "InconsistentLineSeparators",
+ "shortDescription": {
+ "text": "Inconsistent line separators"
+ },
+ "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\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,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "InconsistentLineSeparators",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ProblematicWhitespace",
+ "shortDescription": {
+ "text": "Problematic whitespace"
+ },
+ "fullDescription": {
+ "text": "Reports the following problems: Tabs used for indentation when the code style is configured to use only spaces. Spaces used for indentation when the code style is configured to use only tabs. Spaces used for indentation and tabs used for alignment when the code style is configured to use smart tabs.",
+ "markdown": "Reports the following problems:\n\n* Tabs used for indentation when the code style is configured to use only spaces.\n* Spaces used for indentation when the code style is configured to use only tabs.\n* Spaces used for indentation and tabs used for alignment when the code style is configured to use smart tabs."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ProblematicWhitespace",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LongLine",
+ "shortDescription": {
+ "text": "Line is longer than allowed by code style"
+ },
+ "fullDescription": {
+ "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,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LongLine",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlUnknownTag",
+ "shortDescription": {
+ "text": "Unknown tag"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown HTML tag. Suggests configuring tags that should not be reported.",
+ "markdown": "Reports an unknown HTML tag. Suggests configuring tags that should not be reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlUnknownTag",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XmlHighlighting",
+ "shortDescription": {
+ "text": "XML highlighting"
+ },
+ "fullDescription": {
+ "text": "Reports XML validation problems in the results of a batch code inspection.",
+ "markdown": "Reports XML validation problems in the results of a batch code inspection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XmlHighlighting",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XML",
+ "index": 56,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RegExpDuplicateCharacterInClass",
+ "shortDescription": {
+ "text": "Duplicate character in character class"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate characters inside a RegExp character class. Duplicate characters are unnecessary and can be removed without changing the semantics of the regex. Example: '[aabc]' After the quick-fix is applied: '[abc]'",
+ "markdown": "Reports duplicate characters inside a RegExp character class. Duplicate characters are unnecessary and can be removed without changing the semantics of the regex.\n\n**Example:**\n\n\n [aabc]\n\nAfter the quick-fix is applied:\n\n\n [abc]\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RegExpDuplicateCharacterInClass",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RequiredAttributes",
+ "shortDescription": {
+ "text": "Missing required attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a missing mandatory attribute in an XML/HTML tag. Suggests configuring attributes that should not be reported.",
+ "markdown": "Reports a missing mandatory attribute in an XML/HTML tag. Suggests configuring attributes that should not be reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RequiredAttributes",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "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": {
+ "suppressToolId": "RegExpRedundantClassElement",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "RegExp",
+ "index": 58,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlWrongAttributeValue",
+ "shortDescription": {
+ "text": "Wrong attribute value"
+ },
+ "fullDescription": {
+ "text": "Reports an incorrect HTML attribute value.",
+ "markdown": "Reports an incorrect HTML attribute value."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlWrongAttributeValue",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MsbuildTargetFrameworkTagInspection",
+ "shortDescription": {
+ "text": "TargetFramework tag checks"
+ },
+ "fullDescription": {
+ "text": "RIDER-83136",
+ "markdown": "[RIDER-83136](https://youtrack.jetbrains.com/issue/RIDER-83136/)"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MsbuildTargetFrameworkTagInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MSBuild",
+ "index": 165,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CheckValidXmlInScriptTagBody",
+ "shortDescription": {
+ "text": "Malformed content of 'script' tag"
+ },
+ "fullDescription": {
+ "text": "Reports contents of 'script' tags that are invalid XML. Example: '' After the quick-fix is applied: ''",
+ "markdown": "Reports contents of `script` tags that are invalid XML. \n\n**Example:**\n\n\n \n\nAfter the quick-fix is applied:\n\n\n \n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CheckValidXmlInScriptTagBody",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlUnknownAnchorTarget",
+ "shortDescription": {
+ "text": "Unresolved fragment in a link"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved last part of an URL after the '#' sign.",
+ "markdown": "Reports an unresolved last part of an URL after the `#` sign."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlUnknownAnchorTarget",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "Annotator",
+ "shortDescription": {
+ "text": "Annotator"
+ },
+ "fullDescription": {
+ "text": "Reports issues essential to this file (e.g., syntax errors) in the result of a batch code inspection run. These issues are usually always highlighted in the editor and can't be configured, unlike inspections. These options control the scope of checks performed by this inspection: Option \"Report syntax errors\": report parser-related issues. Option \"Report issues from language-specific annotators\": report issues found by annotators configured for the relevant language. See Custom Language Support: Annotators for details. Option \"Report other highlighting problems\": report issues specific to the language of the current file (e.g., type mismatches or unreported exceptions). See Custom Language Support: Highlighting for details.",
+ "markdown": "Reports issues essential to this file (e.g., syntax errors) in the result of a batch code inspection run. These issues are usually always highlighted in the editor and can't be configured, unlike inspections. These options control the scope of checks performed by this inspection:\n\n* Option \"**Report syntax errors**\": report parser-related issues.\n* Option \"**Report issues from language-specific annotators** \": report issues found by annotators configured for the relevant language. See [Custom Language Support: Annotators](https://plugins.jetbrains.com/docs/intellij/annotator.html) for details.\n* Option \"**Report other highlighting problems** \": report issues specific to the language of the current file (e.g., type mismatches or unreported exceptions). See [Custom Language Support: Highlighting](https://plugins.jetbrains.com/docs/intellij/syntax-highlighting-and-error-highlighting.html#semantic-highlighting) for details."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "Annotator",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.intellij.plugins.postcss",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "PostCssUnresolvedModuleValueReference",
+ "shortDescription": {
+ "text": "Unresolved CSS module value"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference to a CSS Module Value ('@value' declaration). Example: '@value foo from unknown;'",
+ "markdown": "Reports an unresolved reference to a [CSS Module Value](https://github.com/css-modules/postcss-modules-values) (`@value` declaration).\n\nExample:\n\n\n @value foo from unknown;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "PostCssUnresolvedModuleValueReference",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "PostCSS",
+ "index": 13,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PostCssNesting",
+ "shortDescription": {
+ "text": "Invalid nested rule"
+ },
+ "fullDescription": {
+ "text": "Reports a nested style rule whose syntax doesn't comply with the PostCSS Nested or the PostCSS Nesting specification. Example: '.phone {\n &_title {}\n}'",
+ "markdown": "Reports a nested style rule whose syntax doesn't comply with the [PostCSS Nested](https://github.com/postcss/postcss-nested) or the [PostCSS Nesting](https://github.com/csstools/postcss-nesting) specification.\n\nExample:\n\n\n .phone {\n &_title {}\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PostCssNesting",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "PostCSS",
+ "index": 13,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PostCssCustomMedia",
+ "shortDescription": {
+ "text": "Invalid custom media"
+ },
+ "fullDescription": {
+ "text": "Reports a syntax error in a PostCSS Custom Media query. Example: '@custom-media --small-viewport (max-width: 30em);'",
+ "markdown": "Reports a syntax error in a [PostCSS Custom Media](https://github.com/postcss/postcss-custom-media) query.\n\nExample:\n\n\n @custom-media --small-viewport (max-width: 30em);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "PostCssCustomMedia",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "PostCSS",
+ "index": 13,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PostCssCustomSelector",
+ "shortDescription": {
+ "text": "Invalid custom selector"
+ },
+ "fullDescription": {
+ "text": "Reports a syntax error in PostCSS Custom Selector. Example: '@custom-selector :--heading h1, h2, h3;'",
+ "markdown": "Reports a syntax error in [PostCSS Custom Selector](https://github.com/postcss/postcss-custom-selectors).\n\nExample:\n\n\n @custom-selector :--heading h1, h2, h3;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "PostCssCustomSelector",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "PostCSS",
+ "index": 13,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PostCssMediaRange",
+ "shortDescription": {
+ "text": "Invalid media query range"
+ },
+ "fullDescription": {
+ "text": "Checks range context syntax, which may alternatively be used for media features with a 'range' type. Example: '@media screen and (500px <= width <= 1200px) {}'",
+ "markdown": "Checks [range context](https://github.com/postcss/postcss-media-minmax) syntax, which may alternatively be used for media features with a 'range' type.\n\nExample:\n\n\n @media screen and (500px <= width <= 1200px) {}\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "PostCssMediaRange",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "PostCSS",
+ "index": 13,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "JavaScript",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "ShiftOutOfRangeJS",
+ "shortDescription": {
+ "text": "Shift operation by possibly wrong constant"
+ },
+ "fullDescription": {
+ "text": "Reports a shift operation where the second operand is a constant outside the reasonable range, for example, an integer shift operation outside the range '0..31', shifting by negative or overly large values.",
+ "markdown": "Reports a shift operation where the second operand is a constant outside the reasonable range, for example, an integer shift operation outside the range `0..31`, shifting by negative or overly large values."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ShiftOutOfRangeJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Bitwise operation issues",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSClosureCompilerSyntax",
+ "shortDescription": {
+ "text": "Incorrect usage of JSDoc tags"
+ },
+ "fullDescription": {
+ "text": "Reports warnings implied by Google Closure Compiler annotations including correct use of '@abstract', '@interface', and '@implements' tags.",
+ "markdown": "Reports warnings implied by *Google Closure Compiler* annotations including correct use of `@abstract`, `@interface`, and `@implements` tags."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSClosureCompilerSyntax",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "BadExpressionStatementJS",
+ "shortDescription": {
+ "text": "Expression statement which is not assignment or call"
+ },
+ "fullDescription": {
+ "text": "Reports an expression statement that is neither an assignment nor a call. Such statements usually indicate an error.",
+ "markdown": "Reports an expression statement that is neither an assignment nor a call. Such statements usually indicate an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "BadExpressionStatementJS",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ContinueStatementJS",
+ "shortDescription": {
+ "text": "'continue' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'continue' statement.",
+ "markdown": "Reports a `continue` statement."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ContinueStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSXSyntaxUsed",
+ "shortDescription": {
+ "text": "JSX syntax used"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a JSX tag in JavaScript code.",
+ "markdown": "Reports a usage of a JSX tag in JavaScript code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JSXSyntaxUsed",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSJoinVariableDeclarationAndAssignment",
+ "shortDescription": {
+ "text": "Variable declaration can be merged with the first assignment to the variable"
+ },
+ "fullDescription": {
+ "text": "Reports a variable that is declared without an initializer and is used much further in the code or in a single nested scope. Suggests moving the variable closer to its usages and joining it with the initializer expression.",
+ "markdown": "Reports a variable that is declared without an initializer and is used much further in the code or in a single nested scope. Suggests moving the variable closer to its usages and joining it with the initializer expression."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSJoinVariableDeclarationAndAssignment",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ConvertModuleExportToExport",
+ "shortDescription": {
+ "text": "'module.exports' is used instead of 'export'"
+ },
+ "fullDescription": {
+ "text": "Reports a 'module.export' statement. Suggests replacing it with an 'export' or 'export default' statement. Please note that the quick-fix for converting 'module.export' into 'export' is not available for 'module.export' inside functions or statements because 'export' statements can only be at the top level of a module.",
+ "markdown": "Reports a `module.export` statement. Suggests replacing it with an `export` or `export default` statement. \n\nPlease note that the quick-fix for converting `module.export` into `export` is not available for `module.export` inside functions or statements because `export` statements can only be at the top level of a module."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ConvertModuleExportToExport",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DocumentWriteJS",
+ "shortDescription": {
+ "text": "Call to 'document.write()'"
+ },
+ "fullDescription": {
+ "text": "Reports a method call to 'document.write()' or 'document.writeln()'. Most usages of such calls are performed better with explicit DOM calls, such as 'getElementByID()' and 'createElement()'. Additionally, the 'write()' and 'writeln()' calls will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can result in difficulty to point out bugs.",
+ "markdown": "Reports a method call to `document.write()` or `document.writeln()`. Most usages of such calls are performed better with explicit DOM calls, such as `getElementByID()` and `createElement()`. Additionally, the `write()` and `writeln()` calls will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can result in difficulty to point out bugs."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DocumentWriteJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/DOM issues",
+ "index": 51,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IncompatibleMaskJS",
+ "shortDescription": {
+ "text": "Incompatible bitwise mask operation"
+ },
+ "fullDescription": {
+ "text": "Reports a bitwise mask expression which for sure evaluates to 'true' or 'false'. Expressions are of the form '(var & constant1) == constant2' or '(var | constant1) == constant2', where 'constant1' and 'constant2' are incompatible bitmask constants. Example: '// Incompatible mask: as the last byte in mask is zero,\n// something like 0x1200 would be possible, but not 0x1234\nif ((mask & 0xFF00) == 0x1234) {...}'",
+ "markdown": "Reports a bitwise mask expression which for sure evaluates to `true` or `false`. Expressions are of the form `(var & constant1) == constant2` or `(var | constant1) == constant2`, where `constant1` and `constant2` are incompatible bitmask constants.\n\nExample:\n\n\n // Incompatible mask: as the last byte in mask is zero,\n // something like 0x1200 would be possible, but not 0x1234\n if ((mask & 0xFF00) == 0x1234) {...}\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IncompatibleBitwiseMaskOperation",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Bitwise operation issues",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSDuplicatedDeclaration",
+ "shortDescription": {
+ "text": "Duplicate declaration"
+ },
+ "fullDescription": {
+ "text": "Reports multiple declarations in a scope.",
+ "markdown": "Reports multiple declarations in a scope."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSDuplicatedDeclaration",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptValidateGenericTypes",
+ "shortDescription": {
+ "text": "Incorrect generic type argument"
+ },
+ "fullDescription": {
+ "text": "Reports an invalid type argument in a function, interface, or class declaration.",
+ "markdown": "Reports an invalid type argument in a function, interface, or class declaration."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "TypeScriptValidateGenericTypes",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSFileReferences",
+ "shortDescription": {
+ "text": "Unresolved file reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved file reference in a JavaScript file, including CommonJS and AMD modules references.",
+ "markdown": "Reports an unresolved file reference in a JavaScript file, including CommonJS and AMD modules references."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSFileReferences",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FunctionWithInconsistentReturnsJS",
+ "shortDescription": {
+ "text": "Function with inconsistent returns"
+ },
+ "fullDescription": {
+ "text": "Reports a function that returns a value in some cases while in other cases no value is returned. This usually indicates an error. Example: 'function foo() {\n if (true)\n return 3;\n return;\n}'",
+ "markdown": "Reports a function that returns a value in some cases while in other cases no value is returned. This usually indicates an error.\n\nExample:\n\n\n function foo() {\n if (true)\n return 3;\n return;\n }\n\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FunctionWithInconsistentReturnsJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ClassMemberInitializationOrder",
+ "shortDescription": {
+ "text": "Use of possibly unassigned property in a static initializer"
+ },
+ "fullDescription": {
+ "text": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. Initialization of class members happens consequently for fields, so a field cannot reference another field that is declared later.",
+ "markdown": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. \n\nInitialization of class members happens consequently for fields, so a field cannot reference another field that is declared later."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ES6ClassMemberInitializationOrder",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NestedFunctionJS",
+ "shortDescription": {
+ "text": "Nested function"
+ },
+ "fullDescription": {
+ "text": "Reports a function nested inside another function. Although JavaScript allows functions to be nested, such constructs may be confusing. Use the checkbox below to ignore anonymous nested functions.",
+ "markdown": "Reports a function nested inside another function. Although JavaScript allows functions to be nested, such constructs may be confusing.\n\n\nUse the checkbox below to ignore anonymous nested functions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NestedFunctionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptUMDGlobal",
+ "shortDescription": {
+ "text": "Referenced UMD global variable"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a Universal Module Definition (UMD) global variable if the current file is a module (ECMAScript or CommonJS). Referencing UMD variables without explicit imports can lead to a runtime error if the library isn't included implicitly.",
+ "markdown": "Reports a usage of a Universal Module Definition (UMD) global variable if the current file is a module (ECMAScript or CommonJS). Referencing UMD variables without explicit imports can lead to a runtime error if the library isn't included implicitly."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptUMDGlobal",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryReturnJS",
+ "shortDescription": {
+ "text": "Unnecessary 'return' statement"
+ },
+ "fullDescription": {
+ "text": "Reports an unnecessary 'return' statement, that is, a 'return' statement that returns no value and occurs just before the function would have \"fallen through\" the bottom. These statements may be safely removed.",
+ "markdown": "Reports an unnecessary `return` statement, that is, a `return` statement that returns no value and occurs just before the function would have \"fallen through\" the bottom. These statements may be safely removed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnnecessaryReturnStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "StandardJS",
+ "shortDescription": {
+ "text": "Standard code style"
+ },
+ "fullDescription": {
+ "text": "Reports a discrepancy detected by the JavaScript Standard Style linter. The highlighting severity in the editor is based on the severity level the linter reports.",
+ "markdown": "Reports a discrepancy detected by the [JavaScript Standard Style](https://standardjs.com/) linter. \n\nThe highlighting severity in the editor is based on the severity level the linter reports."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "StandardJS",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code quality tools",
+ "index": 69,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSCommentMatchesSignature",
+ "shortDescription": {
+ "text": "Mismatched JSDoc and function signature"
+ },
+ "fullDescription": {
+ "text": "Reports mismatch between the names and the number of parameters within a JSDoc comment and the actual parameters of a function. Suggests updating parameters in JSDoc comment. Example: '/**\n * @param height Height in pixels\n */\nfunction sq(height, width) {} // width is not documented' After the quick-fix is applied: '/**\n * @param height Height in pixels\n * @param width\n */\nfunction sq(height, width) {}'",
+ "markdown": "Reports mismatch between the names and the number of parameters within a JSDoc comment and the actual parameters of a function. Suggests updating parameters in JSDoc comment.\n\n**Example:**\n\n\n /**\n * @param height Height in pixels\n */\n function sq(height, width) {} // width is not documented\n\nAfter the quick-fix is applied:\n\n\n /**\n * @param height Height in pixels\n * @param width\n */\n function sq(height, width) {}\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSCommentMatchesSignature",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FunctionWithMultipleReturnPointsJS",
+ "shortDescription": {
+ "text": "Function with multiple return points"
+ },
+ "fullDescription": {
+ "text": "Reports a function with multiple return points. Such functions are hard to understand and maintain.",
+ "markdown": "Reports a function with multiple return points. Such functions are hard to understand and maintain."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FunctionWithMultipleReturnPointsJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSRemoveUnnecessaryParentheses",
+ "shortDescription": {
+ "text": "Unnecessary parentheses"
+ },
+ "fullDescription": {
+ "text": "Reports redundant parentheses. In expressions: 'var x = ((1) + 2) + 3' In arrow function argument lists: 'var incrementer = (x) => x + 1' In TypeScript and Flow type declarations: 'type Card = (Suit & Rank) | (Suit & Number)'",
+ "markdown": "Reports redundant parentheses.\n\nIn expressions:\n\n var x = ((1) + 2) + 3\n\nIn arrow function argument lists:\n\n var incrementer = (x) => x + 1\n\nIn TypeScript and Flow type declarations:\n\n type Card = (Suit & Rank) | (Suit & Number)\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSRemoveUnnecessaryParentheses",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CommaExpressionJS",
+ "shortDescription": {
+ "text": "Comma expression"
+ },
+ "fullDescription": {
+ "text": "Reports a comma expression. Such expressions are often a sign of overly clever code, and may lead to subtle bugs. Comma expressions in the initializer or in the update section of 'for' loops are ignored.",
+ "markdown": "Reports a comma expression. Such expressions are often a sign of overly clever code, and may lead to subtle bugs. Comma expressions in the initializer or in the update section of `for` loops are ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CommaExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6BindWithArrowFunction",
+ "shortDescription": {
+ "text": "Suspicious usage of 'bind' with arrow function"
+ },
+ "fullDescription": {
+ "text": "Reports 'bind' used together with an arrow function. Because arrow functions use lexical 'this', a 'bind' call will have no effect on them. See here for details.",
+ "markdown": "Reports `bind` used together with an arrow function. \nBecause arrow functions use lexical `this`, a `bind` call will have no effect on them. \nSee [here](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Lexical_this) for details."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ES6BindWithArrowFunction",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSBitwiseOperatorUsage",
+ "shortDescription": {
+ "text": "Bitwise operator usage"
+ },
+ "fullDescription": {
+ "text": "Reports a suspicious usage of a bitwise AND (\"'&'\") or OR (\"'|'\") operator. Usually it is a typo and the result of applying boolean operations AND (\"'&&'\") and OR (\"'||'\") is expected.",
+ "markdown": "Reports a suspicious usage of a bitwise AND (\"`&`\") or OR (\"`|`\") operator. Usually it is a typo and the result of applying boolean operations AND (\"`&&`\") and OR (\"`||`\") is expected."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSBitwiseOperatorUsage",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Bitwise operation issues",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IfStatementWithIdenticalBranchesJS",
+ "shortDescription": {
+ "text": "'if' statement with identical branches"
+ },
+ "fullDescription": {
+ "text": "Reports an 'if' statement with identical 'then' and 'else' branches. Such statements are almost certainly an error.",
+ "markdown": "Reports an `if` statement with identical `then` and `else` branches. Such statements are almost certainly an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IfStatementWithIdenticalBranchesJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSConsecutiveCommasInArrayLiteral",
+ "shortDescription": {
+ "text": "Consecutive commas in array literal"
+ },
+ "fullDescription": {
+ "text": "Reports a consecutive comma in an array literal. The skipped element accepts the 'undefined' value, but it could be done unintentionally, for example, when commas are at the end of one line and at the beginning of the next one.",
+ "markdown": "Reports a consecutive comma in an array literal. The skipped element accepts the `undefined` value, but it could be done unintentionally, for example, when commas are at the end of one line and at the beginning of the next one."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSConsecutiveCommasInArrayLiteral",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSValidateTypes",
+ "shortDescription": {
+ "text": "Type mismatch"
+ },
+ "fullDescription": {
+ "text": "Reports incorrect type of: a parameter in a function call a return value an assigned expression TypeScript code is ignored.",
+ "markdown": "Reports incorrect type of:\n\n* a parameter in a function call\n* a return value\n* an assigned expression\n\nTypeScript code is ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSValidateTypes",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSPotentiallyInvalidUsageOfClassThis",
+ "shortDescription": {
+ "text": "Potentially invalid reference to 'this' of a class from closure"
+ },
+ "fullDescription": {
+ "text": "Reports an attempt to reference a member of an ECMAScript class via the 'this.' qualifier in a nested function that is not a lambda. 'this' in a nested function that is not a lambda is the function's own 'this' and doesn't relate to the outer class.",
+ "markdown": "Reports an attempt to reference a member of an ECMAScript class via the `this.` qualifier in a nested function that is not a lambda. \n`this` in a nested function that is not a lambda is the function's own `this` and doesn't relate to the outer class."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSPotentiallyInvalidUsageOfClassThis",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryContinueJS",
+ "shortDescription": {
+ "text": "Unnecessary 'continue' statement"
+ },
+ "fullDescription": {
+ "text": "Reports an unnecessary 'continue' statement at the end of a loop. Suggests removing such statements.",
+ "markdown": "Reports an unnecessary `continue` statement at the end of a loop. Suggests removing such statements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnnecessaryContinueJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "BreakStatementWithLabelJS",
+ "shortDescription": {
+ "text": "'break' statement with label"
+ },
+ "fullDescription": {
+ "text": "Reports a labeled 'break' statement.",
+ "markdown": "Reports a labeled `break` statement."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "BreakStatementWithLabelJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSDeclarationsAtScopeStart",
+ "shortDescription": {
+ "text": "'var' declared not at the beginning of a function"
+ },
+ "fullDescription": {
+ "text": "Checks that declarations of local variables declared with var are at the top of a function scope. By default, variable declarations are always moved (\"hoisted\") invisibly to the top of their containing scope when the code is executed. Therefore, declaring them at the top of the scope helps represent this behavior in the code.",
+ "markdown": "Checks that declarations of local variables declared with **var** are at the top of a function scope. \n\nBy default, variable declarations are always moved (\"hoisted\") invisibly to the top of their containing scope when the code is executed. Therefore, declaring them at the top of the scope helps represent this behavior in the code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSDeclarationsAtScopeStart",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ConvertIndexedForToForOf",
+ "shortDescription": {
+ "text": "Indexed 'for' is used instead of 'for..of'"
+ },
+ "fullDescription": {
+ "text": "Reports an indexed 'for' loop used on an array. Suggests replacing it with a 'for..of' loop. 'for..of' loops are introduced in ECMAScript 6 and iterate over 'iterable' objects.",
+ "markdown": "Reports an indexed [for](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for) loop used on an array. Suggests replacing it with a [for..of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) loop. \n`for..of` loops are introduced in ECMAScript 6 and iterate over `iterable` objects."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ConvertIndexedForToForOf",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ConvertVarToLetConst",
+ "shortDescription": {
+ "text": "'var' is used instead of 'let' or 'const'"
+ },
+ "fullDescription": {
+ "text": "Reports a 'var' declaration that is used instead of 'let' or 'const'. Both 'let' and 'const' are block-scoped and behave more strictly. Suggests replacing all 'var' declarations with 'let' or 'const' declarations, depending on the semantics of a particular value. The declarations may be moved to the top of the function or placed before the first usage of the variable to avoid Reference errors. Select the 'Conservatively convert var with Fix all action' option to prevent any changes in these complex cases when using the 'Fix all' action.",
+ "markdown": "Reports a `var` declaration that is used instead of `let` or `const`. \nBoth `let` and `const` are block-scoped and behave more strictly. \n\nSuggests replacing all `var` declarations with `let` or `const` declarations, depending on the semantics of a particular value. The declarations may be moved to the top of the function or placed before the first usage of the variable to avoid Reference errors. \nSelect the 'Conservatively convert var with Fix all action' option to prevent any changes in these complex cases when using the 'Fix all' action."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ConvertVarToLetConst",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DynamicallyGeneratedCodeJS",
+ "shortDescription": {
+ "text": "Execution of dynamically generated code"
+ },
+ "fullDescription": {
+ "text": "Reports a call of the 'eval()', 'setTimeout()', or 'setInterval()' function or an allocation of a 'Function' object. These functions are used to execute arbitrary strings of JavaScript text, which often dynamically generated. This can be very confusing, and may be a security risk. Ignores the cases when a callback function is provided to these methods statically, without code generation.",
+ "markdown": "Reports a call of the `eval()`, `setTimeout()`, or `setInterval()` function or an allocation of a `Function` object. These functions are used to execute arbitrary strings of JavaScript text, which often dynamically generated. This can be very confusing, and may be a security risk. \n\nIgnores the cases when a callback function is provided to these methods statically, without code generation."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DynamicallyGeneratedCodeJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnusedCatchParameterJS",
+ "shortDescription": {
+ "text": "Unused 'catch' parameter"
+ },
+ "fullDescription": {
+ "text": "Reports a 'catch' parameter that is not used in the corresponding block. The 'catch' parameters named 'ignore' or 'ignored' are ignored. Use the checkbox below to disable this inspection for 'catch' blocks with comments.",
+ "markdown": "Reports a `catch` parameter that is not used in the corresponding block. The `catch` parameters named `ignore` or `ignored` are ignored.\n\n\nUse the checkbox below to disable this inspection for `catch`\nblocks with comments."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnusedCatchParameterJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AnonymousFunctionJS",
+ "shortDescription": {
+ "text": "Anonymous function"
+ },
+ "fullDescription": {
+ "text": "Reports an anonymous function. An explicit name of a function expression may be helpful for debugging. Ignores function expressions without names if they have a 'name' property specified in the ECMAScript 6 standard. For example, 'var bar = function() {};' is not reported.",
+ "markdown": "Reports an anonymous function. An explicit name of a function expression may be helpful for debugging. Ignores function expressions without names if they have a `name` property specified in the ECMAScript 6 standard. For example, `var bar = function() {};` is not reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AnonymousFunctionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EmptyCatchBlockJS",
+ "shortDescription": {
+ "text": "Empty 'catch' block"
+ },
+ "fullDescription": {
+ "text": "Reports an empty 'catch' block. This indicates that errors are simply ignored instead of handling them. Any comment in a 'catch' block mutes the inspection.",
+ "markdown": "Reports an empty `catch` block. This indicates that errors are simply ignored instead of handling them. \n\nAny comment in a `catch` block mutes the inspection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EmptyCatchBlockJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ThrowFromFinallyBlockJS",
+ "shortDescription": {
+ "text": "'throw' inside 'finally' block"
+ },
+ "fullDescription": {
+ "text": "Reports s 'throw' statement inside a 'finally' block. Such 'throw' statements may mask exceptions thrown, and complicate debugging.",
+ "markdown": "Reports s `throw` statement inside a `finally` block. Such `throw` statements may mask exceptions thrown, and complicate debugging."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ThrowInsideFinallyBlockJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSPotentiallyInvalidUsageOfThis",
+ "shortDescription": {
+ "text": "Potentially invalid reference to 'this' from closure"
+ },
+ "fullDescription": {
+ "text": "Reports a 'this' in closure that is used for referencing properties of outer context. Example: 'function Outer() {\n this.outerProp = 1;\n function inner() {\n // bad, because 'outerProp' of Outer\n // won't be updated here\n // on calling 'new Outer()' as may be expected\n this.outerProp = 2;\n }\n inner();\n}'",
+ "markdown": "Reports a `this` in closure that is used for referencing properties of outer context.\n\nExample:\n\n\n function Outer() {\n this.outerProp = 1;\n function inner() {\n // bad, because 'outerProp' of Outer\n // won't be updated here\n // on calling 'new Outer()' as may be expected\n this.outerProp = 2;\n }\n inner();\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSPotentiallyInvalidUsageOfThis",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnresolvedLibraryURL",
+ "shortDescription": {
+ "text": "Missed locally stored library for HTTP link"
+ },
+ "fullDescription": {
+ "text": "Reports a URL of an external JavaScript library that is not associated with any locally stored file. Suggests downloading the library. Such association enables the IDE to provide proper code completion and navigation.",
+ "markdown": "Reports a URL of an external JavaScript library that is not associated with any locally stored file. Suggests downloading the library. Such association enables the IDE to provide proper code completion and navigation."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnresolvedLibraryURL",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptFieldCanBeMadeReadonly",
+ "shortDescription": {
+ "text": "Field can be readonly"
+ },
+ "fullDescription": {
+ "text": "Reports a private field that can be made readonly (for example, if the field is assigned only in the constructor).",
+ "markdown": "Reports a private field that can be made readonly (for example, if the field is assigned only in the constructor)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptFieldCanBeMadeReadonly",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NegatedIfStatementJS",
+ "shortDescription": {
+ "text": "Negated 'if' statement"
+ },
+ "fullDescription": {
+ "text": "Reports if statements which have an else branch and a negated condition. Flipping the order of the if and else branches will usually increase the clarity of such statements.",
+ "markdown": "Reports **if** statements which have an **else** branch and a negated condition. Flipping the order of the **if** and **else** branches will usually increase the clarity of such statements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NegatedIfStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConditionalExpressionWithIdenticalBranchesJS",
+ "shortDescription": {
+ "text": "Conditional expression with identical branches"
+ },
+ "fullDescription": {
+ "text": "Reports a ternary conditional expression with identical 'then' and 'else' branches.",
+ "markdown": "Reports a ternary conditional expression with identical `then` and `else` branches."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConditionalExpressionWithIdenticalBranchesJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSIncompatibleTypesComparison",
+ "shortDescription": {
+ "text": "Comparison of expressions having incompatible types"
+ },
+ "fullDescription": {
+ "text": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values.",
+ "markdown": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSIncompatibleTypesComparison",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6TopLevelAwaitExpression",
+ "shortDescription": {
+ "text": "Top-level 'await' expression"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a top-level 'await' expression. While the new 'top-level async' proposal is on its way, using 'await' outside async functions is not allowed.",
+ "markdown": "Reports a usage of a top-level `await` expression. While the new 'top-level async' proposal is on its way, using `await` outside async functions is not allowed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "ES6TopLevelAwaitExpression",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Async code and promises",
+ "index": 103,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ParameterNamingConventionJS",
+ "shortDescription": {
+ "text": "Function parameter naming convention"
+ },
+ "fullDescription": {
+ "text": "Reports a function parameter whose name is too short, too long, or doesn't follow the specified regular expression pattern. Use the fields provided below to specify minimum length, maximum length and regular expression expected for local variables names. Use the standard 'java.util.regex' format regular expressions.",
+ "markdown": "Reports a function parameter whose name is too short, too long, or doesn't follow the specified regular expression pattern.\n\n\nUse the fields provided below to specify minimum length, maximum length and regular expression\nexpected for local variables names. Use the standard `java.util.regex` format regular expressions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ParameterNamingConventionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Naming conventions",
+ "index": 104,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ParametersPerFunctionJS",
+ "shortDescription": {
+ "text": "Function with too many parameters"
+ },
+ "fullDescription": {
+ "text": "Reports a function with too many parameters. Such functions often indicate problems with design. Use the field below to specify the maximum acceptable number of parameters for a function.",
+ "markdown": "Reports a function with too many parameters. Such functions often indicate problems with design.\n\n\nUse the field below to specify the maximum acceptable number of parameters for a function."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "OverlyComplexFunctionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSSuspiciousNameCombination",
+ "shortDescription": {
+ "text": "Suspicious variable/parameter name combination"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment or a function call where the name of the target variable or the function parameter does not match the name of the value assigned to it. Example: 'var x = 0;\n var y = x;' or 'var x = 0, y = 0;\n var rc = new Rectangle(y, x, 20, 20);' Here the inspection guesses that 'x' and 'y' are mixed up. Specify the names that should not be used together. An error is reported if a parameter name or an assignment target name contains words from one group while the name of the assigned or passed variable contains words from another group.",
+ "markdown": "Reports an assignment or a function call where the name of the target variable or the function parameter does not match the name of the value assigned to it.\n\nExample:\n\n\n var x = 0;\n var y = x;\n\nor\n\n\n var x = 0, y = 0;\n var rc = new Rectangle(y, x, 20, 20);\n\nHere the inspection guesses that `x` and `y` are mixed up.\n\nSpecify the names that should not be used together. An error is reported\nif a parameter name or an assignment target name contains words from one group while the name of the assigned or passed\nvariable contains words from another group."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSSuspiciousNameCombination",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ChainedFunctionCallJS",
+ "shortDescription": {
+ "text": "Chained function call"
+ },
+ "fullDescription": {
+ "text": "Reports a function call whose target is another function call, for example, 'foo().bar()'",
+ "markdown": "Reports a function call whose target is another function call, for example, `foo().bar()`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ChainedFunctionCallJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConstantOnLHSOfComparisonJS",
+ "shortDescription": {
+ "text": "Constant on left side of comparison"
+ },
+ "fullDescription": {
+ "text": "Reports a comparison operation with a constant value in the left-hand side. According to coding conventions, constants should be in the right-hand side of comparisons.",
+ "markdown": "Reports a comparison operation with a constant value in the left-hand side. According to coding conventions, constants should be in the right-hand side of comparisons."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConstantOnLefSideOfComparisonJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSCheckFunctionSignatures",
+ "shortDescription": {
+ "text": "Signature mismatch"
+ },
+ "fullDescription": {
+ "text": "Reports a JavaScript call expression where the arguments do not match the signature of the referenced function, including the types of arguments and their number. Also, reports if the overloading function doesn't match the overloaded one in terms of parameters and return types. TypeScript code is ignored.",
+ "markdown": "Reports a JavaScript call expression where the arguments do not match the signature of the referenced function, including the types of arguments and their number. Also, reports if the overloading function doesn't match the overloaded one in terms of parameters and return types.\n\nTypeScript code is ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSCheckFunctionSignatures",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptUnresolvedReference",
+ "shortDescription": {
+ "text": "Unresolved TypeScript reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference in TypeScript code.",
+ "markdown": "Reports an unresolved reference in TypeScript code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "TypeScriptUnresolvedReference",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6RedundantAwait",
+ "shortDescription": {
+ "text": "Redundant 'await' expression"
+ },
+ "fullDescription": {
+ "text": "Reports a redundant usage of 'await', such as 'await await', or awaiting a non-promise result. When the 'Report for promises' option is selected, suggests removing 'await' before promises when applicable (in 'return' statements, and with 'Promise.resolve/reject'). Removing 'await' in such contexts causes two problems. Surrounding your code with 'try-catch' and forgetting to add 'await' will change code semantics while you may fail to notice that. Having an explicit 'await' may prevent the V8 runtime from providing async stack traces.",
+ "markdown": "Reports a redundant usage of `await`, such as `await await`, or awaiting a non-promise result.\n\n\nWhen the 'Report for promises' option is selected, suggests removing `await` before promises when applicable\n(in `return` statements, and with `Promise.resolve/reject`).\n\nRemoving `await` in such contexts causes two problems.\n\n* Surrounding your code with `try-catch` and forgetting to add `await` will change code semantics while you may fail to notice that.\n* Having an explicit `await` may prevent the V8 runtime from providing [async stack traces](http://bit.ly/v8-zero-cost-async-stack-traces)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6RedundantAwait",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Async code and promises",
+ "index": 103,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AssignmentToFunctionParameterJS",
+ "shortDescription": {
+ "text": "Assignment to function parameter"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment to a function parameter, including increment and decrement operations. Although occasionally intended, this construct can be extremely confusing, and is often a result of an error.",
+ "markdown": "Reports an assignment to a function parameter, including increment and decrement operations. Although occasionally intended, this construct can be extremely confusing, and is often a result of an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AssignmentToFunctionParameterJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FallThroughInSwitchStatementJS",
+ "shortDescription": {
+ "text": "Fallthrough in 'switch' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'switch' statement where control can proceed from a branch to the next one. Such \"fall-through\" often indicates an error, for example, a missing 'break' or 'return'.",
+ "markdown": "Reports a `switch` statement where control can proceed from a branch to the next one. Such \"fall-through\" often indicates an error, for example, a missing `break` or `return`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FallThroughInSwitchStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CallerJS",
+ "shortDescription": {
+ "text": "Use of 'caller' property"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of the 'caller' property in a JavaScript function. Using this property to access the stack frame of the calling method can be extremely confusing and result in subtle bugs.",
+ "markdown": "Reports a usage of the `caller` property in a JavaScript function. Using this property to access the stack frame of the calling method can be extremely confusing and result in subtle bugs."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CallerJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSSwitchVariableDeclarationIssue",
+ "shortDescription": {
+ "text": "Variable is declared and being used in different 'case' clauses"
+ },
+ "fullDescription": {
+ "text": "Reports a variable that is declared in one 'case' clause of a 'switch' statement but is used in another 'case' clause of the same statement. For block-scoped variables, this results in throwing a 'ReferenceError'. For 'var' variables, it indicates a potential error. Disable the inspection for 'var' variables if this pattern is used intentionally.",
+ "markdown": "Reports a variable that is declared in one `case` clause of a `switch` statement but is used in another `case` clause of the same statement. For block-scoped variables, this results in throwing a `ReferenceError`. For `var` variables, it indicates a potential error.\n\nDisable the inspection for `var` variables if this pattern is used intentionally."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSSwitchVariableDeclarationIssue",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ReuseOfLocalVariableJS",
+ "shortDescription": {
+ "text": "Reuse of local variable"
+ },
+ "fullDescription": {
+ "text": "Reports reusing a local variable and overwriting its value with a new value that is not related to the original variable usage. Reusing a local variable in this way may be confusing because the intended semantics of the local variable may vary with each usage. It may also cause bugs, if code changes result in values that were expected to be overwritten while they are actually live. It is good practices to keep variable lifetimes as short as possible, and not reuse local variables for the sake of brevity.",
+ "markdown": "Reports reusing a local variable and overwriting its value with a new value that is not related to the original variable usage. Reusing a local variable in this way may be confusing because the intended semantics of the local variable may vary with each usage. It may also cause bugs, if code changes result in values that were expected to be overwritten while they are actually live. It is good practices to keep variable lifetimes as short as possible, and not reuse local variables for the sake of brevity."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ReuseOfLocalVariableJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Data flow",
+ "index": 112,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ConvertLetToConst",
+ "shortDescription": {
+ "text": "'let' is used instead of 'const'"
+ },
+ "fullDescription": {
+ "text": "Reports a 'let' declaration that can be made 'const'.",
+ "markdown": "Reports a `let` declaration that can be made `const`. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ConvertLetToConst",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSReferencingMutableVariableFromClosure",
+ "shortDescription": {
+ "text": "Referencing mutable variable from closure"
+ },
+ "fullDescription": {
+ "text": "Reports access to outer mutable variables from functions. Example: 'for (var i = 1; i <= 3; i++) {\n setTimeout(function() {\n console.log(i); // bad\n }, 0);\n }'",
+ "markdown": "Reports access to outer mutable variables from functions.\n\nExample:\n\n\n for (var i = 1; i <= 3; i++) {\n setTimeout(function() {\n console.log(i); // bad\n }, 0);\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSReferencingMutableVariableFromClosure",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ConvertRequireIntoImport",
+ "shortDescription": {
+ "text": "'require()' is used instead of 'import'"
+ },
+ "fullDescription": {
+ "text": "Reports a 'require()' statement. Suggests converting it to a 'require()' call with an 'import' statement. Enable 'Convert require() inside inner scopes with Fix all action' to convert all 'require()' calls inside the nested functions and statements when using the 'Fix all' action. Please note that converting 'require()' statements inside inner scopes to 'import' statements may cause changes in the semantics of the code. Import statements are static module dependencies and are hoisted, which means that they are moved to the top of the current module. 'require()' calls load modules dynamically. They can be executed conditionally, and their scope is defined by the expression in which they are used. Clear the 'Convert require() inside inner scopes with Fix all action' checkbox to prevent any changes in these complex cases when using the 'Fix all' action.",
+ "markdown": "Reports a `require()` statement. Suggests converting it to a `require()` call with an `import` statement. \n\nEnable 'Convert require() inside inner scopes with Fix all action' to convert all `require()` calls inside the nested functions and statements when using the 'Fix all' action. \n\nPlease note that converting `require()` statements inside inner scopes to `import` statements may cause changes in the semantics of the code. Import statements are static module dependencies and are hoisted, which means that they are moved to the top of the current module. `require()` calls load modules dynamically. They can be executed conditionally, and their scope is defined by the expression in which they are used. \nClear the 'Convert require() inside inner scopes with Fix all action' checkbox to prevent any changes in these complex cases when using the 'Fix all' action."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ConvertRequireIntoImport",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnusedGlobalSymbols",
+ "shortDescription": {
+ "text": "Unused global symbol"
+ },
+ "fullDescription": {
+ "text": "Reports an unused globally accessible public function, variable, class, or property.",
+ "markdown": "Reports an unused globally accessible public function, variable, class, or property."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnusedGlobalSymbols",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Unused symbols",
+ "index": 117,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NestedConditionalExpressionJS",
+ "shortDescription": {
+ "text": "Nested conditional expression"
+ },
+ "fullDescription": {
+ "text": "Reports a ternary conditional expression within another ternary condition. Such nested conditionals may be extremely confusing, and best replaced by more explicit conditional logic.",
+ "markdown": "Reports a ternary conditional expression within another ternary condition. Such nested conditionals may be extremely confusing, and best replaced by more explicit conditional logic."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NestedConditionalExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6PossiblyAsyncFunction",
+ "shortDescription": {
+ "text": "'await' in non-async function"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of 'await' in a function that was possibly intended to be async but is actually missing the 'async' modifier. Although 'await' can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made 'async'.",
+ "markdown": "Reports a usage of `await` in a function that was possibly intended to be async but is actually missing the `async` modifier. Although `await` can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made `async`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6PossiblyAsyncFunction",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Async code and promises",
+ "index": 103,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FlowJSFlagCommentPlacement",
+ "shortDescription": {
+ "text": "Misplaced @flow flag"
+ },
+ "fullDescription": {
+ "text": "Reports a '@flow' flag comment that is not located at the top of a file.",
+ "markdown": "Reports a `@flow` flag comment that is not located at the top of a file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FlowJSFlagCommentPlacement",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Flow type checker",
+ "index": 118,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSMissingSwitchDefault",
+ "shortDescription": {
+ "text": "'switch' statement has no 'default' branch"
+ },
+ "fullDescription": {
+ "text": "Reports a 'switch' statement without a 'default' clause when some possible values are not enumerated.",
+ "markdown": "Reports a `switch` statement without a `default` clause when some possible values are not enumerated."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSMissingSwitchDefault",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSXNamespaceValidation",
+ "shortDescription": {
+ "text": "Missing JSX namespace"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a JSX construction without importing namespace. Having the namespace in the file scope ensures proper code compilation.",
+ "markdown": "Reports a usage of a JSX construction without importing namespace. Having the namespace in the file scope ensures proper code compilation."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSXNamespaceValidation",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Imports and dependencies",
+ "index": 120,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ReservedWordUsedAsNameJS",
+ "shortDescription": {
+ "text": "Reserved word used as name"
+ },
+ "fullDescription": {
+ "text": "Reports a JavaScript reserved word used as a name. The JavaScript specification reserves a number of words which are currently not used as keywords. Using those words as identifiers may result in broken code if later versions of JavaScript start using them as keywords.",
+ "markdown": "Reports a JavaScript reserved word used as a name. The JavaScript specification reserves a number of words which are currently not used as keywords. Using those words as identifiers may result in broken code if later versions of JavaScript start using them as keywords."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ReservedWordAsName",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IncrementDecrementResultUsedJS",
+ "shortDescription": {
+ "text": "Result of increment or decrement used"
+ },
+ "fullDescription": {
+ "text": "Reports an increment ('++') or decrement ('--') expression where the result of the assignment is used in a containing expression. Such assignments can result in confusion due to the order of operations, as evaluation of the assignment may affect the outer expression in unexpected ways. Example: 'var a = b++'",
+ "markdown": "Reports an increment (`++`) or decrement (`--`) expression where the result of the assignment is used in a containing expression. Such assignments can result in confusion due to the order of operations, as evaluation of the assignment may affect the outer expression in unexpected ways. Example: `var a = b++`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IncrementDecrementResultUsedJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SuspiciousTypeOfGuard",
+ "shortDescription": {
+ "text": "Unsound type guard check"
+ },
+ "fullDescription": {
+ "text": "Reports a 'typeof' or 'instanceof' unsound type guard check. The 'typeof x' type guard can be unsound in one of the following two cases: 'typeof x' never corresponds to the specified value (for example, 'typeof x === 'number'' when 'x' is of the type 'string | boolean') 'typeof x' always corresponds to the specified value (for example, 'typeof x === 'string'' when 'x' is of the type 'string') The 'x instanceof A' type guard can be unsound in one of the following two cases: The type of 'x' is not related to 'A' The type of 'x' is 'A' or a subtype of 'A'",
+ "markdown": "Reports a `typeof` or `instanceof` unsound type guard check. The `typeof x` type guard can be unsound in one of the following two cases:\n\n* `typeof x` never corresponds to the specified value (for example, `typeof x === 'number'` when `x` is of the type 'string \\| boolean')\n* `typeof x` always corresponds to the specified value (for example, `typeof x === 'string'` when `x` is of the type 'string')\n\nThe `x instanceof A` type guard can be unsound in one of the following two cases:\n\n* The type of `x` is not related to `A`\n* The type of `x` is `A` or a subtype of `A`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SuspiciousTypeOfGuard",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LoopStatementThatDoesntLoopJS",
+ "shortDescription": {
+ "text": "Loop statement that doesn't loop"
+ },
+ "fullDescription": {
+ "text": "Reports a 'for', 'while', or 'do' statement whose bodies are guaranteed to execute at most once. Normally, this indicates an error.",
+ "markdown": "Reports a `for`, `while`, or `do` statement whose bodies are guaranteed to execute at most once. Normally, this indicates an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LoopStatementThatDoesntLoopJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSNonASCIINames",
+ "shortDescription": {
+ "text": "Identifiers with non-ASCII symbols"
+ },
+ "fullDescription": {
+ "text": "Reports a non-ASCII symbol in a name. If the 'Allow only ASCII names' option is selected, reports all names that contain non-ASCII symbols. Otherwise reports all names that contain both ASCII and non-ASCII symbols.",
+ "markdown": "Reports a non-ASCII symbol in a name. \n\nIf the 'Allow only ASCII names' option is selected, reports all names that contain non-ASCII symbols. \nOtherwise reports all names that contain both ASCII and non-ASCII symbols."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSNonASCIINames",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Naming conventions",
+ "index": 104,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6MissingAwait",
+ "shortDescription": {
+ "text": "Missing await for an async function call"
+ },
+ "fullDescription": {
+ "text": "Reports an 'async' function call without an expected 'await' prefix inside an 'async' function. Such call returns a 'Promise' and control flow is continued immediately. Example: 'async function bar() { /* ... */ }\nasync function foo() {\n bar(); // bad\n}' After the quick-fix is applied, the 'await' prefix is added: 'async function bar() { /* ... */ }\nasync function foo() {\n await bar(); // good\n}' When the 'Report for promises in return statements' checkbox is selected, also suggests adding 'await' in return statements. While this is generally not necessary, it gives two main benefits. You won't forget to add 'await' when surrounding your code with 'try-catch'. An explicit 'await' helps V8 runtime to provide async stack traces.",
+ "markdown": "Reports an `async` function call without an expected `await` prefix inside an `async` function. Such call returns a `Promise` and control flow is continued immediately.\n\nExample:\n\n\n async function bar() { /* ... */ }\n async function foo() {\n bar(); // bad\n }\n\n\nAfter the quick-fix is applied, the `await` prefix is added:\n\n\n async function bar() { /* ... */ }\n async function foo() {\n await bar(); // good\n }\n\nWhen the 'Report for promises in return statements' checkbox is selected, also suggests adding `await` in return statements. \nWhile this is generally not necessary, it gives two main benefits. \n\n* You won't forget to add `await` when surrounding your code with `try-catch`.\n* An explicit `await` helps V8 runtime to provide [async stack traces](https://bit.ly/v8-zero-cost-async-stack-traces)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6MissingAwait",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Async code and promises",
+ "index": 103,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TailRecursionJS",
+ "shortDescription": {
+ "text": "Tail recursion"
+ },
+ "fullDescription": {
+ "text": "Reports a tail recursion, that is, when a function calls itself as its last action before returning. A tail recursion can always be replaced by looping, which will be considerably faster. Some JavaScript engines perform this optimization, while others do not. Thus, tail recursive solutions may have considerably different performance characteristics in different environments.",
+ "markdown": "Reports a tail recursion, that is, when a function calls itself as its last action before returning. A tail recursion can always be replaced by looping, which will be considerably faster. Some JavaScript engines perform this optimization, while others do not. Thus, tail recursive solutions may have considerably different performance characteristics in different environments."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TailRecursionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConfusingPlusesOrMinusesJS",
+ "shortDescription": {
+ "text": "Confusing sequence of '+' or '-'"
+ },
+ "fullDescription": {
+ "text": "Reports a suspicious combination of '+' or '-' characters in JavaScript code (for example, 'a+++b'. Such sequences are confusing, and their semantics may change through changes in the whitespace.",
+ "markdown": "Reports a suspicious combination of `+` or `-` characters in JavaScript code (for example, `a+++b`. Such sequences are confusing, and their semantics may change through changes in the whitespace."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConfusingPlusesOrMinusesJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptConfig",
+ "shortDescription": {
+ "text": "Inconsistent tsconfig.json properties"
+ },
+ "fullDescription": {
+ "text": "Reports inconsistency of a 'paths', 'checkJs', or 'extends' property in a tsconfig.json file. The 'checkJs' property requires 'allowJs'. The 'extends' property should be a valid file reference.",
+ "markdown": "Reports inconsistency of a `paths`, `checkJs`, or `extends` property in a tsconfig.json file. \nThe `checkJs` property requires `allowJs`. \nThe `extends` property should be a valid file reference."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TypeScriptConfig",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "OverlyComplexBooleanExpressionJS",
+ "shortDescription": {
+ "text": "Overly complex boolean expression"
+ },
+ "fullDescription": {
+ "text": "Reports a boolean expression with too many terms. Such expressions may be confusing and bug-prone. Use the field below to specify the maximum number of terms allowed in an arithmetic expression.",
+ "markdown": "Reports a boolean expression with too many terms. Such expressions may be confusing and bug-prone.\n\n\nUse the field below to specify the maximum number of terms allowed in an arithmetic expression."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "OverlyComplexBooleanExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "OverlyComplexArithmeticExpressionJS",
+ "shortDescription": {
+ "text": "Overly complex arithmetic expression"
+ },
+ "fullDescription": {
+ "text": "Reports an arithmetic expression with too many terms. Such expressions may be confusing and bug-prone. Use the field below to specify the maximum number of terms allowed in an arithmetic expression.",
+ "markdown": "Reports an arithmetic expression with too many terms. Such expressions may be confusing and bug-prone.\n\n\nUse the field below to specify the maximum number of terms allowed in an arithmetic expression."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "OverlyComplexArithmeticExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DuplicateConditionJS",
+ "shortDescription": {
+ "text": "Duplicate condition in 'if' statement"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate conditions in different branches of an 'if' statement. Duplicate conditions usually represent programmer oversight. Example: 'if (a) {\n ...\n } else if (a) {\n ...\n }'",
+ "markdown": "Reports duplicate conditions in different branches of an `if` statement. Duplicate conditions usually represent programmer oversight.\n\nExample:\n\n\n if (a) {\n ...\n } else if (a) {\n ...\n }\n\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DuplicateConditionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryLabelJS",
+ "shortDescription": {
+ "text": "Unnecessary label"
+ },
+ "fullDescription": {
+ "text": "Reports an unused label.",
+ "markdown": "Reports an unused label."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnnecessaryLabelJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "InnerHTMLJS",
+ "shortDescription": {
+ "text": "Use of 'innerHTML' property"
+ },
+ "fullDescription": {
+ "text": "Reports a JavaScript access to DOM nodes as text using the 'innerHTML' property. Most usages of 'innerHTML' are performed better with explicit DOM calls, such as 'getElementByID()' and 'createElement()'. Additionally, 'innerHTML' will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can lead to difficulties in diagnosing bugs.",
+ "markdown": "Reports a JavaScript access to DOM nodes as text using the `innerHTML` property. Most usages of `innerHTML` are performed better with explicit DOM calls, such as `getElementByID()` and `createElement()`. Additionally, `innerHTML` will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can lead to difficulties in diagnosing bugs."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "InnerHTMLJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/DOM issues",
+ "index": 51,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6UnusedImports",
+ "shortDescription": {
+ "text": "Unused import"
+ },
+ "fullDescription": {
+ "text": "Reports a redundant 'import' statement. This is usually the case if the imported symbols are not used in the source file. To avoid side-effects, consider using bare import 'import 'packageName'' instead of the regular one.",
+ "markdown": "Reports a redundant `import` statement. This is usually the case if the imported symbols are not used in the source file. To avoid side-effects, consider using bare import `import 'packageName'` instead of the regular one."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ES6UnusedImports",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Imports and dependencies",
+ "index": 120,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSAssignmentUsedAsCondition",
+ "shortDescription": {
+ "text": "Assignment used as condition"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment that is used as the condition of an 'if', 'while', 'for', or 'do' statement. Although occasionally intended, this usage is confusing, and often indicates a typo (for example, '=' instead of '==').",
+ "markdown": "Reports an assignment that is used as the condition of an `if`, `while`, `for`, or `do` statement. Although occasionally intended, this usage is confusing, and often indicates a typo (for example, `=` instead of `==`)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSAssignmentUsedAsCondition",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ForLoopReplaceableByWhileJS",
+ "shortDescription": {
+ "text": "'for' loop may be replaced by 'while' loop"
+ },
+ "fullDescription": {
+ "text": "Reports a 'for' loop that contains neither initialization nor an update component. Suggests replacing the loop with a simpler 'while' statement. Example: 'for(; exitCondition(); ) {\n process();\n }' After the quick-fix is applied the result looks like: 'while(exitCondition()) {\n process();\n }' Use the checkbox below if you wish this inspection to ignore for loops with trivial or non-existent conditions.",
+ "markdown": "Reports a `for` loop that contains neither initialization nor an update component. Suggests replacing the loop with a simpler `while` statement.\n\nExample:\n\n\n for(; exitCondition(); ) {\n process();\n }\n\nAfter the quick-fix is applied the result looks like:\n\n\n while(exitCondition()) {\n process();\n }\n\nUse the checkbox below if you wish this inspection to ignore **for** loops with trivial or non-existent conditions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ForLoopReplaceableByWhile",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConstantConditionalExpressionJS",
+ "shortDescription": {
+ "text": "Constant conditional expression"
+ },
+ "fullDescription": {
+ "text": "Reports a conditional expression in the format 'true? result1: result2' or 'false? result1: result2. Suggests simplifying the expression.'",
+ "markdown": "Reports a conditional expression in the format `true? result1: result2` or `false? result1: result2``.\nSuggests simplifying the expression.\n`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConstantConditionalExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NonBlockStatementBodyJS",
+ "shortDescription": {
+ "text": "Statement body without braces"
+ },
+ "fullDescription": {
+ "text": "Reports a 'if', 'while', 'for', or 'with' statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance.",
+ "markdown": "Reports a `if`, `while`, `for`, or `with` statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NonBlockStatementBodyJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSValidateJSDoc",
+ "shortDescription": {
+ "text": "Syntax errors and unresolved references in JSDoc"
+ },
+ "fullDescription": {
+ "text": "Reports a syntax discrepancy in a documentation comment.",
+ "markdown": "Reports a syntax discrepancy in a documentation comment."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSValidateJSDoc",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FlowJSConfig",
+ "shortDescription": {
+ "text": "Missing .flowconfig"
+ },
+ "fullDescription": {
+ "text": "Reports a JavaScript file with a '@flow' flag that doesn't have an associated '.flowconfig' file in the project.",
+ "markdown": "Reports a JavaScript file with a `@flow` flag that doesn't have an associated `.flowconfig` file in the project."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FlowJSConfig",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Flow type checker",
+ "index": 118,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptValidateTypes",
+ "shortDescription": {
+ "text": "Type mismatch"
+ },
+ "fullDescription": {
+ "text": "Reports a parameter, return value, or assigned expression of incorrect type.",
+ "markdown": "Reports a parameter, return value, or assigned expression of incorrect type."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "TypeScriptValidateTypes",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSObjectNullOrUndefined",
+ "shortDescription": {
+ "text": "Object is 'null' or 'undefined'"
+ },
+ "fullDescription": {
+ "text": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is 'undefined' or 'null'.",
+ "markdown": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is `undefined` or `null`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSObjectNullOrUndefined",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PointlessArithmeticExpressionJS",
+ "shortDescription": {
+ "text": "Pointless arithmetic expression"
+ },
+ "fullDescription": {
+ "text": "Reports an arithmetic expression that include adding or subtracting zero, multiplying by zero or one, division by one, and shift by zero. Such expressions may result from not fully completed automated refactoring.",
+ "markdown": "Reports an arithmetic expression that include adding or subtracting zero, multiplying by zero or one, division by one, and shift by zero. Such expressions may result from not fully completed automated refactoring."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PointlessArithmeticExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptSmartCast",
+ "shortDescription": {
+ "text": "Narrowed type"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a variable where the variable type is narrowed by a type guard. Note that severity level doesn't affect this inspection.",
+ "markdown": "Reports a usage of a variable where the variable type is narrowed by a type guard. Note that severity level doesn't affect this inspection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TypeScriptSmartCast",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSAccessibilityCheck",
+ "shortDescription": {
+ "text": "Inaccessible @private and @protected members referenced"
+ },
+ "fullDescription": {
+ "text": "Reports a reference to a JavaScript member that is marked with a '@private' or '@protected' tag but does not comply with visibility rules that these tags imply.",
+ "markdown": "Reports a reference to a JavaScript member that is marked with a `@private` or `@protected` tag but does not comply with visibility rules that these tags imply."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSAccessibilityCheck",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FunctionWithMultipleLoopsJS",
+ "shortDescription": {
+ "text": "Function with multiple loops"
+ },
+ "fullDescription": {
+ "text": "Reports a function with multiple loop statements.",
+ "markdown": "Reports a function with multiple loop statements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FunctionWithMultipleLoopsJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NpmUsedModulesInstalled",
+ "shortDescription": {
+ "text": "Missing module dependency"
+ },
+ "fullDescription": {
+ "text": "Reports a module from a 'require()' call or an 'import' statement that is not installed or is not listed in package.json dependencies. Suggests installing the module and/or including it into package.json. For 'require()' calls, works only in the files from the scope of Node.js Core JavaScript library.",
+ "markdown": "Reports a module from a `require()` call or an `import` statement that is not installed or is not listed in package.json dependencies.\n\nSuggests installing the module and/or including it into package.json.\n\nFor `require()` calls, works only in the files from the scope of *Node.js Core* JavaScript library."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "NpmUsedModulesInstalled",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Imports and dependencies",
+ "index": 120,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "FunctionNamingConventionJS",
+ "shortDescription": {
+ "text": "Function naming convention"
+ },
+ "fullDescription": {
+ "text": "Reports a function whose name is too short, too long, or does not follow the specified regular expression pattern. Use the fields provided below to specify minimum length, maximum length, and a regular expression for function names. Use the standard 'java.util.regex' format for regular expressions.",
+ "markdown": "Reports a function whose name is too short, too long, or does not follow the specified regular expression pattern.\n\n\nUse the fields provided below to specify minimum length, maximum length, and a regular expression\nfor function names. Use the standard `java.util.regex` format for regular expressions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FunctionNamingConventionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Naming conventions",
+ "index": 104,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ObjectAllocationIgnoredJS",
+ "shortDescription": {
+ "text": "Result of object allocation ignored"
+ },
+ "fullDescription": {
+ "text": "Reports object allocation where the result of the allocated object is ignored, for example, 'new Error();' as a statement, without any assignment. Such allocation expressions may indicate an odd object initialization strategy.",
+ "markdown": "Reports object allocation where the result of the allocated object is ignored, for example, `new Error();` as a statement, without any assignment. Such allocation expressions may indicate an odd object initialization strategy."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ObjectAllocationIgnored",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSHint",
+ "shortDescription": {
+ "text": "JSHint"
+ },
+ "fullDescription": {
+ "text": "Reports a problem detected by the JSHint linter.",
+ "markdown": "Reports a problem detected by the [JSHint](https://jshint.com/) linter."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JSHint",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code quality tools",
+ "index": 69,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ExceptionCaughtLocallyJS",
+ "shortDescription": {
+ "text": "Exception used for local control-flow"
+ },
+ "fullDescription": {
+ "text": "Reports a 'throw' statement whose exceptions are always caught by the containing 'try' statement. Using 'throw' statements as a 'goto' to change the local flow of control is confusing.",
+ "markdown": "Reports a `throw` statement whose exceptions are always caught by the containing `try` statement. Using `throw` statements as a `goto` to change the local flow of control is confusing."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ExceptionCaughtLocallyJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CyclomaticComplexityJS",
+ "shortDescription": {
+ "text": "Overly complex function"
+ },
+ "fullDescription": {
+ "text": "Reports a function with too many branching points in a function (too high cyclomatic complexity). Such functions may be confusing and hard to test. Use the field provided below to specify the maximum acceptable cyclomatic complexity for a function.",
+ "markdown": "Reports a function with too many branching points in a function (too high cyclomatic complexity). Such functions may be confusing and hard to test.\n\n\nUse the field provided below to specify the maximum acceptable cyclomatic complexity for a function."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "OverlyComplexFunctionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptJSXUnresolvedComponent",
+ "shortDescription": {
+ "text": "Unresolved JSX component"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference to a JSX component. Suggests adding an import statement if the referenced component is defined in the project or its dependencies or creating a new component with the specified name. The template for a new component can be modified in Editor | File and Code Templates.",
+ "markdown": "Reports an unresolved reference to a JSX component. Suggests adding an import statement if the referenced component is defined in the project or its dependencies or creating a new component with the specified name.\n\nThe template for a new component can be modified in Editor \\| File and Code Templates."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptJSXUnresolvedComponent",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnfilteredForInLoop",
+ "shortDescription": {
+ "text": "Unfiltered for..in loop"
+ },
+ "fullDescription": {
+ "text": "Reports unfiltered 'for-in' loops. The use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when 'Object''s prototype may be incorrectly modified. For example, the following code will print 42 and myMethod: 'Object.prototype.myMethod = function myMethod() {};\nlet a = { foo: 42 };\nfor (let i in a) {\n console.log(a[i]);\n}' Suggests replacing the whole loop with a 'Object.keys()' method or adding a 'hasOwnProperty()' check. After applying the quick-fix the code looks as follows: 'for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n}'",
+ "markdown": "Reports unfiltered `for-in` loops. \n\nThe use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when `Object`'s prototype may be incorrectly modified. For example, the following code will print **42** and **myMethod** : \n\n\n Object.prototype.myMethod = function myMethod() {};\n let a = { foo: 42 };\n for (let i in a) {\n console.log(a[i]);\n }\n\nSuggests replacing the whole loop with a `Object.keys()` method or adding a `hasOwnProperty()` check. After applying the quick-fix the code looks as follows:\n\n\n for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnfilteredForInLoop",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSFunctionExpressionToArrowFunction",
+ "shortDescription": {
+ "text": "Function expression is used instead of arrow function"
+ },
+ "fullDescription": {
+ "text": "Reports a function expression. Suggests converting it to an arrow function. Example: 'arr.map(function(el) {return el + 1})' After applying the quick-fix the code looks as follows: 'arr.map(el => el + 1)'",
+ "markdown": "Reports a [function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function) expression. Suggests converting it to an [arrow function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions).\n\nExample:\n\n arr.map(function(el) {return el + 1})\n\nAfter applying the quick-fix the code looks as follows:\n\n arr.map(el => el + 1)\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSFunctionExpressionToArrowFunction",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UpdateDependencyToLatestVersion",
+ "shortDescription": {
+ "text": "Update package.json dependencies to latest versions"
+ },
+ "fullDescription": {
+ "text": "Suggests to upgrade your package.json dependencies to the latest versions, ignoring specified versions.",
+ "markdown": "Suggests to upgrade your package.json dependencies to the latest versions, ignoring specified versions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "UpdateDependencyToLatestVersion",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Imports and dependencies",
+ "index": 120,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AssignmentResultUsedJS",
+ "shortDescription": {
+ "text": "Result of assignment used"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment expression where the result of the assignment is used in the containing expression. Such assignments often indicate coding errors, for example, '=' instead of '=='. Moreover, they can result in confusion due to the order of operations, as evaluation of the assignment may affect the outer expression in unexpected ways. Expressions in parentheses are ignored.",
+ "markdown": "Reports an assignment expression where the result of the assignment is used in the containing expression. Such assignments often indicate coding errors, for example, `=` instead of `==`. Moreover, they can result in confusion due to the order of operations, as evaluation of the assignment may affect the outer expression in unexpected ways.\n\nExpressions in parentheses are ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AssignmentResultUsedJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConstantOnRHSOfComparisonJS",
+ "shortDescription": {
+ "text": "Constant on right side of comparison"
+ },
+ "fullDescription": {
+ "text": "Reports a comparison operation with a constant in the right-hand side. According to coding conventions, constants should only be in the left-hand side of comparisons.",
+ "markdown": "Reports a comparison operation with a constant in the right-hand side. According to coding conventions, constants should only be in the left-hand side of comparisons."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConstantOnRightSideOfComparisonJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnnecessarySemicolon",
+ "shortDescription": {
+ "text": "Unnecessary semicolon"
+ },
+ "fullDescription": {
+ "text": "Reports an unneeded semicolon.",
+ "markdown": "Reports an unneeded semicolon."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnnecessarySemicolon",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSSuspiciousEqPlus",
+ "shortDescription": {
+ "text": "Suspicious '=+' assignment"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment in the form 'a =+ b'. Suggests replacing with 'a += b'.",
+ "markdown": "Reports an assignment in the form `a =+ b`. Suggests replacing with `a += b`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSSuspiciousEqPlus",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnusedAssignment",
+ "shortDescription": {
+ "text": "Unused assignment"
+ },
+ "fullDescription": {
+ "text": "Reports a variable whose value is never used after assignment. Suggests removing the unused variable to shorten the code and to avoid redundant allocations. The following cases are reported: A variable is never read after assignment. The value of a variable is always overwritten with another assignment before the variable is read next time. The initializer of a variable is redundant (for one of the above-mentioned reasons).",
+ "markdown": "Reports a variable whose value is never used after assignment. \nSuggests removing the unused variable to shorten the code and to avoid redundant allocations.\n\nThe following cases are reported:\n\n* A variable is never read after assignment.\n* The value of a variable is always overwritten with another assignment before the variable is read next time.\n* The initializer of a variable is redundant (for one of the above-mentioned reasons)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnusedAssignment",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Unused symbols",
+ "index": 117,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConfusingFloatingPointLiteralJS",
+ "shortDescription": {
+ "text": "Confusing floating point literal"
+ },
+ "fullDescription": {
+ "text": "Reports any floating point number that does not have a decimal point, or any numbers before the decimal point, or and numbers after the decimal point. Such literals may be confusing, and violate several coding standards.",
+ "markdown": "Reports any floating point number that does not have a decimal point, or any numbers before the decimal point, or and numbers after the decimal point. Such literals may be confusing, and violate several coding standards."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConfusingFloatingPointLiteralJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ContinueOrBreakFromFinallyBlockJS",
+ "shortDescription": {
+ "text": "'continue' or 'break' inside 'finally' block"
+ },
+ "fullDescription": {
+ "text": "Reports a 'break' or 'continue' statement inside a 'finally' block. Such statements are very confusing, may hide exceptions, and complicate debugging.",
+ "markdown": "Reports a `break` or `continue` statement inside a `finally` block. Such statements are very confusing, may hide exceptions, and complicate debugging."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ContinueOrBreakFromFinallyBlockJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSMethodCanBeStatic",
+ "shortDescription": {
+ "text": "Method can be made 'static'"
+ },
+ "fullDescription": {
+ "text": "Reports a class method that can be safely made 'static'. A method can be 'static' if it does not reference any of its class' non-static methods and non-static fields and is not overridden in a subclass. Use the first checkbox below to inspect only 'private' methods.",
+ "markdown": "Reports a class method that can be safely made `static`. A method can be `static` if it does not reference any of its class' non-static methods and non-static fields and is not overridden in a subclass.\n\n\nUse the first checkbox below to inspect only `private` methods."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSMethodCanBeStatic",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUndeclaredVariable",
+ "shortDescription": {
+ "text": "Implicitly declared global JavaScript variable"
+ },
+ "fullDescription": {
+ "text": "Reports an implicit declaration of a global variable. Example: 'var aaa = 1; // good\n bbb = 2; // bad, if bbb is not declared with 'var' somewhere'",
+ "markdown": "Reports an implicit declaration of a global variable.\n\nExample:\n\n\n var aaa = 1; // good\n bbb = 2; // bad, if bbb is not declared with 'var' somewhere\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSUndeclaredVariable",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SillyAssignmentJS",
+ "shortDescription": {
+ "text": "Variable is assigned to itself"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment in the form 'x = x'.",
+ "markdown": "Reports an assignment in the form `x = x`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SillyAssignmentJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptCheckImport",
+ "shortDescription": {
+ "text": "Unresolved imported name"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved name or binding in an 'import' declaration in TypeScript code.",
+ "markdown": "Reports an unresolved name or binding in an `import` declaration in TypeScript code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "TypeScriptCheckImport",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "InfiniteRecursionJS",
+ "shortDescription": {
+ "text": "Infinite recursion"
+ },
+ "fullDescription": {
+ "text": "Reports a function which must either recurse infinitely or throw an exception. Such functions may not return normally.",
+ "markdown": "Reports a function which must either recurse infinitely or throw an exception. Such functions may not return normally."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "InfiniteRecursionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSMismatchedCollectionQueryUpdate",
+ "shortDescription": {
+ "text": "Mismatched query and update of collection"
+ },
+ "fullDescription": {
+ "text": "Reports a collection of fields or variables whose contents are either queried and not updated or updated and not queried. Such mismatched queries and updates are pointless and may indicate either dead code or a typographical error. Query methods are automatically detected, based on whether they return something, or a callback is passed to them. Use the table below to specify which methods are update methods.",
+ "markdown": "Reports a collection of fields or variables whose contents are either queried and not updated or updated and not queried. Such mismatched queries and updates are pointless and may indicate either dead code or a typographical error.\n\n\nQuery methods are automatically detected, based on whether they return something, or a callback is passed to them.\nUse the table below to specify which methods are update methods."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSMismatchedCollectionQueryUpdate",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6PreferShortImport",
+ "shortDescription": {
+ "text": "Import can be shortened"
+ },
+ "fullDescription": {
+ "text": "Reports an ES6 import whose 'from' part can be shortened. Suggests importing the parent directory.",
+ "markdown": "Reports an ES6 import whose `from` part can be shortened. Suggests importing the parent directory."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ES6PreferShortImport",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PointlessBitwiseExpressionJS",
+ "shortDescription": {
+ "text": "Bitwise expression can be simplified"
+ },
+ "fullDescription": {
+ "text": "Reports an expression that includes 'and' with zero, 'or' by zero, or shifting by zero. Such expressions may result from not fully completed automated refactorings.",
+ "markdown": "Reports an expression that includes `and` with zero, `or` by zero, or shifting by zero. Such expressions may result from not fully completed automated refactorings."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PointlessBitwiseExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Bitwise operation issues",
+ "index": 15,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSStringConcatenationToES6Template",
+ "shortDescription": {
+ "text": "String concatenation is used instead of template literal"
+ },
+ "fullDescription": {
+ "text": "Reports a string concatenation. Suggests replacing it with a template literal Example '\"result: \" + a + \".\"' After applying the quick-fix the code looks as follows: '`result: ${a}.`'",
+ "markdown": "Reports a string concatenation. Suggests replacing it with a [template literal](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)\n\nExample\n\n \"result: \" + a + \".\" \n\nAfter applying the quick-fix the code looks as follows:\n\n `result: ${a}.` \n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSStringConcatenationToES6Template",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ReplaceAssignmentWithOperatorAssignmentJS",
+ "shortDescription": {
+ "text": "Assignment could be replaced with operator assignment"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment operation that can be replaced by an operator assignment to make your code shorter and probably clearer. Example: 'x = x + 3;'\n 'x = x / 3;'\n After the quick fix is applied the result looks like: 'x += 3;'\n 'x /= 3;'",
+ "markdown": "Reports an assignment operation that can be replaced by an operator assignment to make your code shorter and probably clearer.\n\n\nExample:\n\n x = x + 3;\n x = x / 3;\n\nAfter the quick fix is applied the result looks like:\n\n x += 3;\n x /= 3;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AssignmentReplaceableWithOperatorAssignmentJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6DestructuringVariablesMerge",
+ "shortDescription": {
+ "text": "Destructuring properties with the same key"
+ },
+ "fullDescription": {
+ "text": "Reports multiple destructuring properties with identical keys. Suggests merging the properties.",
+ "markdown": "Reports multiple destructuring properties with identical keys. Suggests merging the properties."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6DestructuringVariablesMerge",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptRedundantGenericType",
+ "shortDescription": {
+ "text": "Redundant type arguments"
+ },
+ "fullDescription": {
+ "text": "Reports a type argument that is equal to the default one and can be removed. Example: 'type Foo = T;\nlet z: Foo;'",
+ "markdown": "Reports a type argument that is equal to the default one and can be removed.\n\n\nExample:\n\n\n type Foo = T;\n let z: Foo;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptRedundantGenericType",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSLastCommaInObjectLiteral",
+ "shortDescription": {
+ "text": "Unneeded last comma in object literal"
+ },
+ "fullDescription": {
+ "text": "Reports usages of a trailing comma in object literals. The warning is reported only when the JavaScript language version is set to ECMAScript 5.1. Trailing commas in object literals are allowed by the specification, however, some browsers might throw an error when a trailing comma is used. You can configure formatting options for trailing commas in Code Style | JavaScript or TypeScript | Punctuation.",
+ "markdown": "Reports usages of a trailing comma in object literals.\n\nThe warning is reported only when the JavaScript language version is set to ECMAScript 5.1.\n\nTrailing commas in object literals are allowed by the specification, however, some browsers might throw an error when a trailing comma is used.\n\nYou can configure formatting options for trailing commas in **Code Style** \\| **JavaScript** or **TypeScript** \\| **Punctuation**."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSLastCommaInObjectLiteral",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NestedAssignmentJS",
+ "shortDescription": {
+ "text": "Nested assignment"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment expression nested inside another expression, for example, 'a = b = 1'. Such expressions may be confusing and violate the general design principle that a given construct should do precisely one thing.",
+ "markdown": "Reports an assignment expression nested inside another expression, for example, `a = b = 1`. Such expressions may be confusing and violate the general design principle that a given construct should do precisely one thing."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NestedAssignmentJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DefaultNotLastCaseInSwitchJS",
+ "shortDescription": {
+ "text": "'default' not last case in 'switch'"
+ },
+ "fullDescription": {
+ "text": "Reports a 'switch' statement where the 'default' case comes before another case instead of being the very last case, which may cause confusion.",
+ "markdown": "Reports a `switch` statement where the `default` case comes before another case instead of being the very last case, which may cause confusion."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DefaultNotLastCaseInSwitchJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EmptyFinallyBlockJS",
+ "shortDescription": {
+ "text": "Empty 'finally' block"
+ },
+ "fullDescription": {
+ "text": "Reports an empty 'finally' block, which usually indicates an error.",
+ "markdown": "Reports an empty `finally` block, which usually indicates an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EmptyFinallyBlockJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ForLoopThatDoesntUseLoopVariableJS",
+ "shortDescription": {
+ "text": "'for' loop where update or condition does not use loop variable"
+ },
+ "fullDescription": {
+ "text": "Reports a 'for' loop where the condition or update does not use the 'for' loop variable.",
+ "markdown": "Reports a `for` loop where the condition or update does not use the `for` loop variable."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ForLoopThatDoesntUseLoopVariableJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptAbstractClassConstructorCanBeMadeProtected",
+ "shortDescription": {
+ "text": "Abstract class constructor can be made protected"
+ },
+ "fullDescription": {
+ "text": "Reports a public constructor of an abstract class and suggests making it protected (because it is useless to have it public).",
+ "markdown": "Reports a public constructor of an abstract class and suggests making it protected (because it is useless to have it public)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptAbstractClassConstructorCanBeMadeProtected",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ThreeNegationsPerFunctionJS",
+ "shortDescription": {
+ "text": "Function with more than three negations"
+ },
+ "fullDescription": {
+ "text": "Reports a function with three or more negation operations ('!' or '!='). Such functions may be unnecessarily confusing.",
+ "markdown": "Reports a function with three or more negation operations (`!` or `!=`). Such functions may be unnecessarily confusing."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FunctionWithMoreThanThreeNegationsJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TrivialIfJS",
+ "shortDescription": {
+ "text": "Redundant 'if' statement"
+ },
+ "fullDescription": {
+ "text": "Reports an 'if' statement that can be simplified to a single assignment or a 'return' statement. Example: 'if(foo())\n {\n return true;\n }\n else\n {\n return false;\n }' After applying the quick-fix the code looks as follows: 'return foo();'",
+ "markdown": "Reports an `if` statement that can be simplified to a single assignment or a `return` statement.\n\nExample:\n\n\n if(foo())\n {\n return true;\n }\n else\n {\n return false;\n }\n\nAfter applying the quick-fix the code looks as follows:\n\n return foo();\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RedundantIfStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnterminatedStatementJS",
+ "shortDescription": {
+ "text": "Unterminated statement"
+ },
+ "fullDescription": {
+ "text": "Reports a statement without a semicolon or a newline at the end. Select the 'Terminate statements with semicolons' option in Editor | Code Style | JavaScript or TypeScript - Punctuation to report any statement that doesn't end with a semicolon, even if a newline is used. According to some coding styles, semicolons are preferred to line-breaks for consistency with the other languages.",
+ "markdown": "Reports a statement without a semicolon or a newline at the end.\n\nSelect the 'Terminate statements with semicolons' option in *Editor \\| Code Style \\| JavaScript or TypeScript - Punctuation* to report any statement that doesn't end with a semicolon, even if a newline is used.\nAccording to some coding styles, semicolons are preferred to line-breaks for consistency with the other languages."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnterminatedStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnreachableSwitchBranches",
+ "shortDescription": {
+ "text": "Unreachable 'case' branch of a 'switch' statement"
+ },
+ "fullDescription": {
+ "text": "Reports an unreachable 'case' branch of a 'switch' statement. Example: '/**\n * @param {('foo' | 'bar')} p\n */\nfunction foo(p) {\n switch (p) {\n case 'foo': break;\n case 'bar': break;\n case 'baz': break; // unreachable\n }\n}'",
+ "markdown": "Reports an unreachable `case` branch of a `switch` statement.\n\nExample:\n\n\n /**\n * @param {('foo' | 'bar')} p\n */\n function foo(p) {\n switch (p) {\n case 'foo': break;\n case 'bar': break;\n case 'baz': break; // unreachable\n }\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnreachableSwitchBranches",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TrivialConditionalJS",
+ "shortDescription": {
+ "text": "Redundant conditional expression"
+ },
+ "fullDescription": {
+ "text": "Reports a conditional expression of the form 'condition ? true : false\ncondition ? false : true' These expressions may be safely converted to 'condition\n!condition'",
+ "markdown": "Reports a conditional expression of the form\n\n\n condition ? true : false\n condition ? false : true\n\n\nThese expressions may be safely converted to\n\n\n condition\n !condition\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RedundantConditionalExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSTestFailedLine",
+ "shortDescription": {
+ "text": "Highlight failure line in test code"
+ },
+ "fullDescription": {
+ "text": "Reports a failed method call or an assertion in a test.",
+ "markdown": "Reports a failed method call or an assertion in a test."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSTestFailedLine",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Unit testing",
+ "index": 140,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IfStatementWithTooManyBranchesJS",
+ "shortDescription": {
+ "text": "'if' statement with too many branches"
+ },
+ "fullDescription": {
+ "text": "Reports an 'if' statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction. Use the field below to specify the maximum number of branches expected.",
+ "markdown": "Reports an `if` statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction.\n\n\nUse the field below to specify the maximum number of branches expected."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IfStatementWithTooManyBranchesJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "BreakStatementJS",
+ "shortDescription": {
+ "text": "'break' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'break' statements. Ignores 'break' statements that end case blocks.",
+ "markdown": "Reports a `break` statements. Ignores `break` statements that end case blocks."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "BreakStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DebuggerStatementJS",
+ "shortDescription": {
+ "text": "'debugger' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'debugger' statement used for interaction with the Javascript debuggers. Such statements should not appear in production code.",
+ "markdown": "Reports a `debugger` statement used for interaction with the Javascript debuggers. Such statements should not appear in production code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DebuggerStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AssignmentToForLoopParameterJS",
+ "shortDescription": {
+ "text": "Assignment to 'for' loop parameter"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment to a variable declared as a 'for' loop parameter. Although occasionally intended, this construct can be extremely confusing, and is often a result of an error.",
+ "markdown": "Reports an assignment to a variable declared as a `for` loop parameter. Although occasionally intended, this construct can be extremely confusing, and is often a result of an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AssignmentToForLoopParameterJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Assignment issues",
+ "index": 108,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ConditionalExpressionJS",
+ "shortDescription": {
+ "text": "Conditional expression"
+ },
+ "fullDescription": {
+ "text": "Reports a ternary conditional expression. Some coding standards prohibit such expressions in favor of explicit 'if' statements.",
+ "markdown": "Reports a ternary conditional expression. Some coding standards prohibit such expressions in favor of explicit `if` statements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ConditionalExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PointlessBooleanExpressionJS",
+ "shortDescription": {
+ "text": "Pointless statement or boolean expression"
+ },
+ "fullDescription": {
+ "text": "Reports a pointless or pointlessly complicated boolean expression or statement. Example: 'let a = !(false && x);\n let b = false || x;' After the quick fix is applied the result looks like: 'let a = true;\n let b = x;'",
+ "markdown": "Reports a pointless or pointlessly complicated boolean expression or statement.\n\nExample:\n\n\n let a = !(false && x);\n let b = false || x;\n\nAfter the quick fix is applied the result looks like:\n\n\n let a = true;\n let b = x;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PointlessBooleanExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUrlImportUsage",
+ "shortDescription": {
+ "text": "URL import is used"
+ },
+ "fullDescription": {
+ "text": "Checks used URL imports in the JavaScript language. Suggests downloading the module for the specified remote URL. Such association enables the IDE to provide proper code completion and navigation. URLs in import specifiers are supported only for ECMAScript modules in the JavaScript language.",
+ "markdown": "Checks used URL imports in the JavaScript language. Suggests downloading the module for the specified remote URL. Such association enables the IDE to provide proper code completion and navigation. \n\nURLs in import specifiers are supported only for ECMAScript modules in the JavaScript language."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSUrlImportUsage",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Imports and dependencies",
+ "index": 120,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryLabelOnContinueStatementJS",
+ "shortDescription": {
+ "text": "Unnecessary label on 'continue' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a labeled 'continue' statement whose labels may be removed without changing the flow of control.",
+ "markdown": "Reports a labeled `continue` statement whose labels may be removed without changing the flow of control."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnnecessaryLabelOnContinueStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSPotentiallyInvalidTargetOfIndexedPropertyAccess",
+ "shortDescription": {
+ "text": "Possibly incorrect target of indexed property access"
+ },
+ "fullDescription": {
+ "text": "Reports a potentially invalid indexed property access, for example, 'Array[1]'.",
+ "markdown": "Reports a potentially invalid indexed property access, for example, `Array[1]`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSPotentiallyInvalidTargetOfIndexedPropertyAccess",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSTypeOfValues",
+ "shortDescription": {
+ "text": "'typeof' comparison with non-standard value"
+ },
+ "fullDescription": {
+ "text": "Reports a comparison of a 'typeof' expression with a literal string which is not one of the standard types: 'undefined', 'object', 'boolean', 'number', 'string', 'function', or 'symbol'. Such comparisons always return 'false'.",
+ "markdown": "Reports a comparison of a `typeof` expression with a literal string which is not one of the standard types: `undefined`, `object`, `boolean`, `number`, `string`, `function`, or `symbol`. Such comparisons always return `false`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSTypeOfValues",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XHTMLIncompatabilitiesJS",
+ "shortDescription": {
+ "text": "Incompatible XHTML usages"
+ },
+ "fullDescription": {
+ "text": "Reports common JavaScript DOM patterns which may present problems with XHTML documents. In particular, the patterns detected will behave completely differently depending on whether the document is loaded as XML or HTML. This can result in subtle bugs where script behaviour is dependent on the MIME-type of the document, rather than its content. Patterns detected include document.body, document.images, document.applets, document.links, document.forms, and document.anchors.",
+ "markdown": "Reports common JavaScript DOM patterns which may present problems with XHTML documents. In particular, the patterns detected will behave completely differently depending on whether the document is loaded as XML or HTML. This can result in subtle bugs where script behaviour is dependent on the MIME-type of the document, rather than its content. Patterns detected include **document.body** , **document.images** , **document.applets** , **document.links** , **document.forms** , and **document.anchors**."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "XHTMLIncompatabilitiesJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/DOM issues",
+ "index": 51,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSAnnotator",
+ "shortDescription": {
+ "text": "ECMAScript specification is not followed"
+ },
+ "fullDescription": {
+ "text": "Reports basic syntax issues and inconsistencies with language specification, such as invalid usages of keywords, usages of incompatible numeric format, or multiple parameters to getters/setters. Generally, such errors must always be reported and shouldn't be disabled. But in some cases, such as issues due to the dynamic nature of JavaScript, the use of not yet supported language features, or bugs in IDE's checker, it may be handy to disable reporting these very basic errors.",
+ "markdown": "Reports basic syntax issues and inconsistencies with language specification, such as invalid usages of keywords, usages of incompatible numeric format, or multiple parameters to getters/setters. \nGenerally, such errors must always be reported and shouldn't be disabled. But in some cases, such as issues due to the dynamic nature of JavaScript, the use of not yet supported language features, or bugs in IDE's checker, it may be handy to disable reporting these very basic errors."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JSAnnotator",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ConvertToForOf",
+ "shortDescription": {
+ "text": "'for..in' is used instead of 'for..of'"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a 'for..in' loop on an array. Suggests replacing it with a 'for..of' loop. 'for..of' loops, which are introduced in ECMAScript 6, iterate over 'iterable' objects. For arrays, this structure is preferable to 'for..in', because it works only with array values but not with array object's properties.",
+ "markdown": "Reports a usage of a [for..in](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in) loop on an array. Suggests replacing it with a [for..of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) loop. \n`for..of` loops, which are introduced in ECMAScript 6, iterate over `iterable` objects. For arrays, this structure is preferable to `for..in`, because it works only with array values but not with array object's properties."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ConvertToForOf",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/ES2015 migration aids",
+ "index": 49,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ThisExpressionReferencesGlobalObjectJS",
+ "shortDescription": {
+ "text": "'this' expression which references the global object"
+ },
+ "fullDescription": {
+ "text": "Reports a 'this' expression outside an object literal or a constructor body. Such 'this' expressions reference the top-level \"global\" JavaScript object, but are mostly useless.",
+ "markdown": "Reports a `this` expression outside an object literal or a constructor body. Such `this` expressions reference the top-level \"global\" JavaScript object, but are mostly useless."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ThisExpressionReferencesGlobalObjectJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NestedFunctionCallJS",
+ "shortDescription": {
+ "text": "Nested function call"
+ },
+ "fullDescription": {
+ "text": "Reports a function call that is used as an argument in another function call, for example, 'foo(bar())'",
+ "markdown": "Reports a function call that is used as an argument in another function call, for example, `foo(bar())`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NestedFunctionCallJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSEqualityComparisonWithCoercion",
+ "shortDescription": {
+ "text": "Equality operator may cause type coercion"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of an equality operator that may cause unexpected type coercions. Suggests replacing '==' and '!=' with type-safe equality operators '===' and '!=='. Depending on the option selected, one of the following cases will be reported: All usages of '==' and '!=' operators. All usages except comparison with null. Some code styles allow using 'x == null' as a replacement for 'x === null || x === undefined'. Only suspicious expressions, such as: '==' or '!=' comparisons with '0', '''', 'null', 'true', 'false', or 'undefined'.",
+ "markdown": "Reports a usage of an equality operator that may cause unexpected type coercions. Suggests replacing `==` and `!=` with type-safe equality operators `===` and `!==`.\n\nDepending on the option selected, one of the following cases will be reported:\n\n* All usages of `==` and `!=` operators.\n* All usages except comparison with null. Some code styles allow using `x == null` as a replacement for `x === null || x === undefined`.\n* Only suspicious expressions, such as: `==` or `!=` comparisons with `0`, `''`, `null`, `true`, `false`, or `undefined`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EqualityComparisonWithCoercionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSNonStrictModeUsed",
+ "shortDescription": {
+ "text": "Non-strict mode used"
+ },
+ "fullDescription": {
+ "text": "Reports a JavaScript file that is not in the 'strict' mode.",
+ "markdown": "Reports a JavaScript file that is not in the `strict` mode."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSNonStrictModeUsed",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptExplicitMemberType",
+ "shortDescription": {
+ "text": "Explicit types"
+ },
+ "fullDescription": {
+ "text": "Reports a type annotation that doesn't match the current code style for explicit types. Type declarations are not necessary when the type that is inferred from the context exactly matches the type annotation, for example: 'var pi: number = 3.14' In some cases it is preferable to always have explicit types - this prevents accidental type changes and makes code more explicit.",
+ "markdown": "Reports a type annotation that doesn't match the current code style for explicit types.\n\n\nType declarations are not necessary when the type that is inferred from the context exactly matches the type annotation, for example:\n\n\n var pi: number = 3.14\n\nIn some cases it is preferable to always have explicit types - this prevents accidental type changes and makes code more explicit."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptExplicitMemberType",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSDuplicateCaseLabel",
+ "shortDescription": {
+ "text": "Duplicate 'case' label"
+ },
+ "fullDescription": {
+ "text": "Reports a duplicated 'case' label on a 'switch' statement, which normally indicates an error.",
+ "markdown": "Reports a duplicated `case` label on a `switch` statement, which normally indicates an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSDuplicateCaseLabel",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSXDomNesting",
+ "shortDescription": {
+ "text": "Invalid DOM element nesting"
+ },
+ "fullDescription": {
+ "text": "Detects HTML elements in JSX files which are not nested properly according to the DOM specification. React reports runtime warnings on incorrectly nested elements.",
+ "markdown": "Detects HTML elements in JSX files which are not nested properly according to the DOM specification. React reports runtime warnings on incorrectly nested elements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSXDomNesting",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/React",
+ "index": 158,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryLocalVariableJS",
+ "shortDescription": {
+ "text": "Redundant local variable"
+ },
+ "fullDescription": {
+ "text": "Reports an unnecessary local variable that does not make a function more comprehensible: a local variable that is immediately returned a local variable that is immediately assigned to another variable and is not used anymore a local variable that always has the same value as another local variable or parameter. Use the checkbox below to have this inspection ignore variables that are immediately returned or thrown. Some coding styles suggest using such variables for clarity and ease of debugging.",
+ "markdown": "Reports an unnecessary local variable that does not make a function more comprehensible:\n\n* a local variable that is immediately returned\n* a local variable that is immediately assigned to another variable and is not used anymore\n* a local variable that always has the same value as another local variable or parameter.\n\n\nUse the checkbox below to have this inspection ignore variables that are immediately\nreturned or thrown. Some coding styles suggest using such variables for clarity and\nease of debugging."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnnecessaryLocalVariableJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Data flow",
+ "index": 112,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSXUnresolvedComponent",
+ "shortDescription": {
+ "text": "Unresolved JSX component"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference to a JSX component. Suggests adding a missing import statement if the referenced component is defined in the project or its dependencies or creating a new component with this name. The template for a new component can be modified in Editor | File and Code Templates.",
+ "markdown": "Reports an unresolved reference to a JSX component. Suggests adding a missing import statement if the referenced component is defined in the project or its dependencies or creating a new component with this name.\n\nThe template for a new component can be modified in Editor \\| File and Code Templates."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSXUnresolvedComponent",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnnecessaryLabelOnBreakStatementJS",
+ "shortDescription": {
+ "text": "Unnecessary label on 'break' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a labeled 'break' statement whose labels may be removed without changing the flow of control.",
+ "markdown": "Reports a labeled `break` statement whose labels may be removed without changing the flow of control."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnnecessaryLabelOnBreakStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DivideByZeroJS",
+ "shortDescription": {
+ "text": "Division by zero"
+ },
+ "fullDescription": {
+ "text": "Reports division by zero or a remainder by zero.",
+ "markdown": "Reports division by zero or a remainder by zero."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DivideByZeroJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ChainedEqualityJS",
+ "shortDescription": {
+ "text": "Chained equality"
+ },
+ "fullDescription": {
+ "text": "Reports a chained equality comparison (i.e. 'a==b==c'). Such comparisons are confusing.",
+ "markdown": "Reports a chained equality comparison (i.e. `a==b==c`). Such comparisons are confusing."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ChainedEqualityComparisonsJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSRedundantSwitchStatement",
+ "shortDescription": {
+ "text": "'switch' statement is redundant and can be replaced"
+ },
+ "fullDescription": {
+ "text": "Reports a 'switch' statement with an empty body, or with only one 'case' branch, or with a 'default' branch only.",
+ "markdown": "Reports a `switch` statement with an empty body, or with only one `case` branch, or with a `default` branch only."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSRedundantSwitchStatement",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "BlockStatementJS",
+ "shortDescription": {
+ "text": "Unnecessary block statement"
+ },
+ "fullDescription": {
+ "text": "Reports a block statement that is not used as the body of 'if', 'for', 'while', 'do', 'with', or 'try' statements, or as the body of a function declaration. Starting from ECMAScript 6, JavaScript blocks introduce new scopes for 'let' and 'const' variables, but still free-standing block statements may be confusing and result in subtle bugs when used with 'var' variables.",
+ "markdown": "Reports a block statement that is not used as the body of `if`, `for`, `while`, `do`, `with`, or `try` statements, or as the body of a function declaration. Starting from ECMAScript 6, JavaScript blocks introduce new scopes for `let` and `const` variables, but still free-standing block statements may be confusing and result in subtle bugs when used with `var` variables."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "BlockStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TextLabelInSwitchStatementJS",
+ "shortDescription": {
+ "text": "Text label in 'switch' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a labeled statement inside a 'switch' statement, which often results from a typo. Example: 'switch(x)\n {\n case 1:\n case2: //typo!\n case 3:\n break;\n }'",
+ "markdown": "Reports a labeled statement inside a `switch` statement, which often results from a typo.\n\nExample:\n\n\n switch(x)\n {\n case 1:\n case2: //typo!\n case 3:\n break;\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TextLabelInSwitchStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSOctalInteger",
+ "shortDescription": {
+ "text": "Octal integer"
+ },
+ "fullDescription": {
+ "text": "Reports a deprecated octal integer literal prefixed with '0' instead of '0o'. Such literals are not allowed in modern ECMAScript code, and using them in the strict mode is an error. To force this inspection for ES5 and ES3 language levels, select the 'Warn about obsolete octal literals in ES5- code' checkbox below.",
+ "markdown": "Reports a deprecated octal integer literal prefixed with `0` instead of `0o`. \nSuch literals are not allowed in modern ECMAScript code, and using them in the strict mode is an error. \nTo force this inspection for ES5 and ES3 language levels, select the 'Warn about obsolete octal literals in ES5- code' checkbox below."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JSOctalInteger",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EmptyTryBlockJS",
+ "shortDescription": {
+ "text": "Empty 'try' block"
+ },
+ "fullDescription": {
+ "text": "Reports an empty 'try' block, which usually indicates an error.",
+ "markdown": "Reports an empty `try` block, which usually indicates an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EmptyTryBlockJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSIgnoredPromiseFromCall",
+ "shortDescription": {
+ "text": "Result of method call returning a promise is ignored"
+ },
+ "fullDescription": {
+ "text": "Reports a function call that returns a 'Promise' that is not used later. Such calls are usually unintended and indicate an error.",
+ "markdown": "Reports a function call that returns a `Promise` that is not used later. Such calls are usually unintended and indicate an error."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSIgnoredPromiseFromCall",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Async code and promises",
+ "index": 103,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "StringLiteralBreaksHTMLJS",
+ "shortDescription": {
+ "text": "String literal which breaks HTML parsing"
+ },
+ "fullDescription": {
+ "text": "Reports a string literal that contains a '' sequence. Such strings may result in incorrect parsing of any HTML in which the JavaScript code is embedded.",
+ "markdown": "Reports a string literal that contains a `` sequence. Such strings may result in incorrect parsing of any HTML in which the JavaScript code is embedded."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "StringLiteralBreaksHTMLJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSComparisonWithNaN",
+ "shortDescription": {
+ "text": "Comparison with NaN"
+ },
+ "fullDescription": {
+ "text": "Reports a comparison with NaN. Comparisons like 'expr == NaN' or 'expr === NaN' are always evaluated to 'false'.",
+ "markdown": "Reports a comparison with NaN. Comparisons like `expr == NaN` or `expr === NaN` are always evaluated to `false`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSComparisonWithNaN",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnresolvedReference",
+ "shortDescription": {
+ "text": "Unresolved reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference in JavaScript code.",
+ "markdown": "Reports an unresolved reference in JavaScript code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSUnresolvedReference",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PlatformDetectionJS",
+ "shortDescription": {
+ "text": "Inaccurate platform detection"
+ },
+ "fullDescription": {
+ "text": "Reports a common JavaScript pattern for detecting the browser or operating system in which the script is run. In addition to pointing out non-portable constructs, these platform detection patterns are often incomplete and easily fooled. For most cases, detection of individual environment features is preferable to attempting to detect the entire platform. Patterns detected include: 'document.all' 'document.layers' 'navigator.userAgent' 'navigator.oscpu' 'navigator.appName' 'navigator.appCodeName' 'navigator.platform'",
+ "markdown": "Reports a common JavaScript pattern for detecting the browser or operating system in which the script is run. In addition to pointing out non-portable constructs, these platform detection patterns are often incomplete and easily fooled. For most cases, detection of individual environment features is preferable to attempting to detect the entire platform.\n\nPatterns detected include:\n\n* `document.all`\n* `document.layers`\n* `navigator.userAgent`\n* `navigator.oscpu`\n* `navigator.appName`\n* `navigator.appCodeName`\n* `navigator.platform`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PlatformDetectionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/DOM issues",
+ "index": 51,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptDuplicateUnionOrIntersectionType",
+ "shortDescription": {
+ "text": "Duplicate union or intersection type component"
+ },
+ "fullDescription": {
+ "text": "Reports a duplicate type inside a union or intersection.",
+ "markdown": "Reports a duplicate type inside a union or intersection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TypeScriptDuplicateUnionOrIntersectionType",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "VoidExpressionJS",
+ "shortDescription": {
+ "text": "'void' expression"
+ },
+ "fullDescription": {
+ "text": "Reports a 'void' expression.",
+ "markdown": "Reports a `void` expression."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "VoidExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSVoidFunctionReturnValueUsed",
+ "shortDescription": {
+ "text": "Void function return value used"
+ },
+ "fullDescription": {
+ "text": "Reports a return value of a function that doesn't return anything. Calling of such functions always produces an 'undefined' value and such assignment may indicate an error. Example: 'let a = console.log('foo');' The following usages are ignored: Inside a return statement In some binary operations For overridden non-void functions",
+ "markdown": "Reports a return value of a function that doesn't return anything. Calling of such functions always produces an `undefined` value and such assignment may indicate an error.\n\nExample:\n\n\n let a = console.log('foo');\n\nThe following usages are ignored:\n\n* Inside a return statement\n* In some binary operations\n* For overridden non-void functions"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSVoidFunctionReturnValueUsed",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ReturnFromFinallyBlockJS",
+ "shortDescription": {
+ "text": "'return' inside 'finally' block"
+ },
+ "fullDescription": {
+ "text": "Reports a 'return' statement inside a 'finally' block. Such 'return' statements may mask exceptions thrown, and complicate debugging.",
+ "markdown": "Reports a `return` statement inside a `finally` block. Such `return` statements may mask exceptions thrown, and complicate debugging."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ReturnInsideFinallyBlockJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Try statement issues",
+ "index": 97,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "StatementsPerFunctionJS",
+ "shortDescription": {
+ "text": "Overly long function"
+ },
+ "fullDescription": {
+ "text": "Reports an overly long function. Function length is calculated by counting up the number of non-empty statements in the function. Functions that are too long are error-prone and difficult to test. Use the field below to specify the maximum acceptable number of statements in a function.",
+ "markdown": "Reports an overly long function. Function length is calculated by counting up the number of non-empty statements in the function. Functions that are too long are error-prone and difficult to test.\n\n\nUse the field below to specify the maximum acceptable number of statements in a function."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "FunctionTooLongJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ContinueStatementWithLabelJS",
+ "shortDescription": {
+ "text": "'continue' statement with label"
+ },
+ "fullDescription": {
+ "text": "Reports a labeled 'continue' statement.",
+ "markdown": "Reports a labeled `continue` statement."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ContinueStatementWithLabelJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptMissingConfigOption",
+ "shortDescription": {
+ "text": "Missing tsconfig.json option "
+ },
+ "fullDescription": {
+ "text": "Reports a usage that requires an explicit option in 'tsconfig.json'. For example, to use JSX in '.tsx' files, 'tsconfig.json' must contain '\"jsx\"' property.",
+ "markdown": "Reports a usage that requires an explicit option in `tsconfig.json`. For example, to use JSX in `.tsx` files, `tsconfig.json` must contain `\"jsx\"` property."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TypeScriptMissingConfigOption",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6ShorthandObjectProperty",
+ "shortDescription": {
+ "text": "Property can be replaced with shorthand"
+ },
+ "fullDescription": {
+ "text": "Reports an object property that can be converted to ES6 shorthand style and provides a quick-fix to do it. Example: 'var obj = {foo:foo}' After applying the quick-fix the code looks as follows: 'var obj = {foo}'",
+ "markdown": "Reports an object property that can be converted to ES6 shorthand style and provides a quick-fix to do it.\n\nExample:\n\n\n var obj = {foo:foo}\n\nAfter applying the quick-fix the code looks as follows:\n\n\n var obj = {foo}\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6ShorthandObjectProperty",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSPotentiallyInvalidConstructorUsage",
+ "shortDescription": {
+ "text": "Potentially invalid constructor usage"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a potentially invalid constructor function, for example: a function that is not a constructor after 'new', using a constructor's prototype or calling a constructor without 'new'. A constructor function is assumed to have an upper case name (optional) or have an explicit JSDoc '@constructor' tag.",
+ "markdown": "Reports a usage of a potentially invalid constructor function, for example: a function that is not a constructor after `new`, using a constructor's prototype or calling a constructor without `new`. A constructor function is assumed to have an upper case name (optional) or have an explicit JSDoc `@constructor` tag."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSPotentiallyInvalidConstructorUsage",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NodeCoreCodingAssistance",
+ "shortDescription": {
+ "text": "Unresolved Node.js APIs"
+ },
+ "fullDescription": {
+ "text": "Suggests configuring coding assistance for Node.js, for example, 'require' and/or core modules ('path', 'http', 'fs', etc.). See https://nodejs.org/api/ for the complete list.",
+ "markdown": "Suggests configuring coding assistance for Node.js, for example, `require` and/or core modules ('path', 'http', 'fs', etc.).\n\n\nSee for the complete list."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NodeCoreCodingAssistance",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Node.js",
+ "index": 172,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSPrimitiveTypeWrapperUsage",
+ "shortDescription": {
+ "text": "Primitive type object wrapper used"
+ },
+ "fullDescription": {
+ "text": "Reports an improper usage of a wrapper for primitive types or a property of a primitive type being modified, as in the latter case the assigned value will be lost.",
+ "markdown": "Reports an improper usage of a wrapper for primitive types or a property of a primitive type being modified, as in the latter case the assigned value will be lost."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSPrimitiveTypeWrapperUsage",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSLastCommaInArrayLiteral",
+ "shortDescription": {
+ "text": "Unneeded last comma in array literal"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a trailing comma in an array literal. The warning is reported only when the JavaScript language version is set to ECMAScript 5.1. Although trailing commas in arrays are allowed by the specification, some browsers may throw an error when a trailing comma is used. You can configure formatting options for trailing commas in Code Style | JavaScript or TypeScript | Punctuation.",
+ "markdown": "Reports a usage of a trailing comma in an array literal.\n\nThe warning is reported only when the JavaScript language version is set to ECMAScript 5.1.\n\nAlthough trailing commas in arrays are allowed by the specification, some browsers may throw an error when a trailing comma is used.\n\nYou can configure formatting options for trailing commas in **Code Style** \\| **JavaScript** or **TypeScript** \\| **Punctuation**."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSLastCommaInArrayLiteral",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NegatedConditionalExpressionJS",
+ "shortDescription": {
+ "text": "Negated conditional expression"
+ },
+ "fullDescription": {
+ "text": "Reports a conditional expression whose condition is negated. Suggests flipping the order of branches in the conditional expression to increase the clarity of the statement. Example: '!condition ? 2 : 1'",
+ "markdown": "Reports a conditional expression whose condition is negated. Suggests flipping the order of branches in the conditional expression to increase the clarity of the statement. Example: `!condition ? 2 : 1`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NegatedConditionalExpressionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LabeledStatementJS",
+ "shortDescription": {
+ "text": "Labeled statement"
+ },
+ "fullDescription": {
+ "text": "Reports a labeled statement.",
+ "markdown": "Reports a labeled statement."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LabeledStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "WithStatementJS",
+ "shortDescription": {
+ "text": "'with' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'with' statements. Such statements result in potentially confusing implicit bindings, and may behave strangely in setting new variables.",
+ "markdown": "Reports a `with` statements. Such statements result in potentially confusing implicit bindings, and may behave strangely in setting new variables."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "WithStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
+ "index": 31,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSConstantReassignment",
+ "shortDescription": {
+ "text": "Attempt to assign to const or readonly variable"
+ },
+ "fullDescription": {
+ "text": "Reports reassigning a value to a constant or a readonly variable.",
+ "markdown": "Reports reassigning a value to a constant or a readonly variable."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JSConstantReassignment",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Validity issues",
+ "index": 22,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MagicNumberJS",
+ "shortDescription": {
+ "text": "Magic number"
+ },
+ "fullDescription": {
+ "text": "Reports a \"magic number\" that is a numeric literal used without being named by a constant declaration. Magic numbers can result in code whose intention is unclear, and may result in errors if a magic number is changed in one code location but remains unchanged in another. The numbers 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 0.0 and 1.0 are ignored.",
+ "markdown": "Reports a \"magic number\" that is a numeric literal used without being named by a constant declaration. Magic numbers can result in code whose intention is unclear, and may result in errors if a magic number is changed in one code location but remains unchanged in another. The numbers 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 0.0 and 1.0 are ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MagicNumberJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptLibrary",
+ "shortDescription": {
+ "text": "Missing global library"
+ },
+ "fullDescription": {
+ "text": "Reports a TypeScript library file that is required for a symbol but is not listed under the 'lib' compiler option in 'tsconfig.json'.",
+ "markdown": "Reports a TypeScript library file that is required for a symbol but is not listed under the `lib` compiler option in `tsconfig.json`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "TypeScriptLibrary",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptMissingAugmentationImport",
+ "shortDescription": {
+ "text": "Missing augmentation import"
+ },
+ "fullDescription": {
+ "text": "Reports a usage from augmentation module without an explicit import.",
+ "markdown": "Reports a usage from [augmentation module](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) without an explicit import."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TypeScriptMissingAugmentationImport",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "Eslint",
+ "shortDescription": {
+ "text": "ESLint"
+ },
+ "fullDescription": {
+ "text": "Reports a discrepancy detected by the ESLint linter. The highlighting is based on the rule severity specified in the ESLint configuration file for each individual rule. Clear the 'Use rule severity from the configuration file' checkbox to use the severity configured in this inspection for all ESLint rules.",
+ "markdown": "Reports a discrepancy detected by the [ESLint](https://eslint.org) linter. \n\nThe highlighting is based on the rule severity specified in the [ESLint configuration file](https://eslint.org/docs/user-guide/configuring) for each individual rule. \n\nClear the 'Use rule severity from the configuration file' checkbox to use the severity configured in this inspection for all ESLint rules."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "Eslint",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code quality tools",
+ "index": 69,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSEqualityComparisonWithCoercion.TS",
+ "shortDescription": {
+ "text": "Equality operator may cause type coercion"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of equality operators may cause unexpected type coercions. Suggests replacing '==' or '!=' equality operators with type-safe '===' or '!==' operators. Depending on the option selected, one of the following cases will be reported: All usages of '==' and '!=' operators. All usages except comparison with null. Some code styles allow using 'x == null' as a replacement for 'x === null || x === undefined'. Only suspicious expressions, such as: '==' or '!=' comparisons with '0', '''', 'null', 'true', 'false', or 'undefined'.",
+ "markdown": "Reports a usage of equality operators may cause unexpected type coercions. Suggests replacing `==` or `!=` equality operators with type-safe `===` or `!==` operators.\n\nDepending on the option selected, one of the following cases will be reported:\n\n* All usages of `==` and `!=` operators.\n* All usages except comparison with null. Some code styles allow using `x == null` as a replacement for `x === null || x === undefined`.\n* Only suspicious expressions, such as: `==` or `!=` comparisons with `0`, `''`, `null`, `true`, `false`, or `undefined`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EqualityComparisonWithCoercionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PackageJsonMismatchedDependency",
+ "shortDescription": {
+ "text": "Mismatched dependencies in package.json"
+ },
+ "fullDescription": {
+ "text": "Reports a dependency from package.json that is not installed or doesn't match the specified version range.",
+ "markdown": "Reports a dependency from package.json that is not installed or doesn't match the specified [version range](https://docs.npmjs.com/about-semantic-versioning)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PackageJsonMismatchedDependency",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Imports and dependencies",
+ "index": 120,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "InfiniteLoopJS",
+ "shortDescription": {
+ "text": "Infinite loop statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'for', 'while', or 'do' statement which can only exit by throwing an exception. Such statements often indicate coding errors.",
+ "markdown": "Reports a `for`, `while`, or `do` statement which can only exit by throwing an exception. Such statements often indicate coding errors."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "InfiniteLoopJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Probable bugs",
+ "index": 86,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSArrowFunctionBracesCanBeRemoved",
+ "shortDescription": {
+ "text": "Redundant braces around arrow function body"
+ },
+ "fullDescription": {
+ "text": "Reports an arrow function whose body only consists of braces and exactly one statement. Suggests converting to concise syntax without braces. 'let incrementer = (x) => {return x + 1};' After the quick-fix is applied, the code fragment looks as follows: 'let incrementer = (x) => x + 1;'",
+ "markdown": "Reports an arrow function whose body only consists of braces and exactly one statement. Suggests converting to concise syntax without braces.\n\n\n let incrementer = (x) => {return x + 1};\n\nAfter the quick-fix is applied, the code fragment looks as follows:\n\n\n let incrementer = (x) => x + 1;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSArrowFunctionBracesCanBeRemoved",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSClassNamingConvention",
+ "shortDescription": {
+ "text": "Class naming convention"
+ },
+ "fullDescription": {
+ "text": "Reports a class or a function that is annotated with a JSDoc '@constructor' or '@class' tag whose names are too short, too long, or do not follow the specified regular expression pattern. Use the fields provided below to specify minimum length, maximum length, and a regular expression expected for classes names. Use the standard 'java.util.regex' format for regular expressions.",
+ "markdown": "Reports a class or a function that is annotated with a JSDoc `@constructor` or `@class` tag whose names are too short, too long, or do not follow the specified regular expression pattern.\n\n\nUse the fields provided below to specify minimum length, maximum length, and a regular expression\nexpected for classes names. Use the standard `java.util.regex` format for regular expressions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSClassNamingConvention",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Naming conventions",
+ "index": 104,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUndefinedPropertyAssignment",
+ "shortDescription": {
+ "text": "Undefined property assignment"
+ },
+ "fullDescription": {
+ "text": "Reports an assignment to a property that is not defined in the type of a variable. Example: '/**\n * @type {{ property1: string, property2: number }}\n */\nlet myVariable = create();\n\nmyVariable.newProperty = 3; // bad'",
+ "markdown": "Reports an assignment to a property that is not defined in the type of a variable.\n\nExample:\n\n\n /**\n * @type {{ property1: string, property2: number }}\n */\n let myVariable = create();\n\n myVariable.newProperty = 3; // bad\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSUndefinedPropertyAssignment",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code style issues",
+ "index": 79,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSDeprecatedSymbols",
+ "shortDescription": {
+ "text": "Deprecated symbol used"
+ },
+ "fullDescription": {
+ "text": "Reports a usage of a deprecated function variable.",
+ "markdown": "Reports a usage of a deprecated function variable."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSDeprecatedSymbols",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LocalVariableNamingConventionJS",
+ "shortDescription": {
+ "text": "Local variable naming convention"
+ },
+ "fullDescription": {
+ "text": "Reports a local variable whose name is too short, too long, or doesn't follow the specified regular expression pattern. Use the fields provided below to specify minimum length, maximum length, and a regular expression expected for local variables names. Use the standard 'java.util.regex' format regular expressions.",
+ "markdown": "Reports a local variable whose name is too short, too long, or doesn't follow the specified regular expression pattern.\n\n\nUse the fields provided below to specify minimum length, maximum length, and a regular expression\nexpected for local variables names. Use the standard `java.util.regex` format regular expressions."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LocalVariableNamingConventionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Naming conventions",
+ "index": 104,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnresolvedExtXType",
+ "shortDescription": {
+ "text": "Unresolved Ext JS xtype"
+ },
+ "fullDescription": {
+ "text": "Reports an Ext JS 'xtype' reference that doesn't have a corresponding class.",
+ "markdown": "Reports an Ext JS `xtype` reference that doesn't have a corresponding class."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnresolvedExtXType",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ES6RedundantNestingInTemplateLiteral",
+ "shortDescription": {
+ "text": "Redundant nesting in template literal"
+ },
+ "fullDescription": {
+ "text": "Reports nested instances of a string or a template literal. Suggests inlining the nested instances into the containing template string. Example: 'let a = `Hello, ${`Brave ${\"New\"}`} ${\"World\"}!`' After applying the quick-fix the code looks as follows: 'let a = `Hello, Brave New World!`'",
+ "markdown": "Reports nested instances of a string or a template literal. Suggests inlining the nested instances into the containing template string.\n\nExample:\n\n\n let a = `Hello, ${`Brave ${\"New\"}`} ${\"World\"}!`\n\nAfter applying the quick-fix the code looks as follows:\n\n\n let a = `Hello, Brave New World!`\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ES6RedundantNestingInTemplateLiteral",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NestingDepthJS",
+ "shortDescription": {
+ "text": "Overly nested function"
+ },
+ "fullDescription": {
+ "text": "Reports a function whose body contains statements that are too deeply nested within other statements. Such functions may be confusing and indicate that refactoring may be necessary. Use the field provided below to specify the maximum acceptable nesting depth allowed in a function.",
+ "markdown": "Reports a function whose body contains statements that are too deeply nested within other statements. Such functions may be confusing and indicate that refactoring may be necessary.\n\n\nUse the field provided below to specify the maximum acceptable nesting depth allowed in a function."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "OverlyNestedFunctionJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Function metrics",
+ "index": 76,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TypeScriptSuspiciousConstructorParameterAssignment",
+ "shortDescription": {
+ "text": "Assigned constructor field parameter"
+ },
+ "fullDescription": {
+ "text": "Reports a common mistake in TypeScript code, when a class field is declared as a constructor parameter, and then this parameter is assigned. In this case, the corresponding field won't be assigned, only the local parameter value is modified. 'class Foo {\n constructor(private p: number) {\n p = 1; //must be this.p = 1;\n }\n}'",
+ "markdown": "Reports a common mistake in TypeScript code, when a class field is declared as a constructor parameter, and then this parameter is assigned. \nIn this case, the corresponding field *won't* be assigned, only the local parameter value is modified.\n\n\n class Foo {\n constructor(private p: number) {\n p = 1; //must be this.p = 1;\n }\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TypeScriptSuspiciousConstructorParameterAssignment",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/TypeScript",
+ "index": 55,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "NestedSwitchStatementJS",
+ "shortDescription": {
+ "text": "Nested 'switch' statement"
+ },
+ "fullDescription": {
+ "text": "Reports a 'switch' statement that is nested in another 'switch' statement. Nested 'switch' statements may be very confusing, particularly if indenting is inconsistent.",
+ "markdown": "Reports a `switch` statement that is nested in another `switch` statement. Nested `switch` statements may be very confusing, particularly if indenting is inconsistent."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "NestedSwitchStatementJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSMissingSwitchBranches",
+ "shortDescription": {
+ "text": "'switch' statement has missing branches"
+ },
+ "fullDescription": {
+ "text": "Reports a 'switch' statement on a variable of the type 'enum' or 'union' when the statement doesn't cover some value options from the type.",
+ "markdown": "Reports a `switch` statement on a variable of the type `enum` or `union` when the statement doesn't cover some value options from the type."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JSMissingSwitchBranches",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Switch statement issues",
+ "index": 109,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSJQueryEfficiency",
+ "shortDescription": {
+ "text": "JQuery selector can be optimized"
+ },
+ "fullDescription": {
+ "text": "Reports a duplicated jQuery selector that can be cached or a usage of an attribute or a pseudo-selector (optional).",
+ "markdown": "Reports a duplicated jQuery selector that can be cached or a usage of an attribute or a pseudo-selector (optional)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSJQueryEfficiency",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnreachableCodeJS",
+ "shortDescription": {
+ "text": "Unreachable code"
+ },
+ "fullDescription": {
+ "text": "Reports code that can never be executed, which almost certainly indicates an error",
+ "markdown": "Reports code that can never be executed, which almost certainly indicates an error"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnreachableCodeJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Control flow issues",
+ "index": 65,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EmptyStatementBodyJS",
+ "shortDescription": {
+ "text": "Statement with empty body"
+ },
+ "fullDescription": {
+ "text": "Reports an 'if', 'while', 'for', or 'with' statement with an empty body. Such statements often result from typos, and may cause confusion. Use the checkbox below to specify whether the statements with empty block statements as bodies should be reported.",
+ "markdown": "Reports an `if`, `while`, `for`, or `with` statement with an empty body. Such statements often result from typos, and may cause confusion.\n\n\nUse the checkbox below to specify whether the statements with empty block statements as bodies\nshould be reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "StatementWithEmptyBodyJS",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Potentially confusing code constructs",
+ "index": 61,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JSUnusedLocalSymbols",
+ "shortDescription": {
+ "text": "Unused local symbol"
+ },
+ "fullDescription": {
+ "text": "Reports an unused locally accessible parameter, local variable, function, class, or private member declaration.",
+ "markdown": "Reports an unused locally accessible parameter, local variable, function, class, or private member declaration."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JSUnusedLocalSymbols",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Unused symbols",
+ "index": 117,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.jetbrains.restClient",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "HttpClientRunRequestNameInspection",
+ "shortDescription": {
+ "text": "Possible request name"
+ },
+ "fullDescription": {
+ "text": "Highlights request name in run block which has no specified import file. Suggests adding import for the file which contains this named request.",
+ "markdown": "Highlights request name in run block which has no specified import file. Suggests adding import for the file which contains this named request."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpClientRunRequestNameInspection",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpClientUnresolvedAuthId",
+ "shortDescription": {
+ "text": "Unresolved Auth identifier"
+ },
+ "fullDescription": {
+ "text": "Highlights references to non-existent Auth configurations. Suggests creating a new one in the current environment.",
+ "markdown": "Highlights references to non-existent Auth configurations. Suggests creating a new one in the current environment."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "HttpClientUnresolvedAuthId",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestRequestSeparatorJsonBodyInspection",
+ "shortDescription": {
+ "text": "Missing request separator in JSON body"
+ },
+ "fullDescription": {
+ "text": "Reports possible requests in injected JSON body where request separator '###' is missing. The quick fix suggests adding the separator '###' before the request.",
+ "markdown": "Reports possible requests in injected JSON body where request separator `###` is missing. The quick fix suggests adding the separator `###` before the request."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpRequestRequestSeparatorJsonBodyInspection",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestContentLengthIsIgnored",
+ "shortDescription": {
+ "text": "Redundant 'Content-Length'"
+ },
+ "fullDescription": {
+ "text": "Reports an explicitly set 'Content-Length' header. The header is redundant because HTTP Client uses the actual request body length.",
+ "markdown": "Reports an explicitly set `Content-Length` header. The header is redundant because HTTP Client uses the actual request body length."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HttpRequestContentLengthIsIgnored",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestRequestSeparatorXmlBodyInspection",
+ "shortDescription": {
+ "text": "Missing request separator in HTML/XML body"
+ },
+ "fullDescription": {
+ "text": "Reports possible requests in injected XML/HTML body where request separator '###' is missing. The quick fix suggests adding the separator '###' before the request.",
+ "markdown": "Reports possible requests in injected XML/HTML body where request separator `###` is missing. The quick fix suggests adding the separator `###` before the request."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpRequestRequestSeparatorXmlBodyInspection",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestJsonBodyInspection",
+ "shortDescription": {
+ "text": "Variable should be double-quoted"
+ },
+ "fullDescription": {
+ "text": "Reports variables which should be double-quoted in json body. The quick fix suggests wrap variable with double quotes '\"{{variable}}\"'.",
+ "markdown": "Reports variables which should be double-quoted in json body. The quick fix suggests wrap variable with double quotes `\"{{variable}}\"`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HttpRequestJsonBodyInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestCustomHttpMethodInspection",
+ "shortDescription": {
+ "text": "Unknown HTTP method"
+ },
+ "fullDescription": {
+ "text": "Reports possible custom HTTP methods. The quick fix suggests adding the custom HTTP method to project settings.",
+ "markdown": "Reports possible custom HTTP methods. The quick fix suggests adding the custom HTTP method to project settings."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HttpRequestCustomHttpMethodInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpClientUnresolvedVariable",
+ "shortDescription": {
+ "text": "Unresolved environment variable"
+ },
+ "fullDescription": {
+ "text": "Reports variables undeclared in the current environment HTTP Client. Executing requests with undeclared variables probably fail. Consider adding a variable to the environment or selecting an environment with this variable. Inspection doesn't report variables in request bodies, because it can be a valid syntax of the body. Some variables may be not reported as unresolved, because they are declared in response or pre-request handler scripts via 'client.global.set' or 'request.variables.set' functions call.",
+ "markdown": "Reports variables undeclared in the current environment HTTP Client.\n\n\nExecuting requests with undeclared variables probably fail.\nConsider adding a variable to the environment or selecting an environment with this variable.\n\nInspection doesn't report variables in request bodies, because it can be a valid syntax of the body.\n\n\nSome variables may be not reported as unresolved, because they are declared in response or pre-request handler scripts via\n`client.global.set` or `request.variables.set` functions call."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HttpClientUnresolvedVariable",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IncorrectHttpHeaderInspection",
+ "shortDescription": {
+ "text": "Incorrect HTTP header"
+ },
+ "fullDescription": {
+ "text": "Reports unknown HTTP headers that do not match any publicly known headers. The quick fix suggests adding the header to the list of custom headers when the Use custom HTTP headers option is enabled. HTTP headers from the list of custom headers will not trigger the inspection.",
+ "markdown": "Reports unknown HTTP headers that do not match any [publicly\nknown headers](https://www.iana.org/assignments/message-headers/message-headers.xml). The quick fix suggests adding the header to the list of custom headers when the **Use custom HTTP headers** option\nis enabled. HTTP headers from the list of custom headers will not trigger the inspection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IncorrectHttpHeaderInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestEnvironmentAuthConfigurationValidationInspection",
+ "shortDescription": {
+ "text": "Auth configuration validation"
+ },
+ "fullDescription": {
+ "text": "Reports Auth configuration the following problems in HTTP Client environment files: Missing properties in Auth configuration Auth/Security configuration placed in private environment file",
+ "markdown": "Reports Auth configuration the following problems in HTTP Client environment files:\n\n* Missing properties in Auth configuration\n* Auth/Security configuration placed in private environment file"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HttpRequestEnvironmentAuthConfigurationValidationInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpUrlsUsage",
+ "shortDescription": {
+ "text": "Link with unencrypted protocol"
+ },
+ "fullDescription": {
+ "text": "Reports the links that use unencrypted protocols (such as HTTP), which can expose your data to man-in-the-middle attacks. These attacks are dangerous in general and may be especially harmful for artifact repositories. Use protocols with encryption, such as HTTPS, instead. See HTTPS: Difference from HTTP (wikipedia.org).",
+ "markdown": "Reports the links that use unencrypted protocols (such as HTTP), which can expose your data to man-in-the-middle attacks. These attacks\nare dangerous in general and may be especially harmful for artifact repositories. Use protocols with encryption, such as HTTPS,\ninstead.\n\nSee [HTTPS: Difference from HTTP (wikipedia.org)](https://en.wikipedia.org/wiki/HTTPS#Difference_from_HTTP)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpUrlsUsage",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Security",
+ "index": 131,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestPlaceholder",
+ "shortDescription": {
+ "text": "'$placeholder' in HTTP Request"
+ },
+ "fullDescription": {
+ "text": "Reports a '$placeholder' inside a request. A '$placeholder' to be replaced by the user is created automatically when a tool cannot recognize a part of a request. For example, a request mapping '/aaaa/*/bbb' will be generated as 'GET localhost/aaaa/{{$placeholder}}/bbb'.",
+ "markdown": "Reports a `$placeholder` inside a request.\n\nA `$placeholder` to be replaced by the user is created automatically when a tool cannot recognize a part of a request. For example, a request mapping `/aaaa/*/bbb` will be generated as `GET localhost/aaaa/{{$placeholder}}/bbb`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HttpRequestPlaceholder",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestWhitespaceInsideRequestTargetPath",
+ "shortDescription": {
+ "text": "Whitespace in URL in request"
+ },
+ "fullDescription": {
+ "text": "Highlights spaces inside URL path segments. HTTP Client will ignore them. For better composing use Split Lines action.",
+ "markdown": "Highlights spaces inside URL path segments. HTTP Client will ignore them. For better composing use Split Lines action."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpRequestWhitespaceInsideRequestTargetPath",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpClientInappropriateProtocolUsageInspection",
+ "shortDescription": {
+ "text": "Inappropriate HTTP Protocol usage"
+ },
+ "fullDescription": {
+ "text": "Reports inappropriate usage of HTTP protocol keyword, e.g. 'HTTP/2', with non-HTTP method requests. Such a usage will be ignored.",
+ "markdown": "Reports inappropriate usage of HTTP protocol keyword, e.g. `HTTP/2`, with non-HTTP method requests. Such a usage will be ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpClientInappropriateProtocolUsageInspection",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HttpRequestRequestSeparatorYamlBodyInspection",
+ "shortDescription": {
+ "text": "Missing request separator in YAML body"
+ },
+ "fullDescription": {
+ "text": "Reports possible requests in injected YAML body where request separator '###' is missing. The quick fix suggests adding the separator '###' before the request.",
+ "markdown": "Reports possible requests in injected YAML body where request separator `###` is missing. The quick fix suggests adding the separator `###` before the request."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HttpRequestRequestSeparatorYamlBodyInspection",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTTP Client",
+ "index": 19,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.editorconfig.editorconfigjetbrains",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "EditorConfigNumerousWildcards",
+ "shortDescription": {
+ "text": "Too many wildcards"
+ },
+ "fullDescription": {
+ "text": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues.",
+ "markdown": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "EditorConfigNumerousWildcards",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigKeyCorrectness",
+ "shortDescription": {
+ "text": "Unknown property"
+ },
+ "fullDescription": {
+ "text": "Reports properties that are not supported by the IDE. Note: some “ij” domain properties may require specific language plugins.",
+ "markdown": "Reports properties that are not supported by the IDE. Note: some \"ij\" domain properties may require specific language plugins."
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigKeyCorrectness",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "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": {
+ "suppressToolId": "EditorConfigEncoding",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigEmptyHeader",
+ "shortDescription": {
+ "text": "Empty header"
+ },
+ "fullDescription": {
+ "text": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by 'gitignore'.",
+ "markdown": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by `gitignore`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigEmptyHeader",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigSpaceInHeader",
+ "shortDescription": {
+ "text": "Space in file pattern"
+ },
+ "fullDescription": {
+ "text": "Reports space characters in wildcard patterns that affect pattern matching. If these characters are not intentional, they should be removed.",
+ "markdown": "Reports space characters in wildcard patterns that affect pattern matching. If these characters are not intentional, they should be removed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "EditorConfigSpaceInHeader",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigOptionRedundancy",
+ "shortDescription": {
+ "text": "Redundant property"
+ },
+ "fullDescription": {
+ "text": "Reports properties that are redundant when another applicable section already contains the same property and value. For example: '[*]\nindent_size=4\n[*.java]\nindent_size=4' are both applicable to '*.java' files and define the same 'indent_size' value.",
+ "markdown": "Reports properties that are redundant when another applicable section already contains the same property and value.\n\n\nFor example:\n\n\n [*]\n indent_size=4\n [*.java]\n indent_size=4\n\nare both applicable to `*.java` files and define the same `indent_size` value."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigOptionRedundancy",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigWildcardRedundancy",
+ "shortDescription": {
+ "text": "Redundant wildcard"
+ },
+ "fullDescription": {
+ "text": "Reports wildcards that become redundant when the “**” wildcard is used in the same section. The “**” wildcard defines a broader set of files than any other wildcard. That is why, any other wildcard used in the same section has no affect and can be removed.",
+ "markdown": "Reports wildcards that become redundant when the \"\\*\\*\" wildcard is used in the same section.\n\n\nThe \"\\*\\*\" wildcard defines a broader set of files than any other wildcard.\nThat is why, any other wildcard used in the same section has no affect and can be removed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigWildcardRedundancy",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigUnusedDeclaration",
+ "shortDescription": {
+ "text": "Unused declaration"
+ },
+ "fullDescription": {
+ "text": "Reports unused declarations. Such declarations can be removed.",
+ "markdown": "Reports unused declarations. Such declarations can be removed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigUnusedDeclaration",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigRootDeclarationUniqueness",
+ "shortDescription": {
+ "text": "Extra top-level declaration"
+ },
+ "fullDescription": {
+ "text": "Reports multiple top-level declarations. There can be only one optional “root=true” top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed.",
+ "markdown": "Reports multiple top-level declarations. There can be only one optional \"root=true\" top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigRootDeclarationUniqueness",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigShadowedOption",
+ "shortDescription": {
+ "text": "Overridden property"
+ },
+ "fullDescription": {
+ "text": "Reports properties that are already defined in other sections. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes all '*.java' files too but it also redefines indent_size. As a result the value 2 will be used for files matching '*.java'.",
+ "markdown": "Reports properties that are already defined in other sections.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes all `*.java` files too but it also redefines indent_size. As a result the value 2 will be used for files matching `*.java`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigShadowedOption",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigValueUniqueness",
+ "shortDescription": {
+ "text": "Non-unique list value"
+ },
+ "fullDescription": {
+ "text": "Reports duplicates in lists of values.",
+ "markdown": "Reports duplicates in lists of values."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigValueUniqueness",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigUnexpectedComma",
+ "shortDescription": {
+ "text": "Unexpected comma"
+ },
+ "fullDescription": {
+ "text": "Reports commas that cannot be used in the current context. Commas are allowed only as separators for values in lists.",
+ "markdown": "Reports commas that cannot be used in the current context. Commas are allowed only as separators for values in lists."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigUnexpectedComma",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigShadowingOption",
+ "shortDescription": {
+ "text": "Overriding property"
+ },
+ "fullDescription": {
+ "text": "Reports properties that override the same properties defined earlier in the file. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes the same files as '[*.java]' but also sets indent_size to value 2. Thus the first declaration 'indent_size=4'will be ignored.",
+ "markdown": "Reports properties that override the same properties defined earlier in the file.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes the same files as `[*.java]` but also sets indent_size to value 2. Thus the first declaration `indent_size=4`will be ignored."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigShadowingOption",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigReferenceCorrectness",
+ "shortDescription": {
+ "text": "Invalid reference"
+ },
+ "fullDescription": {
+ "text": "Reports identifiers that are either unknown or have a wrong type.",
+ "markdown": "Reports identifiers that are either unknown or have a wrong type."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigReferenceCorrectness",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigCharClassLetterRedundancy",
+ "shortDescription": {
+ "text": "Duplicate character class letter"
+ },
+ "fullDescription": {
+ "text": "Reports wildcard patterns in the EditorConfig section that contain a duplicate character in the character class, for example '[aa]'.",
+ "markdown": "Reports wildcard patterns in the EditorConfig section that contain a duplicate character in the character class, for example `[aa]`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigCharClassLetterRedundancy",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigMissingRequiredDeclaration",
+ "shortDescription": {
+ "text": "Required declarations are missing"
+ },
+ "fullDescription": {
+ "text": "Reports properties that miss the required declarations. Refer to the documentation for more information.",
+ "markdown": "Reports properties that miss the required declarations. Refer to the documentation for more information."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigMissingRequiredDeclaration",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigPartialOverride",
+ "shortDescription": {
+ "text": "Overlapping sections"
+ },
+ "fullDescription": {
+ "text": "Reports subsets of files specified in the current section that overlap with other subsets in other sections. For example: '[{foo,bar}]' and '[{foo,bas}]' both contain “foo”.",
+ "markdown": "Reports subsets of files specified in the current section that overlap with other subsets in other sections. For example: `[{foo,bar}]` and `[{foo,bas}]` both contain \"foo\"."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "EditorConfigPartialOverride",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigListAcceptability",
+ "shortDescription": {
+ "text": "Unexpected value list"
+ },
+ "fullDescription": {
+ "text": "Reports lists of values that are used in properties in which lists are not supported. In this case, only a single value can be specified.",
+ "markdown": "Reports lists of values that are used in properties in which lists are not supported. In this case, only a single value can be specified."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigListAcceptability",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigPatternEnumerationRedundancy",
+ "shortDescription": {
+ "text": "Unnecessary braces"
+ },
+ "fullDescription": {
+ "text": "Reports pattern lists that are either empty '{}' or contain just one pattern, for example '{foo}' in contrast to a list containing multiple patterns, for example '{foo,bar}'. In this case braces are handled as a part of the name. For example, the pattern '*.{a}' will match the file 'my.{a}' but not 'my.a'.",
+ "markdown": "Reports pattern lists that are either empty `{}` or contain just one pattern, for example `{foo}` in contrast to a list containing multiple patterns, for example `{foo,bar}`. In this case braces are handled as a part of the name. For example, the pattern `*.{a}` will match the file `my.{a}` but not `my.a`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigPatternEnumerationRedundancy",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigPairAcceptability",
+ "shortDescription": {
+ "text": "Unexpected key-value pair"
+ },
+ "fullDescription": {
+ "text": "Reports key-value pairs that are not allowed in the current context.",
+ "markdown": "Reports key-value pairs that are not allowed in the current context."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigPairAcceptability",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigNoMatchingFiles",
+ "shortDescription": {
+ "text": "No matching files"
+ },
+ "fullDescription": {
+ "text": "Reports sections with wildcard patterns that do not match any files under the directory in which the '.editorconfig' file is located.",
+ "markdown": "Reports sections with wildcard patterns that do not match any files under the directory in which the `.editorconfig` file is located."
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigNoMatchingFiles",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigHeaderUniqueness",
+ "shortDescription": {
+ "text": "EditorConfig section is not unique"
+ },
+ "fullDescription": {
+ "text": "Reports sections that define the same file pattern as other sections.",
+ "markdown": "Reports sections that define the same file pattern as other sections."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigHeaderUniqueness",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigValueCorrectness",
+ "shortDescription": {
+ "text": "Invalid property value"
+ },
+ "fullDescription": {
+ "text": "Reports property values that do not meet value restrictions. For example, some properties may be only “true” or “false”, others contain only integer numbers etc. If a value has a limited set of variants, use code completion to see all of them.",
+ "markdown": "Reports property values that do not meet value restrictions. For example, some properties may be only \"true\" or \"false\", others contain only integer numbers etc. If a value has a limited set of variants, use code completion to see all of them."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigValueCorrectness",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigRootDeclarationCorrectness",
+ "shortDescription": {
+ "text": "Unexpected top-level declaration"
+ },
+ "fullDescription": {
+ "text": "Reports unexpected top-level declarations. Top-level declarations other than “root=true” are not allowed in the EditorConfig file.",
+ "markdown": "Reports unexpected top-level declarations. Top-level declarations other than \"root=true\" are not allowed in the EditorConfig file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigRootDeclarationCorrectness",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigPatternRedundancy",
+ "shortDescription": {
+ "text": "Duplicate or redundant pattern"
+ },
+ "fullDescription": {
+ "text": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in '[{*.java,*}]' the first '*.java' pattern defines a narrower scope compared to '*'. That is why it is redundant and can be removed.",
+ "markdown": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in `[{*.java,*}]` the first `*.java` pattern defines a narrower scope compared to `*`. That is why it is redundant and can be removed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigPatternRedundancy",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigDeprecatedDescriptor",
+ "shortDescription": {
+ "text": "Deprecated property"
+ },
+ "fullDescription": {
+ "text": "Reports EditorConfig properties that are no longer supported.",
+ "markdown": "Reports EditorConfig properties that are no longer supported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigDeprecatedDescriptor",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigCharClassRedundancy",
+ "shortDescription": {
+ "text": "Unnecessary character class"
+ },
+ "fullDescription": {
+ "text": "Reports character classes that consist of a single character. Such classes can be simplified to a character, for example '[a]'→'a'.",
+ "markdown": "Reports character classes that consist of a single character. Such classes can be simplified to a character, for example `[a]`→`a`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigCharClassRedundancy",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigEmptySection",
+ "shortDescription": {
+ "text": "Empty section"
+ },
+ "fullDescription": {
+ "text": "Reports sections that do not contain any EditorConfig properties.",
+ "markdown": "Reports sections that do not contain any EditorConfig properties."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "EditorConfigEmptySection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "EditorConfigVerifyByCore",
+ "shortDescription": {
+ "text": "Invalid .editorconfig file"
+ },
+ "fullDescription": {
+ "text": "Verifies the whole file using the backing EditorConfig core library and reports any failures. Any such failure would prevent EditorConfig properties from being correctly applied.",
+ "markdown": "Verifies the whole file using the backing EditorConfig core library and reports any failures. Any such failure would prevent EditorConfig properties from being correctly applied."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "EditorConfigVerifyByCore",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "EditorConfig",
+ "index": 20,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.database",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "SqlMissingReturnInspection",
+ "shortDescription": {
+ "text": "Missing return statement"
+ },
+ "fullDescription": {
+ "text": "Reports functions that have no RETURN statements. Example (Oracle): 'CREATE FUNCTION foo RETURN int AS\nBEGIN\nEND;' The 'foo' function must return the integer value but the function body returns nothing. To fix the error, add a RETURN statement (for example, 'return 1;'). 'CREATE FUNCTION foo RETURN int AS\nBEGIN\n RETURN 1;\nEND;'",
+ "markdown": "Reports functions that have no RETURN statements.\n\nExample (Oracle):\n\n CREATE FUNCTION foo RETURN int AS\n BEGIN\n END;\n\nThe `foo` function must return the integer value but the function body returns nothing. To fix the error,\nadd a RETURN statement (for example, `return 1;`).\n\n CREATE FUNCTION foo RETURN int AS\n BEGIN\n RETURN 1;\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "SqlMissingReturn",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlCaseVsIfInspection",
+ "shortDescription": {
+ "text": "Using CASE instead of conditional function and vice versa"
+ },
+ "fullDescription": {
+ "text": "Reports situations when CASE and IF are interchangeable. Example (MySQL): 'SELECT CASE\nWHEN C1 IS NULL THEN 1\nELSE 0\nEND\nFROM dual;' To keep your code short, you can replace the CASE structure with IF. You can do that by applying the Replace with 'IF' call intention action. The example code will look as follows: 'SELECT IF(C1 IS NULL, 1, 0)\nFROM dual;' To revert IF to CASE, click IF and apply the Replace with CASE expression intention action.",
+ "markdown": "Reports situations when CASE and IF are interchangeable.\n\nExample (MySQL):\n\n SELECT CASE\n WHEN C1 IS NULL THEN 1\n ELSE 0\n END\n FROM dual;\n\nTo keep your code short, you can replace the CASE structure with IF. You can do that by applying the **Replace with 'IF' call**\nintention action. The example code will look as follows:\n\n SELECT IF(C1 IS NULL, 1, 0)\n FROM dual;\n\nTo revert IF to CASE, click IF and apply the **Replace with CASE expression** intention action."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlCaseVsIf",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlShouldBeInGroupByInspection",
+ "shortDescription": {
+ "text": "Column should be in group by clause"
+ },
+ "fullDescription": {
+ "text": "Reports columns that are not in the GROUP BY clause or inside an aggregate function call. Example (Microsoft SQL Server): 'CREATE TABLE t1 (a INT, b INT);\nSELECT a, b FROM t1 GROUP BY a;' If you run the SELECT query, you will receive an error because Microsoft SQL Server expects the 'b' column in GROUP BY or used inside an aggregate function. The following two examples will fix the error. 'SELECT a, b FROM t1 GROUP BY a, b;\nSELECT a, max(b) max_b FROM t1 GROUP BY a;'",
+ "markdown": "Reports columns that are not in the GROUP BY clause or inside an aggregate function call.\n\nExample (Microsoft SQL Server):\n\n CREATE TABLE t1 (a INT, b INT);\n SELECT a, b FROM t1 GROUP BY a;\n\nIf you run the SELECT query, you will receive an error because Microsoft SQL Server expects the `b` column in GROUP BY or used\ninside an aggregate function. The following two examples will fix the error.\n\n SELECT a, b FROM t1 GROUP BY a, b;\n SELECT a, max(b) max_b FROM t1 GROUP BY a;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlShouldBeInGroupBy",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlMisleadingReferenceInspection",
+ "shortDescription": {
+ "text": "Misleading references"
+ },
+ "fullDescription": {
+ "text": "Reports ambiguous references in SQL code. For example, when a name refer to both a table column and a routine parameter. The execution of such code might lead to errors or unexpected results due to counter-intuitive resolution logic. Usually, names with a more local scope have higher priority. Example (PostgreSQL): 'CREATE TABLE foo\n(\n id INT,\n name VARCHAR(5)\n);\nCREATE FUNCTION func(name VARCHAR(5)) RETURNS INT AS\n$$\nDECLARE\n b INT;\nBEGIN\n -- `name` is ambiguous as it is used as a column name and a parameter\n SELECT COUNT(*) INTO b FROM foo t WHERE t.name = name;\n RETURN b;\nEND;\n$$ LANGUAGE plpgsql;' In PostgreSQL, you can use the '#variable_conflict' directives to explicitly specify a correct reference. For example, use '#variable_conflict use_column' to refer to a column name, or '#variable_conflict use_variable' to refer to a parameter. 'CREATE TABLE foo\n(\n id INT,\n name VARCHAR(5)\n);\nCREATE FUNCTION func(name VARCHAR(5)) RETURNS INT AS\n$$\n #variable_conflict use_column\nDECLARE\n b INT;\nBEGIN\n SELECT COUNT(*) INTO b FROM foo t WHERE t.name = name;\n RETURN b;\nEND;\n$$ LANGUAGE plpgsql;'",
+ "markdown": "Reports ambiguous references in SQL code.\n\nFor example, when a name refer to both a table column and a routine parameter. The execution of such code might lead to errors or unexpected\nresults due to counter-intuitive resolution logic. Usually, names with a more local scope have higher priority.\n\nExample (PostgreSQL):\n\n CREATE TABLE foo\n (\n id INT,\n name VARCHAR(5)\n );\n CREATE FUNCTION func(name VARCHAR(5)) RETURNS INT AS\n $$\n DECLARE\n b INT;\n BEGIN\n -- `name` is ambiguous as it is used as a column name and a parameter\n SELECT COUNT(*) INTO b FROM foo t WHERE t.name = name;\n RETURN b;\n END;\n $$ LANGUAGE plpgsql;\n\nIn PostgreSQL, you can use the `#variable_conflict` directives to explicitly specify a correct reference. For example,\nuse `#variable_conflict use_column` to refer to a column name, or `#variable_conflict use_variable` to refer to a\nparameter.\n\n CREATE TABLE foo\n (\n id INT,\n name VARCHAR(5)\n );\n CREATE FUNCTION func(name VARCHAR(5)) RETURNS INT AS\n $$\n #variable_conflict use_column\n DECLARE\n b INT;\n BEGIN\n SELECT COUNT(*) INTO b FROM foo t WHERE t.name = name;\n RETURN b;\n END;\n $$ LANGUAGE plpgsql;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlMisleadingReference",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlRedundantAliasInspection",
+ "shortDescription": {
+ "text": "Redundant alias expressions"
+ },
+ "fullDescription": {
+ "text": "Reports alias expressions that duplicate names of columns in tables and might be redundant. Example (PostgreSQL): 'CREATE TABLE foo(a INT, b INT);\n\nSELECT * FROM foo foo(a, b);\nSELECT * FROM foo foo(a);\nSELECT * FROM foo foo(x);\nSELECT * FROM foo foo(x, y);' The first two aliases use the same column names as in the 'foo' table. They are considered redundant because they column names are identical.",
+ "markdown": "Reports alias expressions that duplicate names of columns in tables and might be redundant.\n\nExample (PostgreSQL):\n\n CREATE TABLE foo(a INT, b INT);\n\n SELECT * FROM foo foo(a, b);\n SELECT * FROM foo foo(a);\n SELECT * FROM foo foo(x);\n SELECT * FROM foo foo(x, y);\n\nThe first two aliases use the same column names as in the `foo` table. They are considered redundant because they\ncolumn names are identical."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlRedundantAlias",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlUnusedCteInspection",
+ "shortDescription": {
+ "text": "Unused common table expression"
+ },
+ "fullDescription": {
+ "text": "Reports unused common table expressions (CTE) inside the query. Example (PostgreSQL): 'CREATE TABLE foo(a INT);\n\nWITH a AS (SELECT 1 AS x FROM foo)\nSELECT 1 + 2 FROM foo;' By using WITH, we create a temporary named result set with the name 'a', also known as a common table expression (CTE). But we do not use this CTE later in the code. The unused CTE is greyed out.",
+ "markdown": "Reports unused common table expressions (CTE) inside the query.\n\nExample (PostgreSQL):\n\n CREATE TABLE foo(a INT);\n\n WITH a AS (SELECT 1 AS x FROM foo)\n SELECT 1 + 2 FROM foo;\n\nBy using WITH, we create a temporary named result set with the name `a`, also known as a common table expression (CTE). But\nwe do not use this CTE later in the code. The unused CTE is greyed out."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlUnusedCte",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MongoJSResolveInspection",
+ "shortDescription": {
+ "text": "Resolution problems"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved references in MongoDB and JavaScript code. Example: 'db\nuse foo\n -- a reference to a non-existing collection\ndb.non_existing_collection\ndb['non_existing_collection']\ndb['non_existing_collection'].find().hasNext()' The 'non_existing_collection' collection does not exist in the database and will be reported.",
+ "markdown": "Reports unresolved references in MongoDB and JavaScript code.\n\nExample:\n\n db\n use foo\n -- a reference to a non-existing collection\n db.non_existing_collection\n db['non_existing_collection']\n db['non_existing_collection'].find().hasNext()\n\nThe `non_existing_collection` collection does not exist in the database and will be reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MongoJSResolve",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MongoJS",
+ "index": 89,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlDialectInspection",
+ "shortDescription": {
+ "text": "SQL dialect detection"
+ },
+ "fullDescription": {
+ "text": "Reports situations when a dialect is not assigned to an SQL file. For example, when you open a new SQL file without assigning a dialect to it, you see a notification where the best matching dialect is advised. Click the Use link to use the advised dialect. Alternatively, click the Change dialect to link to select the other dialect.",
+ "markdown": "Reports situations when a dialect is not assigned to an SQL file.\n\nFor example, when you open a new SQL file without assigning a dialect\nto it, you see a notification where the best matching dialect is advised. Click the **Use \\** link to use the advised\ndialect. Alternatively, click the **Change dialect to** link to select the other dialect."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlDialectInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MongoJSExtDeprecationInspection",
+ "shortDescription": {
+ "text": "Deprecated element"
+ },
+ "fullDescription": {
+ "text": "Reports usages of deprecated methods in MongoDB and JavaScript code. The quick-fix replaces deprecated methods with recommended alternatives. Example: 'db.my_collection.insert()' After the quick-fix is applied: 'db.my_collection.insertOne()'",
+ "markdown": "Reports usages of deprecated methods in MongoDB and JavaScript code.\n\nThe quick-fix replaces deprecated methods with recommended alternatives.\n\nExample:\n\n\n db.my_collection.insert()\n\nAfter the quick-fix is applied:\n\n\n db.my_collection.insertOne()\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MongoJSDeprecation",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MongoJS",
+ "index": 89,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MongoJSDeprecationInspection",
+ "shortDescription": {
+ "text": "Deprecated element"
+ },
+ "fullDescription": {
+ "text": "Reports usages of deprecated methods in MongoDB and JavaScript code. The quick-fix replaces deprecated methods with recommended alternatives. Example: 'db.my_collection.insert()' After the quick-fix is applied: 'db.my_collection.insertOne()'",
+ "markdown": "Reports usages of deprecated methods in MongoDB and JavaScript code.\n\nThe quick-fix replaces deprecated methods with recommended alternatives.\n\nExample:\n\n db.my_collection.insert()\n\nAfter the quick-fix is applied:\n\n db.my_collection.insertOne()\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MongoJSDeprecation",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MongoJS",
+ "index": 89,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MsBuiltinInspection",
+ "shortDescription": {
+ "text": "Builtin functions"
+ },
+ "fullDescription": {
+ "text": "Reports truncations of string arguments in ISNULL functions. The ISNULL syntax is 'ISNULL(check_expression, replacement_value)'. According to ISNULL at docs.microsoft.com, 'replacement_value' will be truncated if 'replacement_value' is longer than 'check_expression'. Example (Microsoft SQL Server): 'DECLARE @name1 VARCHAR(2) = NULL;\nDECLARE @name2 VARCHAR(10) = 'Example';\nDECLARE @name3 VARCHAR(2) = 'Hi';\n\n -- `@name2` is VARCHAR(10) and will be truncated\nSELECT ISNULL(@name1, @name2);\n\n -- `@name3` is VARCHAR(2) as `@name1` and will not be truncated\nSELECT ISNULL(@name1, @name3);'",
+ "markdown": "Reports truncations of string arguments in ISNULL functions.\n\nThe ISNULL syntax is `ISNULL(check_expression, replacement_value)`.\n\nAccording to [ISNULL at\ndocs.microsoft.com](https://docs.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql), `replacement_value` will be truncated if `replacement_value` is longer than\n`check_expression`.\n\nExample (Microsoft SQL Server):\n\n DECLARE @name1 VARCHAR(2) = NULL;\n DECLARE @name2 VARCHAR(10) = 'Example';\n DECLARE @name3 VARCHAR(2) = 'Hi';\n\n -- `@name2` is VARCHAR(10) and will be truncated\n SELECT ISNULL(@name1, @name2);\n\n -- `@name3` is VARCHAR(2) as `@name1` and will not be truncated\n SELECT ISNULL(@name1, @name3);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MssqlBuiltin",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL server",
+ "index": 102,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlMultipleLimitClausesInspection",
+ "shortDescription": {
+ "text": "Multiple row limiting/offset clauses in queries"
+ },
+ "fullDescription": {
+ "text": "Reports usages of multiple row limiting clauses in a single query. Example (Microsoft SQL Server): 'create table foo(a int);\nselect top 1 * from foo order by a offset 10 rows fetch next 20 rows only;' The SELECT TOP clause is used to specify that only 1 record must be returned. The FETCH clause specifies the number of rows to return after the OFFSET clause has been processed. But as we already have the SELECT TOP limiting clause, the FETCH clause might be redundant.",
+ "markdown": "Reports usages of multiple row limiting clauses in a single query.\n\nExample (Microsoft SQL Server):\n\n create table foo(a int);\n select top 1 * from foo order by a offset 10 rows fetch next 20 rows only;\n\nThe SELECT TOP clause is used to specify that only 1 record must be\nreturned. The FETCH clause specifies the number of rows to return after the OFFSET\nclause has been processed. But as we already have the SELECT TOP limiting clause, the FETCH clause might be redundant."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlMultipleLimitClauses",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlAmbiguousColumnInspection",
+ "shortDescription": {
+ "text": "Ambiguous reference"
+ },
+ "fullDescription": {
+ "text": "Reports columns that have identical names but belong to different tables. Example (MySQL): 'CREATE TABLE foo(id INT PRIMARY KEY);\nCREATE TABLE bar(id INT PRIMARY KEY);\n\nSELECT foo.id, bar.id FROM foo, bar WHERE id > 0;' The 'id' column appears in 'foo' and 'bar' tables. You need to qualify the column name to make the query correct. 'SELECT foo.id, bar.id FROM foo, bar WHERE foo.id > 0;'",
+ "markdown": "Reports columns that have identical names but belong to different tables.\n\nExample (MySQL):\n\n CREATE TABLE foo(id INT PRIMARY KEY);\n CREATE TABLE bar(id INT PRIMARY KEY);\n\n SELECT foo.id, bar.id FROM foo, bar WHERE id > 0;\n\nThe `id` column appears in `foo` and `bar` tables. You need to qualify the column name to\nmake the query correct.\n\n SELECT foo.id, bar.id FROM foo, bar WHERE foo.id > 0;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlAmbiguousColumn",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlInsertValuesInspection",
+ "shortDescription": {
+ "text": "VALUES clause cardinality"
+ },
+ "fullDescription": {
+ "text": "Reports situations when a number of parameters in VALUES does not match a number of columns in a target table. Example (MySQL): 'CREATE TABLE foo(a INT, b INT, c INT);\n\nINSERT INTO foo VALUES (1,2,3,4)' The 'foo' table has three columns but in the INSERT INTO statement we pass four.",
+ "markdown": "Reports situations when a number of parameters in VALUES does not match a number of columns in a target table.\n\nExample (MySQL):\n\n CREATE TABLE foo(a INT, b INT, c INT);\n\n INSERT INTO foo VALUES (1,2,3,4)\n\nThe `foo` table has three columns but in the INSERT INTO statement we pass four."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlInsertValues",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlRedundantElseNullInspection",
+ "shortDescription": {
+ "text": "Redundant ELSE NULL clause"
+ },
+ "fullDescription": {
+ "text": "Reports redundant ELSE NULL clauses. Example (MySQL): 'SELECT CASE WHEN 2 > 1 THEN 'OK' ELSE NULL END AS alias FROM foo;' The 'ELSE NULL' part will never be executed and may be omitted.",
+ "markdown": "Reports redundant ELSE NULL clauses.\n\nExample (MySQL):\n\n SELECT CASE WHEN 2 > 1 THEN 'OK' ELSE NULL END AS alias FROM foo;\n\nThe `ELSE NULL` part will never be executed and may be omitted."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlRedundantElseNull",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlCurrentSchemaInspection",
+ "shortDescription": {
+ "text": "Current console schema introspected"
+ },
+ "fullDescription": {
+ "text": "Reports schemas and databases in the current session that are not introspected. For example, this warning might occur when you try to create a table in the schema that is not introspected. Introspection is a method of inspecting a data source. When you perform introspection, structural information in the data source is inspected to detect tables, columns, functions, and other elements with their attributes.",
+ "markdown": "Reports schemas and databases in the current session that are not introspected.\n\nFor example, this warning might occur when you try to create a table in the schema that is not introspected.\n\nIntrospection is a method of inspecting a data source. When you perform introspection, structural information in the data source is\ninspected to detect tables, columns, functions, and other elements with their attributes."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlCurrentSchemaInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlInsertNullIntoNotNullInspection",
+ "shortDescription": {
+ "text": "Insert NULL into NOT NULL column"
+ },
+ "fullDescription": {
+ "text": "Reports cases when you insert NULL values into columns that accept only NOT NULL values. Example (Microsoft SQL Server): 'CREATE TABLE br2 (\nid INT NOT NULL,\ncol1 NVARCHAR (20) NOT NULL,\ncol2 NVARCHAR (20) NOT NULL,\n);\n--\nINSERT INTO br2 (id, col1, col2)\nVALUES (1, NULL, NULL);' You cannot insert NULL values in 'col1' and 'col2' because they are defined as NOT NULL. If you run the script as is, you will receive an error. To fix this code, replace NULL in the VALUES part with some values (for example, '42' and ''bird''). INSERT INTO br2 (id, col1, col2)\nVALUES (1, 42, 'bird');",
+ "markdown": "Reports cases when you insert NULL values into columns that accept only NOT NULL values.\n\nExample (Microsoft SQL Server):\n\n CREATE TABLE br2 (\n id INT NOT NULL,\n col1 NVARCHAR (20) NOT NULL,\n col2 NVARCHAR (20) NOT NULL,\n );\n --\n INSERT INTO br2 (id, col1, col2)\n VALUES (1, NULL, NULL);\n\nYou cannot insert NULL values in `col1` and `col2` because they are defined as NOT NULL. If you run the script as\nis,\nyou will receive an error. To fix this code, replace NULL in the VALUES part with some values (for example, `42` and\n`'bird'`).\n\n```\nINSERT INTO br2 (id, col1, col2)\nVALUES (1, 42, 'bird');\n```"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlInsertNullIntoNotNull",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlTriggerTransitionInspection",
+ "shortDescription": {
+ "text": "Suspicious code in triggers"
+ },
+ "fullDescription": {
+ "text": "Reports incorrect usages of transition table variables in triggers. Example (HSQLDB): 'CREATE TABLE foo(a INT);\n\nCREATE TRIGGER trg\n AFTER DELETE ON foo\nBEGIN\n SELECT * FROM NEW;\nEND;\n\nCREATE TRIGGER trig AFTER INSERT ON foo\n REFERENCING OLD ROW AS newrow\n FOR EACH ROW WHEN (a > 1)\n INSERT INTO foo VALUES (1)' In HSQLDB, DELETE triggers may be used only with the OLD state while INSERT triggers may have only the NEW state. So, in the previous example, NEW in 'SELECT * FROM NEW;' will be highlighted as well as OLD in 'REFERENCING OLD ROW AS newrow'.",
+ "markdown": "Reports incorrect usages of transition table variables in triggers.\n\nExample (HSQLDB):\n\n CREATE TABLE foo(a INT);\n\n CREATE TRIGGER trg\n AFTER DELETE ON foo\n BEGIN\n SELECT * FROM NEW;\n END;\n\n CREATE TRIGGER trig AFTER INSERT ON foo\n REFERENCING OLD ROW AS newrow\n FOR EACH ROW WHEN (a > 1)\n INSERT INTO foo VALUES (1)\n\nIn HSQLDB, DELETE triggers may be used only with the OLD state while INSERT triggers may have only the NEW state. So, in the previous\nexample, NEW in `SELECT * FROM NEW;` will be highlighted as well as OLD in `REFERENCING OLD ROW AS newrow`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlTriggerTransition",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlNamedArgumentsInspection",
+ "shortDescription": {
+ "text": "Named arguments should be used"
+ },
+ "fullDescription": {
+ "text": "Reports arguments that are used without names in routine calls. By default, this inspection is disabled. For more information about the difference between named and unnamed parameters, see Binding Parameters by Name (Named Parameters) at docs.microsoft.com . Example (Microsoft SQL Server): 'CREATE FUNCTION foo(n INT, m INT) RETURNS INT AS\nBEGIN\n RETURN n + m;\nEND;\n\nCREATE PROCEDURE test AS\nBEGIN\n foo n = 1, m = 2;\n\n--- The following call misses parameter names and will be highlighted\n foo 1, 2;\nEND;' Parameters '1, 2' in the 'foo 1, 2;' call are highlighted because they miss names.",
+ "markdown": "Reports arguments that are used without names in routine calls. By default, this inspection is disabled.\n\nFor more information about the difference between named and unnamed parameters, see [Binding Parameters by Name (Named Parameters) at docs.microsoft.com](https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/binding-parameters-by-name-named-parameters).\n\nExample (Microsoft SQL Server):\n\n CREATE FUNCTION foo(n INT, m INT) RETURNS INT AS\n BEGIN\n RETURN n + m;\n END;\n\n CREATE PROCEDURE test AS\n BEGIN\n foo n = 1, m = 2;\n\n --- The following call misses parameter names and will be highlighted\n foo 1, 2;\n END;\n\nParameters `1, 2` in the `foo 1, 2;` call are highlighted because they miss names."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlNamedArguments",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlTransactionStatementInTriggerInspection",
+ "shortDescription": {
+ "text": "Use of transaction management statements in triggers"
+ },
+ "fullDescription": {
+ "text": "Reports usages of transaction management statements like COMMIT or ROLLBACK in trigger bodies. With COMMIT or ROLLBACK statements in a trigger body, the trigger will not compile. The fail happens because triggers start during transactions. When the trigger starts the current transaction is still not complete. As COMMIT terminates a transaction, both statements (COMMIT and ROLLBACK) would lead to an exception. Changes that are executed in a trigger should be committed (or rolled back) by the owning transaction that started the trigger. Example (Oracle): 'CREATE TABLE employee_audit\n(\n id INT NOT NULL,\n update_date DATE NOT NULL,\n old_name VARCHAR2(100),\n new_name VARCHAR2(100)\n);\n\nCREATE TABLE employees\n(\n id INT NOT NULL,\n name VARCHAR2(100) NOT NULL\n);\n\nCREATE OR REPLACE TRIGGER trig_commit\n AFTER UPDATE OF name\n ON employees\n FOR EACH ROW\nBEGIN\n INSERT INTO employee_audit VALUES (:old.id, SYSDATE, :old.name, :new.name);\n COMMIT;\nEND;\n\nCREATE OR REPLACE TRIGGER trig_rollback\n AFTER UPDATE OF name\n ON employees\n FOR EACH ROW\nBEGIN\n INSERT INTO employee_audit VALUES (:old.id, SYSDATE, :old.name, :new.name);\n ROLLBACK;\nEND;'",
+ "markdown": "Reports usages of transaction management statements like COMMIT or ROLLBACK in trigger bodies.\n\nWith COMMIT or ROLLBACK statements in a trigger body, the trigger will not compile.\nThe fail happens because triggers start during transactions. When the trigger starts the current transaction is still not complete. As\nCOMMIT\nterminates a transaction, both statements (COMMIT and ROLLBACK) would lead to an exception.\nChanges that are executed in a trigger should be committed (or rolled back) by the owning transaction that started the trigger.\n\nExample (Oracle):\n\n CREATE TABLE employee_audit\n (\n id INT NOT NULL,\n update_date DATE NOT NULL,\n old_name VARCHAR2(100),\n new_name VARCHAR2(100)\n );\n\n CREATE TABLE employees\n (\n id INT NOT NULL,\n name VARCHAR2(100) NOT NULL\n );\n\n CREATE OR REPLACE TRIGGER trig_commit\n AFTER UPDATE OF name\n ON employees\n FOR EACH ROW\n BEGIN\n INSERT INTO employee_audit VALUES (:old.id, SYSDATE, :old.name, :new.name);\n COMMIT;\n END;\n\n CREATE OR REPLACE TRIGGER trig_rollback\n AFTER UPDATE OF name\n ON employees\n FOR EACH ROW\n BEGIN\n INSERT INTO employee_audit VALUES (:old.id, SYSDATE, :old.name, :new.name);\n ROLLBACK;\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlTransactionStatementInTrigger",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "OraMissingBodyInspection",
+ "shortDescription": {
+ "text": "Missing body for package/object type specification"
+ },
+ "fullDescription": {
+ "text": "Reports package and object type specifications that are missing body declarations. Package specifications and object types that declare routines as well as package specifications with cursors must have body declarations where those routines and cursors are implemented. Absence of a body leads to a runtime error when routines or cursors are invoked in program code. Example (Oracle): 'CREATE OR REPLACE PACKAGE ppp IS\n FUNCTION foo(a INT) RETURN INT;\nEND;'",
+ "markdown": "Reports package and object type specifications that are missing body declarations.\n\nPackage specifications and object types that declare routines as well as package specifications with cursors must have body\ndeclarations where those routines and cursors are implemented. Absence of a body leads to a runtime error when routines or cursors are\ninvoked in program code.\n\nExample (Oracle):\n\n CREATE OR REPLACE PACKAGE ppp IS\n FUNCTION foo(a INT) RETURN INT;\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlMissingBody",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Oracle",
+ "index": 123,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlCheckUsingColumnsInspection",
+ "shortDescription": {
+ "text": "Check using clause columns"
+ },
+ "fullDescription": {
+ "text": "Reports columns in the USING clause that does not exist in both tables. Example (MySQL): 'CREATE TABLE t1 (i INT, j INT);\nCREATE TABLE t2 (k INT, l INT);\nSELECT * FROM t1 JOIN t2 USING (j);' In USING clauses, a column name must be present in both tables, and the SELECT query will automatically join those tables by using the given column name. As we do not have the 'j' column in 't2', we can rewrite the query using ON. The ON clause can join tables where the column names do not match in both tables. 'SELECT * FROM t1 JOIN t2 ON t1.j = t2.l;'",
+ "markdown": "Reports columns in the USING clause that does not exist in both tables.\n\nExample (MySQL):\n\n CREATE TABLE t1 (i INT, j INT);\n CREATE TABLE t2 (k INT, l INT);\n SELECT * FROM t1 JOIN t2 USING (j);\n\nIn USING clauses, a column name must be present in both tables, and the SELECT query will automatically join\nthose tables by using the given column name. As we do not have the `j` column in `t2`, we can\nrewrite the query using ON. The ON clause can join tables where the column names do not match in both tables.\n\n SELECT * FROM t1 JOIN t2 ON t1.j = t2.l;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlCheckUsingColumns",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlInsertIntoGeneratedColumnInspection",
+ "shortDescription": {
+ "text": "Insertion into generated columns"
+ },
+ "fullDescription": {
+ "text": "Reports INSERT statements that assign values to generated columns. Generated columns can be read, but their values can not be directly written. Example (PostgreSQL): 'CREATE TABLE foo\n(\n col1 INT,\n col2 INT GENERATED ALWAYS AS (col1 + 1) STORED\n);\nINSERT INTO foo(col1, col2) VALUES (1, 2);'\n You cannot insert '2' into the 'col2' column because this column is generated. For this script to work, you can change '2' to DEFAULT. 'INSERT INTO foo(col1, col2) VALUES (1, DEFAULT);'",
+ "markdown": "Reports INSERT statements that assign values to generated columns. Generated columns can be read, but their values can not be directly written.\n\nExample (PostgreSQL):\n\n CREATE TABLE foo\n (\n col1 INT,\n col2 INT GENERATED ALWAYS AS (col1 + 1) STORED\n );\n INSERT INTO foo(col1, col2) VALUES (1, 2);\n\nYou cannot insert `2` into the `col2` column because this column is generated.\nFor this script to work, you can change `2` to DEFAULT.\n`INSERT INTO foo(col1, col2) VALUES (1, DEFAULT);`"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlInsertIntoGeneratedColumn",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MsOrderByInspection",
+ "shortDescription": {
+ "text": "ORDER BY in queries"
+ },
+ "fullDescription": {
+ "text": "Reports usages when the 'ORDER BY' clause is used without 'TOP', 'OFFSET', or 'FOR XML' in views, inline functions, derived tables, subqueries, and common table expressions. For more information about usages of 'ORDER BY', see SELECT - ORDER BY Clause (Transact-SQL) at docs.microsoft.com. Example (Microsoft SQL server): 'CREATE TABLE foo (a INT NOT NULL, b INT NOT NULL);\n\nSELECT *\nFROM (SELECT a, b\nFROM foo A\nWHERE a < 89\nORDER BY b) ALIAS;' In a subquery, ORDER BY will be highlighted as an error. You can add TOP, OFFSET, or FOR XML to a subquery. Alternatively, use the Delete element quick-fix to delete the ORDER BY section. After the quick-fix is applied: 'SELECT *\nFROM (SELECT a, b\nFROM foo A\nWHERE a < 89) ALIAS;'",
+ "markdown": "Reports usages when the `ORDER BY` clause is used without `TOP`, `OFFSET`, or `FOR XML` in views, inline functions, derived tables, subqueries, and common table expressions.\n\nFor more information about usages of `ORDER BY`, see [SELECT - ORDER BY Clause (Transact-SQL) at\ndocs.microsoft.com](https://docs.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql).\n\nExample (Microsoft SQL server):\n\n CREATE TABLE foo (a INT NOT NULL, b INT NOT NULL);\n\n SELECT *\n FROM (SELECT a, b\n FROM foo A\n WHERE a < 89\n ORDER BY b) ALIAS;\n\nIn a subquery, ORDER BY will be highlighted as an error. You can add TOP, OFFSET, or FOR XML to a subquery.\nAlternatively, use the **Delete element** quick-fix to delete the ORDER BY section.\n\nAfter the quick-fix is applied:\n\n SELECT *\n FROM (SELECT a, b\n FROM foo A\n WHERE a < 89) ALIAS;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "MsOrderBy",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL server",
+ "index": 102,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlDeprecateTypeInspection",
+ "shortDescription": {
+ "text": "Deprecated type"
+ },
+ "fullDescription": {
+ "text": "Reports usages of types that are deprecated and might disappear in future versions of DBMS. Reported types: LONG in Oracle (see Deprecated and Desupported Features at docs.oracle.com). TEXT, NTEXT, and IMAGE in Microsoft SQL Server (see Deprecated Database Engine Features in SQL Server 2016 at docs.microsoft.com). Example (Oracle): 'CREATE TABLE ot.foo(\na NUMBER GENERATED BY DEFAULT AS IDENTITY,\nb LONG NOT NULL\n);'",
+ "markdown": "Reports usages of types that are deprecated and might disappear in future versions of DBMS.\n\nReported types:\n\n* LONG in Oracle (see [Deprecated\n and Desupported Features at docs.oracle.com](https://docs.oracle.com/cd/A91202_01/901_doc/server.901/a90120/ch4_dep.htm#6690)).\n* TEXT, NTEXT, and IMAGE in Microsoft SQL Server (see [Deprecated Database Engine Features in SQL Server 2016 at docs.microsoft.com](https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016?view=sql-server-ver15)).\n\nExample (Oracle):\n\n CREATE TABLE ot.foo(\n a NUMBER GENERATED BY DEFAULT AS IDENTITY,\n b LONG NOT NULL\n );\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlDeprecateType",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlGotoInspection",
+ "shortDescription": {
+ "text": "Usages of GOTO statements"
+ },
+ "fullDescription": {
+ "text": "Reports usages of backward GOTO statements and GOTO statements used to exit a loop. The extensive use of GOTO statements is generally not recommended. For details, see GOTO statement in SQL procedures at ibm.com. Instead of jumping back to a previous statement using GOTO, consider using a loop. Instead of exiting the WHILE loop with GOTO, consider using other control-of-flow statements (for example, RETURN or BREAK). Example (Oracle): 'CREATE PROCEDURE test(n INT) AS\nDECLARE\n x INT;\nBEGIN\n x := 0;\n GOTO a;\n <> x := 1;\n IF (n = 0) THEN\n GOTO a;\n END IF;\n WHILE TRUE\n LOOP\n GOTO b;\n END LOOP;\n <> x := 3;\nEND;'",
+ "markdown": "Reports usages of backward GOTO statements and GOTO statements used to exit a loop.\n\nThe extensive use of GOTO statements is generally\nnot recommended. For details, see [GOTO statement in\nSQL\nprocedures at ibm.com](https://www.ibm.com/docs/no/db2/11.5?topic=procedures-goto-statement-in-sql).\n\nInstead of jumping back to a previous statement using GOTO, consider using a loop.\n\nInstead of exiting the WHILE loop with GOTO, consider using other control-of-flow statements (for example, RETURN or BREAK).\n\nExample (Oracle):\n\n CREATE PROCEDURE test(n INT) AS\n DECLARE\n x INT;\n BEGIN\n x := 0;\n GOTO a;\n <> x := 1;\n IF (n = 0) THEN\n GOTO a;\n END IF;\n WHILE TRUE\n LOOP\n GOTO b;\n END LOOP;\n <> x := 3;\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlGoto",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MysqlLoadDataPathInspection",
+ "shortDescription": {
+ "text": "LOAD statement path"
+ },
+ "fullDescription": {
+ "text": "Reports paths that start with the tilde character in LOAD statements. Example (MySQL): 'CREATE TABLE table_name (id int);\nLOAD DATA LOCAL INFILE '~/Documents/some_file.txt'\nINTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\n'\nIGNORE 1 LINES;' Instead of the tilde character, use a full path to the file.",
+ "markdown": "Reports paths that start with the tilde character in LOAD statements.\n\nExample (MySQL):\n\n CREATE TABLE table_name (id int);\n LOAD DATA LOCAL INFILE '~/Documents/some_file.txt'\n INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\n'\n IGNORE 1 LINES;\n\nInstead of the tilde character, use a full path to the file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MysqlLoadDataPath",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MySQL",
+ "index": 142,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlDtInspection",
+ "shortDescription": {
+ "text": "Ill-formed date/time literals"
+ },
+ "fullDescription": {
+ "text": "Reports errors in date and time literals. This inspection is available in MySQL, Oracle, Db2, and H2. Example (MySQL): 'SELECT TIME '10 -12:13:14' FROM dual;\nSELECT TIME ' 12 : 13 : 14 ' FROM dual;\nSELECT TIME '12 13 14' FROM dual;\nSELECT TIME '12-13-14' FROM dual;\nSELECT TIME '12.13.14' FROM dual;\nSELECT TIME '12:13:' FROM dual;\nSELECT TIME '12:13' FROM dual;\nSELECT TIME '12:' FROM dual;' In this example, dates ignore the MySQL standard for date and time literals. Therefore, they will be highlighted. For more information about date and time literals in MySQL, see Date and Time Literals at dev.mysql.com. The following date and type literals are valid for MySQL. 'SELECT TIME '12:13:14' FROM dual;\nSELECT TIME '12:13:14.555' FROM dual;\nSELECT TIME '12:13:14.' FROM dual;\nSELECT TIME '-12:13:14' FROM dual;\nSELECT TIME '10 12:13:14' FROM dual;\nSELECT TIME '-10 12:13:14' FROM dual;'",
+ "markdown": "Reports errors in date and time literals. This inspection is available in MySQL, Oracle, Db2, and H2.\n\nExample (MySQL):\n\n SELECT TIME '10 -12:13:14' FROM dual;\n SELECT TIME ' 12 : 13 : 14 ' FROM dual;\n SELECT TIME '12 13 14' FROM dual;\n SELECT TIME '12-13-14' FROM dual;\n SELECT TIME '12.13.14' FROM dual;\n SELECT TIME '12:13:' FROM dual;\n SELECT TIME '12:13' FROM dual;\n SELECT TIME '12:' FROM dual;\n\nIn this example, dates ignore the MySQL standard for date and time literals. Therefore, they will be highlighted.\nFor more information about date and time literals in MySQL, see [Date and Time Literals at dev.mysql.com](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html).\n\nThe following date and type literals are valid for MySQL.\n\n SELECT TIME '12:13:14' FROM dual;\n SELECT TIME '12:13:14.555' FROM dual;\n SELECT TIME '12:13:14.' FROM dual;\n SELECT TIME '-12:13:14' FROM dual;\n SELECT TIME '10 12:13:14' FROM dual;\n SELECT TIME '-10 12:13:14' FROM dual;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlDateTime",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlNoDataSourceInspection",
+ "shortDescription": {
+ "text": "No data sources configured"
+ },
+ "fullDescription": {
+ "text": "Reports the absence of data sources in the Database tool window (View | Tool Windows | Database).",
+ "markdown": "Reports the absence of data sources in the **Database** tool window (**View \\| Tool Windows \\| Database**)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlNoDataSourceInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlConstantExpressionInspection",
+ "shortDescription": {
+ "text": "Constant expression"
+ },
+ "fullDescription": {
+ "text": "Reports conditions and expressions that are always true, false or null. Example (MySQL): 'CREATE TABLE t1 (a TEXT, b INT, c BOOLEAN);\nSELECT a FROM t1 WHERE 'Cat' = 'Cat';\nSELECT a FROM t1 WHERE 'Cat' = null;' The ''Cat' = 'Cat'' is always true and will be reported. The ''Cat' = null' is always null and will be reported.",
+ "markdown": "Reports conditions and expressions that are always true, false or null.\n\nExample (MySQL):\n\n CREATE TABLE t1 (a TEXT, b INT, c BOOLEAN);\n SELECT a FROM t1 WHERE 'Cat' = 'Cat';\n SELECT a FROM t1 WHERE 'Cat' = null;\n\nThe `'Cat' = 'Cat'` is always true and will be reported.\n\nThe `'Cat' = null` is always null and will be reported."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlConstantExpression",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "OraUnmatchedForwardDeclarationInspection",
+ "shortDescription": {
+ "text": "Forward declaration without definition"
+ },
+ "fullDescription": {
+ "text": "Reports declarations of procedures and functions that are missing their implementation in code. In Oracle, you can declare a procedure or a function without its body, and write the implementation later. The inspection will report names of such procedures or functions that are left without implementation. Example (Oracle): 'DECLARE PROCEDURE foo(a int, b varchar2);\nBEGIN\n NULL;\nEND;' The 'foo' procedure is declared but is missing implementation. We can add the implementation to get rid of the error. 'DECLARE PROCEDURE foo(a int, b varchar2);\n PROCEDURE foo(a int, b varchar2) IS\nBEGIN\n NULL;\nEND;\nBEGIN\n NULL;\nEND;'",
+ "markdown": "Reports declarations of procedures and functions that are missing their implementation in code.\n\nIn Oracle, you can declare a procedure or a function without its body, and write the implementation later. The inspection will report names\nof such procedures or functions that are left without implementation.\n\nExample (Oracle):\n\n DECLARE PROCEDURE foo(a int, b varchar2);\n BEGIN\n NULL;\n END;\n\nThe `foo` procedure is declared but is missing implementation. We can add the implementation to get rid of the error.\n\n DECLARE PROCEDURE foo(a int, b varchar2);\n PROCEDURE foo(a int, b varchar2) IS\n BEGIN\n NULL;\n END;\n BEGIN\n NULL;\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "SqlUnmatchedForwardDeclaration",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Oracle",
+ "index": 123,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlWithoutWhereInspection",
+ "shortDescription": {
+ "text": "Delete or update statement without where clauses"
+ },
+ "fullDescription": {
+ "text": "Reports usages of DELETE or UPDATE statements without WHERE clauses. Without WHERE clauses, DELETE drops all the data from the table, and UPDATE overwrites values for all the table rows. Example (MySQL): 'CREATE TABLE t1 (a TEXT, b INT, c BOOLEAN);\nupdate t1 set a = 'Smith';\ndelete from t1;'",
+ "markdown": "Reports usages of DELETE or UPDATE statements without WHERE clauses.\n\nWithout WHERE clauses, DELETE drops all the data from the table, and UPDATE overwrites values for all the table rows.\n\nExample (MySQL):\n\n CREATE TABLE t1 (a TEXT, b INT, c BOOLEAN);\n update t1 set a = 'Smith';\n delete from t1;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlWithoutWhere",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MongoJSSideEffectsInspection",
+ "shortDescription": {
+ "text": "Statement with side effects"
+ },
+ "fullDescription": {
+ "text": "Reports statements that can cause side effects while the data source is in read-only mode. For more information about enabling read-only mode, see Enable read-only mode for a connection in the IDE documentation. The Disable read-only mode quick-fix turns off the read-only mode for the respective data source. Example: 'db.my_collection.insertOne()'",
+ "markdown": "Reports statements that can cause side effects while the data source is in read-only mode.\n\nFor more information about enabling read-only mode, see\n[Enable\nread-only mode for a connection in the IDE documentation](https://www.jetbrains.com/help/datagrip/configuring-database-connections.html#enable-read-only-mode-for-a-connection).\n\nThe **Disable read-only mode** quick-fix turns off the read-only mode for the respective data source.\n\nExample:\n\n\n db.my_collection.insertOne()\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MongoJSSideEffects",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MongoJS",
+ "index": 89,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MongoJSExtSideEffectsInspection",
+ "shortDescription": {
+ "text": "Statement with side effects"
+ },
+ "fullDescription": {
+ "text": "Reports statements that may cause side effects while the data source is in read-only mode. The quick-fix turns off the read-only mode for the respective data source. Example: 'db.my_collection.insertOne()'",
+ "markdown": "Reports statements that may cause side effects while the data source is in read-only mode.\n\nThe quick-fix turns off the read-only mode for the respective data source.\n\nExample:\n\n\n db.my_collection.insertOne()\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MongoJSSideEffects",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MongoJS",
+ "index": 89,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlUnusedSubqueryItemInspection",
+ "shortDescription": {
+ "text": "Unused subquery item"
+ },
+ "fullDescription": {
+ "text": "Reports columns, aliases, and other subquery items that are not referenced in the outer query expression. Example (PostgreSQL): 'CREATE TABLE for_subquery(id INT);\nSELECT a, q FROM (SELECT 1 AS a, 10 AS b, 2 + 3 AS q, id\n FROM for_subquery) x;' We reference 'a' and 'q' aliases from a subquery. But the 'b' alias and the 'id' column are not referenced in the outer SELECT statement. Therefore, 'b' and 'id' are grayed out.",
+ "markdown": "Reports columns, aliases, and other subquery items that are not referenced in the outer query expression.\n\nExample (PostgreSQL):\n\n CREATE TABLE for_subquery(id INT);\n SELECT a, q FROM (SELECT 1 AS a, 10 AS b, 2 + 3 AS q, id\n FROM for_subquery) x;\n\nWe reference `a` and `q` aliases from a subquery. But the `b` alias and the `id` column are\nnot referenced in the outer SELECT statement. Therefore, `b` and `id` are grayed out."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlUnused",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlSideEffectsInspection",
+ "shortDescription": {
+ "text": "Statement with side effects"
+ },
+ "fullDescription": {
+ "text": "Reports statements that might lead to modification of a database during a read-only connection. To enable read-only mode for a connection, right-click a data source in the Database tool window (View | Tool Windows | Database) and select Properties. In the Data Sources and Drivers dialog, click the Options tab and select the Read-only checkbox. Example (MySQL): 'CREATE TABLE foo(a INT);\nINSERT INTO foo VALUES (1);' As 'CREATE TABLE' and 'INSERT INTO' statements lead to a database modification, these statements will be highlighted in read-only connection mode.",
+ "markdown": "Reports statements that might lead to modification of a database during a read-only connection.\n\nTo enable read-only mode for a\nconnection,\nright-click a data source in the **Database** tool window (**View \\| Tool Windows \\| Database** ) and select **Properties** .\nIn the **Data Sources and Drivers** dialog, click the **Options** tab and select the **Read-only** checkbox.\n\nExample (MySQL):\n\n CREATE TABLE foo(a INT);\n INSERT INTO foo VALUES (1);\n\nAs `CREATE TABLE` and `INSERT INTO` statements lead to a database modification, these statements will be highlighted\nin read-only connection mode."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlSideEffects",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlJoinWithoutOnInspection",
+ "shortDescription": {
+ "text": "Unsafe 'join' clause in 'delete' statement"
+ },
+ "fullDescription": {
+ "text": "Reports missing conditional checks for statements that might modify the whole database. For example, usages of JOIN clauses inside DELETE statements without ON or WHERE. Without conditional checks on JOIN, DELETE drops contents of the entire table. Example (MySQL): 'CREATE TABLE foo (a INT,b INT,c INT);\nCREATE TABLE bar (a INT,b INT,c INT);\n\nDELETE table1 FROM foo table1 INNER JOIN bar table2;'",
+ "markdown": "Reports missing conditional checks for statements that might modify the whole database.\n\nFor example, usages of JOIN clauses inside DELETE statements without ON or WHERE. Without conditional checks on JOIN, DELETE drops\ncontents of the entire table.\n\nExample (MySQL):\n\n CREATE TABLE foo (a INT,b INT,c INT);\n CREATE TABLE bar (a INT,b INT,c INT);\n\n DELETE table1 FROM foo table1 INNER JOIN bar table2;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlJoinWithoutOn",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlDropIndexedColumnInspection",
+ "shortDescription": {
+ "text": "Index is dependent on column"
+ },
+ "fullDescription": {
+ "text": "Reports cases when you try to drop columns from indexed tables. This inspection is available in Microsoft SQL Server and Sybase ASE. Example (Microsoft SQL Server): 'CREATE TABLE test_index\n(\ncol INT NOT NULL,\ncol2 INT NOT NULL,\ncol3 INT NOT NULL UNIQUE,\ncol4 VARCHAR(200)\n);\n\nCREATE UNIQUE INDEX aaaa ON test_index (col, col2);\n\nALTER TABLE test_index\nDROP COLUMN col;' You cannot delete the 'col' column because it is in the indexed table. To delete the column, you need to delete the 'aaaa' index first (for example, DROP INDEX aaaa).",
+ "markdown": "Reports cases when you try to drop columns from indexed tables. This inspection is available in Microsoft SQL Server and Sybase ASE.\n\nExample (Microsoft SQL Server):\n\n CREATE TABLE test_index\n (\n col INT NOT NULL,\n col2 INT NOT NULL,\n col3 INT NOT NULL UNIQUE,\n col4 VARCHAR(200)\n );\n\n CREATE UNIQUE INDEX aaaa ON test_index (col, col2);\n\n ALTER TABLE test_index\n DROP COLUMN col;\n\nYou cannot delete the `col` column because it is in the indexed table. To delete the column, you need to delete the\n`aaaa` index first (for example, DROP INDEX aaaa)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlDropIndexedColumn",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlTypeInspection",
+ "shortDescription": {
+ "text": "Types compatibility"
+ },
+ "fullDescription": {
+ "text": "Reports type-related errors.",
+ "markdown": "Reports type-related errors."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlType",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlUnicodeStringLiteralInspection",
+ "shortDescription": {
+ "text": "Unicode usage in SQL"
+ },
+ "fullDescription": {
+ "text": "Reports string literals that use national characters without the 'N' prefix. Without the N prefix, the string is converted to the default code page of the database. This default code page may not recognize certain characters. For more information, see nchar and nvarchar (Transact-SQL) at docs.microsoft.com. Example (Microsoft SQL Server): 'SELECT 'abcde' AS a;\nSELECT N'abcde' AS b;\nSELECT 'абвгд' AS c;\nSELECT N'абвгд' AS d;' The 'SELECT 'абвгд' AS c;' does not have the 'N' prefix, the ''абвгд'' part will be highlighted.",
+ "markdown": "Reports string literals that use national characters without the `N` prefix.\n\nWithout the N prefix, the string is converted to the default\ncode page of the database. This default code page may not recognize certain characters. For more information, see\n[nchar and nvarchar\n(Transact-SQL)\nat docs.microsoft.com](https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql).\n\nExample (Microsoft SQL Server):\n\n SELECT 'abcde' AS a;\n SELECT N'abcde' AS b;\n SELECT 'абвгд' AS c;\n SELECT N'абвгд' AS d;\n\nThe `SELECT 'абвгд' AS c;` does not have the `N` prefix, the `'абвгд'` part will be highlighted."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlUnicodeStringLiteral",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlUnusedVariableInspection",
+ "shortDescription": {
+ "text": "Unused variable"
+ },
+ "fullDescription": {
+ "text": "Reports unused arguments, variables, or parameters. Example (PostgreSQL): 'CREATE FUNCTION foo(PARAMUSED INT, PARAMUNUSED INT) RETURNS INT AS\n$$\nBEGIN\n RETURN PARAMUSED;\nEND\n$$ LANGUAGE plpgsql;' The 'PARAMUNUSED' parameter is not used in the function and might be deleted.",
+ "markdown": "Reports unused arguments, variables, or parameters.\n\nExample (PostgreSQL):\n\n CREATE FUNCTION foo(PARAMUSED INT, PARAMUNUSED INT) RETURNS INT AS\n $$\n BEGIN\n RETURN PARAMUSED;\n END\n $$ LANGUAGE plpgsql;\n\nThe `PARAMUNUSED` parameter is not used in the function and might be deleted."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlUnused",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "PgSelectFromProcedureInspection",
+ "shortDescription": {
+ "text": "Postgres: Select from procedure call"
+ },
+ "fullDescription": {
+ "text": "Reports situations when you make SELECT from a function or a DBLINK without an alias with a type (for example, 'AS t1(s VARCHAR)'). This requirement does not apply to scalar functions. Example (PostgreSQL): 'CREATE FUNCTION produce_a_table() RETURNS RECORD AS $$\nSELECT 1;\n$$ LANGUAGE sql;\nSELECT * FROM produce_a_table() AS s (c1 INT);\nSELECT * FROM produce_a_table() AS s (c1);\nSELECT * FROM DBLINK('dbname=mydb', 'SELECT proname, prosrc FROM pg_proc') AS t1;' The 'AS s (c1 INT)' has a typed alias, while 'AS s (c1)' and 'AS t1' do not. In this case, the second call of 'produce_a_table()' and 'DBLINK()' will be highlighted.",
+ "markdown": "Reports situations when you make SELECT from a function or a DBLINK without an alias with a type (for example, `AS t1(s VARCHAR)`).\n\nThis requirement does not apply to scalar functions.\n\nExample (PostgreSQL):\n\n CREATE FUNCTION produce_a_table() RETURNS RECORD AS $$\n SELECT 1;\n $$ LANGUAGE sql;\n SELECT * FROM produce_a_table() AS s (c1 INT);\n SELECT * FROM produce_a_table() AS s (c1);\n SELECT * FROM DBLINK('dbname=mydb', 'SELECT proname, prosrc FROM pg_proc') AS t1;\n\nThe `AS s (c1 INT)` has a typed alias, while `AS s (c1)` and `AS t1` do not.\nIn this case, the second call of `produce_a_table()` and `DBLINK()` will be highlighted."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PgSelectFromProcedure",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "PostgreSQL",
+ "index": 152,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlStorageInspection",
+ "shortDescription": {
+ "text": "SQL source modification detection"
+ },
+ "fullDescription": {
+ "text": "Reports situations when source code of a database object has been changed. The inspection is triggered when you perform database or object introspection. The introspection is run when you open source code of an object, run statements, and perform code refactoring. Also, you can run introspection by right-clicking an object and selecting Refresh. The inspection covers the following situations: Object source code was changed in the database but code in the editor was not updated. Works in PostgreSQL, Microsoft SQL Server, Oracle, and Sybase ASE. You changed the object source code, introspected the database, but source code has been already changed by someone else. The database introspector was updated in the IDE and you need to download new object properties that were missing in the previous introspector version.",
+ "markdown": "Reports situations when source code of a database object has been changed.\n\nThe inspection is triggered when you perform database or object introspection. The introspection is run when you open source code of an\nobject, run statements, and perform code refactoring.\nAlso, you can run introspection by right-clicking an object and selecting **Refresh**.\n\nThe inspection covers the following situations:\n\n* Object source code was changed in the database but code in the editor was not updated. Works in PostgreSQL, Microsoft SQL Server, Oracle, and Sybase ASE.\n* You changed the object source code, introspected the database, but source code has been already changed by someone else.\n* The database introspector was updated in the IDE and you need to download new object properties that were missing in the previous introspector version."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlStorageInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlSignatureInspection",
+ "shortDescription": {
+ "text": "Function signature"
+ },
+ "fullDescription": {
+ "text": "Reports signature issues for built-in functions. The inspection will report a wrong number of arguments, invalid keywords, wrong data types, and other issues. Example (MySQL): 'CREATE TABLE foo (a INT, b INT, c INT)\n\nSELECT IFNULL() FROM foo; -- error\nSELECT IFNULL(a) FROM foo; -- error\nSELECT IFNULL(a, b) FROM foo; -- OK\nSELECT IFNULL(a, b, c) FROM foo; -- error' In MySQL, the 'IFNULL()' function accepts strictly two arguments. So, only the 'SELECT IFNULL(a, b) FROM foo;' query is correct.",
+ "markdown": "Reports signature issues for built-in functions.\n\nThe inspection will report a wrong number of arguments, invalid keywords, wrong data types, and other issues.\n\nExample (MySQL):\n\n CREATE TABLE foo (a INT, b INT, c INT)\n\n SELECT IFNULL() FROM foo; -- error\n SELECT IFNULL(a) FROM foo; -- error\n SELECT IFNULL(a, b) FROM foo; -- OK\n SELECT IFNULL(a, b, c) FROM foo; -- error\n\nIn MySQL, the `IFNULL()` function accepts strictly two arguments. So, only the `SELECT IFNULL(a, b) FROM foo;`\nquery is correct."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlSignature",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlRedundantOrderingDirectionInspection",
+ "shortDescription": {
+ "text": "Redundant ordering direction"
+ },
+ "fullDescription": {
+ "text": "Reports redundant ordering directions like ASC and DESC in ORDER BY clauses. Example (MySQL): 'CREATE TABLE foo(a INT, b INT, c INT);\nSELECT * FROM foo ORDER BY a ASC, b DESC, c ASC;' The ORDER BY keyword sorts the records in the ascending order by default. So, the 'ASC' keyword for 'a' and 'c' columns is redundant.",
+ "markdown": "Reports redundant ordering directions like ASC and DESC in ORDER BY clauses.\n\nExample (MySQL):\n\n CREATE TABLE foo(a INT, b INT, c INT);\n SELECT * FROM foo ORDER BY a ASC, b DESC, c ASC;\n\nThe ORDER BY keyword sorts the records in the ascending order by default. So, the `ASC` keyword for `a` and\n`c` columns is redundant."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlRedundantOrderingDirection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "OraOverloadInspection",
+ "shortDescription": {
+ "text": "Overloading errors"
+ },
+ "fullDescription": {
+ "text": "Reports invalid cases of subprogram overloading in Oracle. Example (Oracle): 'DECLARE\n SUBTYPE fff IS BINARY_INTEGER;\n SUBTYPE ggg IS NATURAL;\n PROCEDURE foo (a IN ggg) IS BEGIN NULL; END;\n PROCEDURE foo (a IN fff) IS BEGIN NULL; END;\nBEGIN\n NULL;\nEND;' You cannot overload subprograms which parameters differ only in subtypes. For example, you cannot overload procedures where one accepts a BINARY INTEGER parameter and the other accepts a NATURAL parameter. For more information about restrictions on procedure overloading, see Restrictions on Overloading at docs.oracle.com.",
+ "markdown": "Reports invalid cases of subprogram overloading in Oracle.\n\nExample (Oracle):\n\n DECLARE\n SUBTYPE fff IS BINARY_INTEGER;\n SUBTYPE ggg IS NATURAL;\n PROCEDURE foo (a IN ggg) IS BEGIN NULL; END;\n PROCEDURE foo (a IN fff) IS BEGIN NULL; END;\n BEGIN\n NULL;\n END;\n\nYou cannot overload subprograms which parameters differ only in subtypes. For example, you cannot overload procedures where one accepts a\nBINARY INTEGER parameter and the other accepts a NATURAL parameter. For more information about restrictions on procedure overloading,\nsee [Restrictions on Overloading at docs.oracle.com](https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlOverload",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Oracle",
+ "index": 123,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MysqlSpaceAfterFunctionNameInspection",
+ "shortDescription": {
+ "text": "Whitespace between the function name and the open parenthesis"
+ },
+ "fullDescription": {
+ "text": "Reports any whitespace in a function call between the function name and the open parenthesis, which is not supported by default. Example (MySQL): 'SELECT MAX (qty) FROM orders;'",
+ "markdown": "Reports any whitespace in a function call between the function name and the open parenthesis, which is not supported by default.\n\nExample (MySQL):\n\n SELECT MAX (qty) FROM orders;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "MysqlSpaceAfterFunctionName",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MySQL",
+ "index": 142,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlAutoIncrementDuplicateInspection",
+ "shortDescription": {
+ "text": "Auto-increment duplicate"
+ },
+ "fullDescription": {
+ "text": "Reports tables that contain two columns with an automatic increment. In MySQL, Microsoft SQL Server, and Db2 dialects, a table can have only one field with a auto-increment option, and this field must be a key. Example (MySQL): 'CREATE TABLE my_table\n(\n id INT AUTO_INCREMENT,\n c2 INT AUTO_INCREMENT,\n);' The AUTO_INCREMENT constraint for 'c2' will be highlighted as 'c1' already has this constraint. To fix the warning, you can make 'id' a primary key and delete AUTO_INCREMENT for 'c2'. 'CREATE TABLE my_table\n(\n id INT AUTO_INCREMENT PRIMARY KEY,\n c2 INT,\n);'",
+ "markdown": "Reports tables that contain two columns with an automatic increment. In MySQL, Microsoft SQL Server, and Db2 dialects, a table can have only one field with a auto-increment option, and this field must be a key.\n\nExample (MySQL):\n\n CREATE TABLE my_table\n (\n id INT AUTO_INCREMENT,\n c2 INT AUTO_INCREMENT,\n );\n\nThe AUTO_INCREMENT constraint for `c2` will be highlighted as `c1` already has this constraint. To fix the warning,\nyou can make `id` a primary key and delete AUTO_INCREMENT for `c2`.\n\n CREATE TABLE my_table\n (\n id INT AUTO_INCREMENT PRIMARY KEY,\n c2 INT,\n );\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlAutoIncrementDuplicate",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlStringLengthExceededInspection",
+ "shortDescription": {
+ "text": "Implicit string truncation"
+ },
+ "fullDescription": {
+ "text": "Reports variables that exceed the defined length in characters. Example (Microsoft SQL Server): 'CREATE PROCEDURE test() AS\nBEGIN\nDECLARE myVarOk VARCHAR(5) = 'abcde';\nDECLARE myVarExceeded VARCHAR(5) = 'abcde12345';\n\nSET myVarOk = 'xyz';\nSET myVarExceeded = '123456789';\nEND;' The 'myVarExceeded' variable is defined as 'VARCHAR(5)' but both assigned values (''abcde12345'' and ''123456789'') exceed this limitation. You can truncate assigned values or increase the defined length. To increase the length, use the Increase type length quick-fix. After the quick-fix is applied: 'CREATE PROCEDURE test() AS\nBEGIN\nDECLARE myVarOk VARCHAR(5) = 'abcde';\nDECLARE myVarExceeded VARCHAR(10) = 'abcde12345';\n\nSET myVarOk = 'xyz';\nSET myVarExceeded = '123456789';\nEND;'",
+ "markdown": "Reports variables that exceed the defined length in characters.\n\nExample (Microsoft SQL Server):\n\n CREATE PROCEDURE test() AS\n BEGIN\n DECLARE myVarOk VARCHAR(5) = 'abcde';\n DECLARE myVarExceeded VARCHAR(5) = 'abcde12345';\n\n SET myVarOk = 'xyz';\n SET myVarExceeded = '123456789';\n END;\n\nThe `myVarExceeded` variable is defined as `VARCHAR(5)` but both assigned values (`'abcde12345'` and\n`'123456789'`) exceed this limitation. You can truncate assigned values or increase the defined length.\nTo increase the length, use the **Increase type length** quick-fix.\n\nAfter the quick-fix is applied:\n\n CREATE PROCEDURE test() AS\n BEGIN\n DECLARE myVarOk VARCHAR(5) = 'abcde';\n DECLARE myVarExceeded VARCHAR(10) = 'abcde12345';\n\n SET myVarOk = 'xyz';\n SET myVarExceeded = '123456789';\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlStringLengthExceeded",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MysqlParsingInspection",
+ "shortDescription": {
+ "text": "Unsupported syntax in pre-8.0 versions"
+ },
+ "fullDescription": {
+ "text": "Reports invalid usages of UNION in queries. The inspection works in MySQL versions that are earlier than 8.0. Example (MySQL): 'SELECT * FROM (SELECT 1 UNION (SELECT 1 UNION SELECT 2)) a;'",
+ "markdown": "Reports invalid usages of UNION in queries.\n\nThe inspection works in MySQL versions that are earlier than 8.0.\n\nExample (MySQL):\n\n\n SELECT * FROM (SELECT 1 UNION (SELECT 1 UNION SELECT 2)) a;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MysqlParsing",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MySQL",
+ "index": 142,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlCallNotationInspection",
+ "shortDescription": {
+ "text": "Using of named and positional arguments"
+ },
+ "fullDescription": {
+ "text": "Reports calls in which positional arguments go after the named ones. Works in PostgreSQL, Oracle, and Db2. Example (In PostgreSQL): 'CREATE FUNCTION foo(a int, b int, c int) RETURNS int\n LANGUAGE plpgsql AS\n$$\nBEGIN\n RETURN a + b + c;\nEND\n$$;\nSELECT foo(a => 1, b => 2, c => 3);\n -- `3` goes after the named argument\nSELECT foo(1, b => 2, 3);\n -- `1` and `3` go after the named argument\nSELECT foo(b => 2, 1, 3);'",
+ "markdown": "Reports calls in which positional arguments go after the named ones. Works in PostgreSQL, Oracle, and Db2.\n\nExample (In PostgreSQL):\n\n CREATE FUNCTION foo(a int, b int, c int) RETURNS int\n LANGUAGE plpgsql AS\n $$\n BEGIN\n RETURN a + b + c;\n END\n $$;\n SELECT foo(a => 1, b => 2, c => 3);\n -- `3` goes after the named argument\n SELECT foo(1, b => 2, 3);\n -- `1` and `3` go after the named argument\n SELECT foo(b => 2, 1, 3);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "SqlCallNotation",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlShadowingAliasInspection",
+ "shortDescription": {
+ "text": "Column is shadowed by alias"
+ },
+ "fullDescription": {
+ "text": "Reports SELECT aliases with names that match column names in the FROM clause. Example (MySQL): 'CREATE TABLE foo (a INT, b INT, c INT);\nSELECT a b, c FROM foo;' The 'a' column uses the 'b' alias but the 'b' name is also used by the column from the 'foo' table.",
+ "markdown": "Reports SELECT aliases with names that match column names in the FROM clause.\n\nExample (MySQL):\n\n CREATE TABLE foo (a INT, b INT, c INT);\n SELECT a b, c FROM foo;\n\nThe `a` column uses the `b` alias but the `b` name is also used by the column from the `foo`\ntable."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlShadowingAlias",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlUnreachableCodeInspection",
+ "shortDescription": {
+ "text": "Unreachable code"
+ },
+ "fullDescription": {
+ "text": "Reports unreachable statements inside SQL routines. Example (Microsoft SQL Server): 'CREATE FUNCTION foo() RETURNS INT AS\nBEGIN\n THROW;\n RETURN 1;\nEND;' In Microsoft SQL Server, the 'THROW' statement raises an exception and transfers execution to the CATCH block of the TRY...CATCH construct. Therefore, the 'RETURN 1;' part will never be executed.",
+ "markdown": "Reports unreachable statements inside SQL routines.\n\nExample (Microsoft SQL Server):\n\n CREATE FUNCTION foo() RETURNS INT AS\n BEGIN\n THROW;\n RETURN 1;\n END;\n\nIn Microsoft SQL Server, the `THROW` statement raises an exception and transfers execution to the CATCH block of the TRY...CATCH\nconstruct. Therefore, the `RETURN 1;` part will never be executed."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlUnreachable",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlResolveInspection",
+ "shortDescription": {
+ "text": "Unresolved reference"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved SQL references. Example (MySQL): 'CREATE TABLE users(id INT, name VARCHAR(40));\nCREATE TABLE admins(id INT, col1 INT);\n\nSELECT users.id, admins.id FROM admins WHERE admins.id > 1;' The 'users.id' column is unresolved because the 'users' table is missing in the FROM clause.",
+ "markdown": "Reports unresolved SQL references.\n\nExample (MySQL):\n\n CREATE TABLE users(id INT, name VARCHAR(40));\n CREATE TABLE admins(id INT, col1 INT);\n\n SELECT users.id, admins.id FROM admins WHERE admins.id > 1;\n\nThe `users.id` column is unresolved because the `users` table is missing in the FROM clause."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "SqlResolve",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlRedundantLimitInspection",
+ "shortDescription": {
+ "text": "Redundant row limiting in queries"
+ },
+ "fullDescription": {
+ "text": "Reports redundant row limiting clauses like FETCH and LIMIT in queries. Example (PostgreSQL): 'CREATE TABLE foo(a INT);\n\nSELECT * FROM foo WHERE EXISTS(SELECT * FROM foo LIMIT 2);\nSELECT * FROM foo WHERE EXISTS(SELECT * FROM foo FETCH FIRST 2 ROWS ONLY);' To fix the warning, you can add OFFSET to limiting clauses. If OFFSET is missing, then LIMIT is redundant because the usage of LIMIT does not influence the operation result of EXISTS. In case with OFFSET, we skip first 'N' rows and this will influence the output. 'SELECT * FROM foo WHERE EXISTS(SELECT * FROM foo OFFSET 1 ROW LIMIT 2);\nSELECT * FROM foo WHERE EXISTS(SELECT * FROM foo OFFSET 1 ROW FETCH FIRST 2 ROWS ONLY);'",
+ "markdown": "Reports redundant row limiting clauses like FETCH and LIMIT in queries.\n\nExample (PostgreSQL):\n\n CREATE TABLE foo(a INT);\n\n SELECT * FROM foo WHERE EXISTS(SELECT * FROM foo LIMIT 2);\n SELECT * FROM foo WHERE EXISTS(SELECT * FROM foo FETCH FIRST 2 ROWS ONLY);\n\nTo fix the warning, you can add OFFSET to limiting clauses. If OFFSET is missing, then LIMIT is redundant because\nthe usage of LIMIT does not influence the operation result of EXISTS. In case with OFFSET, we skip first `N` rows and this will\ninfluence the output.\n\n SELECT * FROM foo WHERE EXISTS(SELECT * FROM foo OFFSET 1 ROW LIMIT 2);\n SELECT * FROM foo WHERE EXISTS(SELECT * FROM foo OFFSET 1 ROW FETCH FIRST 2 ROWS ONLY);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlRedundantLimit",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlDerivedTableAliasInspection",
+ "shortDescription": {
+ "text": "Each derived table should have alias"
+ },
+ "fullDescription": {
+ "text": "Reports derived tables without aliases. Example (MySQL): 'CREATE TABLE table1 (id INT, name VARCHAR(20), cats FLOAT);\nCREATE TABLE table2 (id INT, age INTEGER);\n\nSELECT id AS ID, name, cats, age\nFROM (SELECT table1.id, name, cats, age\nFROM table1\nJOIN table2 ON table1.id = table2.id);' According to Derived Tables at dev.mysql.com, an alias is mandatory. You can add the alias by using the Introduce alias quick-fix. After the quick-fix is applied: 'SELECT id AS ID, name, cats, age\nFROM (SELECT table1.id, name, cats, age\nFROM table1\nJOIN table2 ON table1.id = table2.id);'",
+ "markdown": "Reports derived tables without aliases.\n\nExample (MySQL):\n\n CREATE TABLE table1 (id INT, name VARCHAR(20), cats FLOAT);\n CREATE TABLE table2 (id INT, age INTEGER);\n\n SELECT id AS ID, name, cats, age\n FROM (SELECT table1.id, name, cats, age\n FROM table1\n JOIN table2 ON table1.id = table2.id);\n\nAccording to [Derived Tables at dev.mysql.com](https://dev.mysql.com/doc/refman/8.0/en/derived-tables.html), an alias is\nmandatory. You can add the alias by using the **Introduce alias** quick-fix.\n\nAfter the quick-fix is applied:\n\n SELECT id AS ID, name, cats, age\n FROM (SELECT table1.id, name, cats, age\n FROM table1\n JOIN table2 ON table1.id = table2.id);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlDerivedTableAlias",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlCaseVsCoalesceInspection",
+ "shortDescription": {
+ "text": "Using CASE instead of COALESCE function and vice versa"
+ },
+ "fullDescription": {
+ "text": "Reports situations when CASE and COALESCE calls are interchangeable. This inspection has the following intention actions: Replace with 'COALESCE' call and the opposite one Replace with CASE expression. Example (MySQL): 'SELECT\n -- this CASE may be replaced by COALESCE\n\tCASE\n\t\tWHEN C1 IS NOT NULL THEN C1\n\t\tELSE 0\n\t\tEND\nFROM dual;' In the example, the CASE statement can be replaced with 'SELECT COALESCE(C1, 0)' that produces the same output. If you prefer using CASE expressions, select the Prefer CASE expressions over COALESCE function option on the inspection page.",
+ "markdown": "Reports situations when CASE and COALESCE calls are interchangeable. This inspection has the following intention actions: **Replace\nwith 'COALESCE' call** and the opposite one **Replace with CASE expression** .\n\nExample (MySQL):\n\n SELECT\n -- this CASE may be replaced by COALESCE\n \tCASE\n \t\tWHEN C1 IS NOT NULL THEN C1\n \t\tELSE 0\n \t\tEND\n FROM dual;\n\nIn the example, the CASE statement can be replaced with `SELECT COALESCE(C1, 0)` that produces the same output.\n\nIf you prefer using CASE expressions, select the **Prefer CASE expressions over COALESCE function** option on\nthe inspection page."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlCaseVsCoalesce",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlRedundantCodeInCoalesceInspection",
+ "shortDescription": {
+ "text": "Redundant code in COALESCE call"
+ },
+ "fullDescription": {
+ "text": "Reports all the arguments except for the first expression that does not evaluate to NULL in COALESCE functions. Example (MySQL): 'SELECT COALESCE(NULL, NULL, NULL, 42, NULL, 'string') as a;' The first NOT NULL argument is '42', all other arguments will be grayed out.",
+ "markdown": "Reports all the arguments except for the first expression that does not evaluate to NULL in COALESCE functions.\n\nExample (MySQL):\n\n SELECT COALESCE(NULL, NULL, NULL, 42, NULL, 'string') as a;\n\nThe first NOT NULL argument is `42`, all other arguments will be grayed out."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlRedundantCodeInCoalesce",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlAggregatesInspection",
+ "shortDescription": {
+ "text": "Aggregate-related problems"
+ },
+ "fullDescription": {
+ "text": "Reports invalid usages of SQL aggregate functions. The following situations are considered: Columns that are used in HAVING and ORDER BY clauses but are missed in GROUP BY clauses. 'CREATE TABLE foo(id INT PRIMARY KEY, a INT, b INT);\nSELECT a, MAX(b) FROM foo GROUP BY a HAVING b > 0;\nSELECT * FROM foo GROUP BY a ORDER BY b;' This rule does not apply when grouping is made by the primary key. 'SELECT * FROM foo GROUP BY id ORDER BY b;' Aggregate functions in a wrong context. Usually, you can use aggregate functions in the following contexts: a list of expressions in SELECT; in HAVING and ORDER BY sections; and other dialect-specific cases. The following queries will display an error. 'SELECT a FROM foo WHERE MAX(b) > 0;\nSELECT a FROM foo GROUP BY MAX(a);' Nested calls of aggregate functions. 'SELECT MAX(SUM(a)) FROM foo GROUP BY a;' This rule does not apply to analytic functions. The following query is valid and correct. 'SELECT MAX(SUM(a) OVER ()) FROM foo;' Usages of HAVING without aggregate functions. In this case, consider rewriting your code using the WHERE section. 'SELECT a, MAX(b) FROM foo GROUP BY a HAVING a > 0;'",
+ "markdown": "Reports invalid usages of SQL aggregate functions.\n\nThe following situations are considered:\n\n* Columns that are used in HAVING and ORDER BY clauses but are missed in GROUP BY clauses.\n\n CREATE TABLE foo(id INT PRIMARY KEY, a INT, b INT);\n SELECT a, MAX(b) FROM foo GROUP BY a HAVING b > 0;\n SELECT * FROM foo GROUP BY a ORDER BY b;\n\n This rule does not apply when grouping is made by the primary key.\n\n SELECT * FROM foo GROUP BY id ORDER BY b;\n\n* Aggregate functions in a wrong context. Usually, you can use aggregate functions in the following contexts: a list of expressions in\n SELECT; in HAVING and ORDER BY sections; and other dialect-specific cases. The following queries will display an error.\n\n SELECT a FROM foo WHERE MAX(b) > 0;\n SELECT a FROM foo GROUP BY MAX(a);\n\n* Nested calls of aggregate functions.\n\n SELECT MAX(SUM(a)) FROM foo GROUP BY a;\n\n This rule does not apply to analytic functions. The following query is valid and correct.\n\n SELECT MAX(SUM(a) OVER ()) FROM foo;\n\n* Usages of HAVING without aggregate functions. In this case, consider rewriting your code using the WHERE section.\n\n SELECT a, MAX(b) FROM foo GROUP BY a HAVING a > 0;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlAggregates",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlMissingColumnAliasesInspection",
+ "shortDescription": {
+ "text": "Missing column aliases"
+ },
+ "fullDescription": {
+ "text": "Reports queries without explicit aliases in output expressions (for example, in the SELECT statement). Example (PostgreSQL): 'CREATE TABLE foo(a INT, b INT);\n\nSELECT 1, a + 1 AS A2, MAX(b) AS M\nFROM foo;'",
+ "markdown": "Reports queries without explicit aliases in output expressions (for example, in the SELECT statement).\n\nExample (PostgreSQL):\n\n CREATE TABLE foo(a INT, b INT);\n\n SELECT 1, a + 1 AS A2, MAX(b) AS M\n FROM foo;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlMissingColumnAliases",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlAddNotNullColumnInspection",
+ "shortDescription": {
+ "text": "Adding not null column without default value"
+ },
+ "fullDescription": {
+ "text": "Reports attempts to create NOT NULL columns without DEFAULT values. Example (Microsoft SQL Server): 'CREATE TABLE foo (a INT, b INT)\n\nALTER TABLE foo ADD c INT NOT NULL;' By default, a column holds NULL values. In the example, we use the NOT NULL constraint that enforces a column not to accept NULL values. If we prohibit to use NULL values, we must set the DEFAULT value that SQL can use when we create a new record. 'ALTER TABLE foo ADD c INT NOT NULL DEFAULT 42;' You can quickly add the DEFAULT value by using the Add DEFAULT value quick-fix.",
+ "markdown": "Reports attempts to create NOT NULL columns without DEFAULT values.\n\nExample (Microsoft SQL Server):\n\n CREATE TABLE foo (a INT, b INT)\n\n ALTER TABLE foo ADD c INT NOT NULL;\n\nBy default, a column holds NULL values. In the example, we use the NOT NULL constraint that enforces a column not to accept NULL values.\nIf we prohibit to use NULL values, we must set the DEFAULT value that SQL can use when we create a new record.\n\n ALTER TABLE foo ADD c INT NOT NULL DEFAULT 42;\n\nYou can quickly add the DEFAULT value by using the **Add DEFAULT value** quick-fix."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlAddNotNullColumn",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MongoJSExtResolveInspection",
+ "shortDescription": {
+ "text": "Resolution problems"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved references in MongoDB and JavaScript code.",
+ "markdown": "Reports unresolved references in MongoDB and JavaScript code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MongoJSResolve",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "MongoJS",
+ "index": 89,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlJoinCountInspection",
+ "shortDescription": {
+ "text": "Excessive JOIN count"
+ },
+ "fullDescription": {
+ "text": "Reports queries with excessive number of JOINS. Using too many joins is generally not recommended for performance reasons. 'SELECT * FROM a inner join b using(id) inner join c using (id) inner join d using (id) inner join e using (id)'",
+ "markdown": "Reports queries with excessive number of JOINS.\n\nUsing too many joins is generally\nnot recommended for performance reasons.\n\n SELECT * FROM a inner join b using(id) inner join c using (id) inner join d using (id) inner join e using (id)\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlJoinCount",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlIllegalCursorStateInspection",
+ "shortDescription": {
+ "text": "Illegal cursor state"
+ },
+ "fullDescription": {
+ "text": "Reports illegal cursor states inside SQL routines. A routine has CLOSE or FETCH statements but a cursor might be closed. A routine has the OPEN statement but a cursor might be opened. Example (Microsoft SQL Server): 'CREATE TABLE t(col INT);\n\nCREATE PROCEDURE foo() AS\nBEGIN\nDECLARE my_cursor CURSOR FOR SELECT * FROM t;\nDECLARE a INT;\nFETCH my_cursor INTO a;\nCLOSE my_cursor;\nEND;' According to CLOSE (Transact-SQL) at docs.microsoft.com, CLOSE must be issued on an open cursor, and CLOSE is not allowed on cursors that have only been declared or are already closed. So, we need to open the cursor to fix the warning. 'CREATE PROCEDURE foo() AS\nBEGIN\nDECLARE my_cursor CURSOR FOR SELECT * FROM t;\nDECLARE a INT;\nOPEN my_cursor;\nFETCH my_cursor INTO a;\nCLOSE my_cursor;\nEND;'",
+ "markdown": "Reports illegal cursor states inside SQL routines.\n\n* A routine has CLOSE or FETCH statements but a cursor might be closed.\n* A routine has the OPEN statement but a cursor might be opened.\n\nExample (Microsoft SQL Server):\n\n CREATE TABLE t(col INT);\n\n CREATE PROCEDURE foo() AS\n BEGIN\n DECLARE my_cursor CURSOR FOR SELECT * FROM t;\n DECLARE a INT;\n FETCH my_cursor INTO a;\n CLOSE my_cursor;\n END;\n\nAccording to [CLOSE (Transact-SQL) at\ndocs.microsoft.com](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/close-transact-sql), CLOSE must be issued on an open cursor, and CLOSE is not allowed on cursors that have only been declared or are\nalready closed. So, we need to open the cursor to fix the warning.\n\n CREATE PROCEDURE foo() AS\n BEGIN\n DECLARE my_cursor CURSOR FOR SELECT * FROM t;\n DECLARE a INT;\n OPEN my_cursor;\n FETCH my_cursor INTO a;\n CLOSE my_cursor;\n END;\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlIllegalCursorState",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlDuplicateColumnInspection",
+ "shortDescription": {
+ "text": "Duplicating column name in SELECT"
+ },
+ "fullDescription": {
+ "text": "Reports duplicated names of column aliases in SELECT lists. Example (Sybase ASE): 'CREATE TABLE t1 (a TEXT, b INT, c INT);\n\nSELECT a AS x, b AS x FROM t1;' The 'x' alias name is used for 'a' and 'b' columns. These assignments are highlighted as errors because you cannot use identical alias names for columns in Sybase ASE.",
+ "markdown": "Reports duplicated names of column aliases in SELECT lists.\n\nExample (Sybase ASE):\n\n CREATE TABLE t1 (a TEXT, b INT, c INT);\n\n SELECT a AS x, b AS x FROM t1;\n\nThe `x` alias name is used for `a` and `b` columns. These assignments are highlighted as errors because\nyou cannot use identical alias names for columns in Sybase ASE."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlDuplicateColumn",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SqlIdentifierInspection",
+ "shortDescription": {
+ "text": "Identifier should be quoted"
+ },
+ "fullDescription": {
+ "text": "Reports situations when you use SQL reserved keywords as identifier names in your query. Example (Microsoft SQL Server): 'CREATE TABLE select (identity INT IDENTITY NOT NULL, order INT NOT NULL);' We use 'select', 'identity', and 'order' as table and column names. But they are also reserved keywords in Microsoft SQL Server. Therefore, in order to use them as object names in the query, you must quote these identifiers. To quote them, you can use the Quote identifier quick-fix. After the quick-fix is applied: 'CREATE TABLE [select] ([identity] INT IDENTITY NOT NULL, [order] INT NOT NULL);'",
+ "markdown": "Reports situations when you use SQL reserved keywords as identifier names in your query.\n\nExample (Microsoft SQL Server):\n\n CREATE TABLE select (identity INT IDENTITY NOT NULL, order INT NOT NULL);\n\nWe use `select`, `identity`, and `order` as table and column names.\nBut they are also reserved keywords in Microsoft SQL Server.\nTherefore, in order to use them as object names in the query, you must quote these identifiers. To quote them, you can use the\n**Quote identifier** quick-fix.\n\nAfter the quick-fix is applied:\n\n CREATE TABLE [select] ([identity] INT IDENTITY NOT NULL, [order] INT NOT NULL);\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SqlIdentifier",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "SQL",
+ "index": 25,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.css",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "CssInvalidFunction",
+ "shortDescription": {
+ "text": "Invalid function"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown CSS function or an incorrect function parameter.",
+ "markdown": "Reports an unknown [CSS function](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Functions) or an incorrect function parameter."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidFunction",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssConvertColorToRgbInspection",
+ "shortDescription": {
+ "text": "Color could be replaced with rgb()"
+ },
+ "fullDescription": {
+ "text": "Reports an 'hsl()' or 'hwb()' color function or a hexadecimal color notation. Suggests replacing such color value with an equivalent 'rgb()' or 'rgba()' color function. Example: '#0c0fff' After the quick-fix is applied: 'rgb(12, 15, 255)'.",
+ "markdown": "Reports an `hsl()` or `hwb()` color function or a hexadecimal color notation.\n\nSuggests replacing such color value with an equivalent `rgb()` or `rgba()` color function.\n\n**Example:**\n\n #0c0fff\n\nAfter the quick-fix is applied:\n\n rgb(12, 15, 255).\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssConvertColorToRgbInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssOverwrittenProperties",
+ "shortDescription": {
+ "text": "Overwritten property"
+ },
+ "fullDescription": {
+ "text": "Reports a duplicated CSS property within a ruleset. Respects shorthand properties. Example: '.foo {\n margin-bottom: 1px;\n margin-bottom: 1px; /* duplicates margin-bottom */\n margin: 0; /* overrides margin-bottom */\n}'",
+ "markdown": "Reports a duplicated CSS property within a ruleset. Respects shorthand properties.\n\n**Example:**\n\n\n .foo {\n margin-bottom: 1px;\n margin-bottom: 1px; /* duplicates margin-bottom */\n margin: 0; /* overrides margin-bottom */\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssOverwrittenProperties",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidNestedSelector",
+ "shortDescription": {
+ "text": "Invalid nested selector"
+ },
+ "fullDescription": {
+ "text": "Reports a nested selector starting with an identifier or a functional notation.",
+ "markdown": "Reports a nested selector starting with an identifier or a functional notation."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssInvalidNestedSelector",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidHtmlTagReference",
+ "shortDescription": {
+ "text": "Invalid type selector"
+ },
+ "fullDescription": {
+ "text": "Reports a CSS type selector that matches an unknown HTML element.",
+ "markdown": "Reports a CSS [type selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors) that matches an unknown HTML element."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssInvalidHtmlTagReference",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssMissingSemicolon",
+ "shortDescription": {
+ "text": "Missing semicolon"
+ },
+ "fullDescription": {
+ "text": "Reports a missing semicolon at the end of a declaration.",
+ "markdown": "Reports a missing semicolon at the end of a declaration."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssMissingSemicolon",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Code style issues",
+ "index": 114,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidCustomPropertyAtRuleName",
+ "shortDescription": {
+ "text": "Invalid @property name"
+ },
+ "fullDescription": {
+ "text": "Reports an invalid custom property name. Custom property name should be prefixed with two dashes. Example: '@property invalid-property-name {\n ...\n}\n\n@property --valid-property-name {\n ...\n}'",
+ "markdown": "Reports an invalid custom property name. Custom property name should be prefixed with two dashes.\n\n**Example:**\n\n\n @property invalid-property-name {\n ...\n }\n\n @property --valid-property-name {\n ...\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidCustomPropertyAtRuleName",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssUnknownTarget",
+ "shortDescription": {
+ "text": "Unresolved file reference"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved file reference, for example, an incorrect path in an '@import' statement.",
+ "markdown": "Reports an unresolved file reference, for example, an incorrect path in an `@import` statement."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssUnknownTarget",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidCharsetRule",
+ "shortDescription": {
+ "text": "Misplaced or incorrect @charset"
+ },
+ "fullDescription": {
+ "text": "Reports a misplaced '@charset' at-rule or an incorrect charset value.",
+ "markdown": "Reports a misplaced `@charset` at-rule or an incorrect charset value."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssInvalidCharsetRule",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidPseudoSelector",
+ "shortDescription": {
+ "text": "Invalid pseudo-selector"
+ },
+ "fullDescription": {
+ "text": "Reports an incorrect CSS pseudo-class pseudo-element.",
+ "markdown": "Reports an incorrect CSS [pseudo-class](https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes) [pseudo-element](https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidPseudoSelector",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidCustomPropertyAtRuleDeclaration",
+ "shortDescription": {
+ "text": "Invalid @property declaration"
+ },
+ "fullDescription": {
+ "text": "Reports a missing required syntax, inherits, or initial-value property in a declaration of a custom property.",
+ "markdown": "Reports a missing required [syntax](https://developer.mozilla.org/en-US/docs/web/css/@property/syntax), [inherits](https://developer.mozilla.org/en-US/docs/web/css/@property/inherits), or [initial-value](https://developer.mozilla.org/en-US/docs/web/css/@property/initial-value) property in a declaration of a custom property."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidCustomPropertyAtRuleDeclaration",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssBrowserCompatibilityForProperties",
+ "shortDescription": {
+ "text": "Property is incompatible with selected browsers"
+ },
+ "fullDescription": {
+ "text": "Reports a CSS property that is not supported by the specified browsers. Based on the MDN Compatibility Data.",
+ "markdown": "Reports a CSS property that is not supported by the specified browsers. Based on the [MDN Compatibility Data](https://github.com/mdn/browser-compat-data)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssBrowserCompatibilityForProperties",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidMediaFeature",
+ "shortDescription": {
+ "text": "Invalid media feature"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown CSS media feature or an incorrect media feature value.",
+ "markdown": "Reports an unknown [CSS media feature](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries) or an incorrect media feature value."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidMediaFeature",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssUnresolvedCustomProperty",
+ "shortDescription": {
+ "text": "Unresolved custom property"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved reference to a custom property among the arguments of the 'var()' function.",
+ "markdown": "Reports an unresolved reference to a [custom property](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) among the arguments of the `var()` function."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssUnresolvedCustomProperty",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssUnknownProperty",
+ "shortDescription": {
+ "text": "Unknown property"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown CSS property or a property used in a wrong context. Add the unknown property to the 'Custom CSS properties' list to skip validation.",
+ "markdown": "Reports an unknown CSS property or a property used in a wrong context.\n\nAdd the unknown property to the 'Custom CSS properties' list to skip validation."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssUnknownProperty",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssMissingComma",
+ "shortDescription": {
+ "text": "Missing comma in selector list"
+ },
+ "fullDescription": {
+ "text": "Reports a multi-line selector. Most likely this means that several single-line selectors are actually intended but a comma is missing at the end of one or several lines. Example: 'input /* comma has probably been forgotten */\n.button {\n margin: 1px;\n}'",
+ "markdown": "Reports a multi-line selector. Most likely this means that several single-line selectors are actually intended but a comma is missing at the end of one or several lines.\n\n**Example:**\n\n\n input /* comma has probably been forgotten */\n .button {\n margin: 1px;\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssMissingComma",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Probable bugs",
+ "index": 146,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssUnusedSymbol",
+ "shortDescription": {
+ "text": "Unused selector"
+ },
+ "fullDescription": {
+ "text": "Reports a CSS class or an element IDs that appears in selectors but is not used in HTML. Note that complete inspection results are available only when running it via Code | Inspect Code or Code | Analyze Code | Run Inspection by Name. Due to performance reasons, style sheet files are not inspected on the fly.",
+ "markdown": "Reports a CSS class or an element IDs that appears in selectors but is not used in HTML.\n\n\nNote that complete inspection results are available only when running it via **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name**.\nDue to performance reasons, style sheet files are not inspected on the fly."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssUnusedSymbol",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssDeprecatedValue",
+ "shortDescription": {
+ "text": "Deprecated value"
+ },
+ "fullDescription": {
+ "text": "Reports a deprecated CSS value. Suggests replacing the deprecated value with its valid equivalent.",
+ "markdown": "Reports a deprecated CSS value. Suggests replacing the deprecated value with its valid equivalent."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssDeprecatedValue",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssNonIntegerLengthInPixels",
+ "shortDescription": {
+ "text": "Non-integer length in pixels"
+ },
+ "fullDescription": {
+ "text": "Reports a non-integer length in pixels. Example: 'width: 3.14px'",
+ "markdown": "Reports a non-integer length in pixels.\n\n**Example:**\n\n width: 3.14px\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "CssNonIntegerLengthInPixels",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Probable bugs",
+ "index": 146,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssConvertColorToHexInspection",
+ "shortDescription": {
+ "text": "Color could be replaced with #-hex"
+ },
+ "fullDescription": {
+ "text": "Reports an 'rgb()', 'hsl()', or other color function. Suggests replacing a color function with an equivalent hexadecimal notation. Example: 'rgb(12, 15, 255)' After the quick-fix is applied: '#0c0fff'.",
+ "markdown": "Reports an `rgb()`, `hsl()`, or other color function.\n\nSuggests replacing a color function with an equivalent hexadecimal notation.\n\n**Example:**\n\n rgb(12, 15, 255)\n\nAfter the quick-fix is applied:\n\n #0c0fff.\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssConvertColorToHexInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidAtRule",
+ "shortDescription": {
+ "text": "Unknown at-rule"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown CSS at-rule.",
+ "markdown": "Reports an unknown [CSS at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidAtRule",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssNegativeValue",
+ "shortDescription": {
+ "text": "Negative property value"
+ },
+ "fullDescription": {
+ "text": "Reports a negative value of a CSS property that is not expected to be less than zero, for example, object width or height.",
+ "markdown": "Reports a negative value of a CSS property that is not expected to be less than zero, for example, object width or height."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssNegativeValue",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssNoGenericFontName",
+ "shortDescription": {
+ "text": "Missing generic font family name"
+ },
+ "fullDescription": {
+ "text": "Verifies that the 'font-family' property contains a generic font family name as a fallback alternative. Generic font family names are: 'serif', 'sans-serif', 'cursive', 'fantasy', and 'monospace'.",
+ "markdown": "Verifies that the [font-family](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) property contains a generic font family name as a fallback alternative.\n\n\nGeneric font family names are: `serif`, `sans-serif`, `cursive`, `fantasy`,\nand `monospace`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssNoGenericFontName",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Probable bugs",
+ "index": 146,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssRedundantUnit",
+ "shortDescription": {
+ "text": "Redundant measure unit"
+ },
+ "fullDescription": {
+ "text": "Reports a measure unit of a zero value where units are not required by the specification. Example: 'width: 0px'",
+ "markdown": "Reports a measure unit of a zero value where units are not required by the specification.\n\n**Example:**\n\n width: 0px\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssRedundantUnit",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Code style issues",
+ "index": 114,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidPropertyValue",
+ "shortDescription": {
+ "text": "Invalid property value"
+ },
+ "fullDescription": {
+ "text": "Reports an incorrect CSS property value.",
+ "markdown": "Reports an incorrect CSS property value."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssInvalidPropertyValue",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssReplaceWithShorthandUnsafely",
+ "shortDescription": {
+ "text": "Properties may probably be replaced with a shorthand"
+ },
+ "fullDescription": {
+ "text": "Reports a set of longhand CSS properties and suggests replacing an incomplete set of longhand CSS properties with a shorthand form, which is however not 100% equivalent in this case. For example, 2 properties: 'outline-color' and 'outline-style' may be replaced with a single 'outline'. Such replacement is not 100% equivalent because shorthands reset all omitted sub-values to their initial states. In this example, switching to the 'outline' shorthand means that 'outline-width' is also set to its initial value, which is 'medium'. This inspection doesn't handle full sets of longhand properties (when switching to shorthand is 100% safe). For such cases see the 'Properties may be safely replaced with a shorthand' inspection instead.",
+ "markdown": "Reports a set of longhand CSS properties and suggests replacing an incomplete set of longhand CSS properties with a shorthand form, which is however not 100% equivalent in this case.\n\n\nFor example, 2 properties: `outline-color` and `outline-style` may be replaced with a single `outline`.\nSuch replacement is not 100% equivalent because shorthands reset all omitted sub-values to their initial states.\nIn this example, switching to the `outline` shorthand means that `outline-width` is also set to its initial value,\nwhich is `medium`.\n\n\nThis inspection doesn't handle full sets of longhand properties (when switching to shorthand is 100% safe).\nFor such cases see the 'Properties may be safely replaced with a shorthand' inspection instead."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "CssReplaceWithShorthandUnsafely",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssUnknownUnit",
+ "shortDescription": {
+ "text": "Unknown unit"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown unit.",
+ "markdown": "Reports an unknown unit."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssUnknownUnit",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssInvalidImport",
+ "shortDescription": {
+ "text": "Misplaced @import"
+ },
+ "fullDescription": {
+ "text": "Reports a misplaced '@import' statement. According to the specification, '@import' rules must precede all other types of rules, except '@charset' rules.",
+ "markdown": "Reports a misplaced `@import` statement.\n\n\nAccording to the [specification](https://developer.mozilla.org/en-US/docs/Web/CSS/@import),\n`@import` rules must precede all other types of rules, except `@charset` rules."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CssInvalidImport",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssUnresolvedClassInComposesRule",
+ "shortDescription": {
+ "text": "Unresolved class in 'composes' rule"
+ },
+ "fullDescription": {
+ "text": "Reports a CSS class reference in the 'composes' rule that cannot be resolved to any valid target. Example: '.className {/* ... */}\n\n .otherClassName {\n composes: className;\n }'",
+ "markdown": "Reports a CSS class reference in the ['composes'](https://github.com/css-modules/css-modules#composition) rule that cannot be resolved to any valid target.\n\n**Example:**\n\n\n .className {/* ... */}\n\n .otherClassName {\n composes: className;\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CssUnresolvedClassInComposesRule",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Invalid elements",
+ "index": 30,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CssReplaceWithShorthandSafely",
+ "shortDescription": {
+ "text": "Properties may be safely replaced with a shorthand"
+ },
+ "fullDescription": {
+ "text": "Reports a set of longhand properties. Suggests replacing a complete set of longhand CSS properties with an equivalent shorthand form. For example, 4 properties: 'padding-top', 'padding-right', 'padding-bottom', and 'padding-left' can be safely replaced with a single 'padding' property. Note that this inspection doesn't show up if the set of longhand properties is incomplete (e.g. only 3 'padding-xxx' properties in a ruleset) because switching to a shorthand may change the result. For such cases consider the 'Properties may probably be replaced with a shorthand' inspection.",
+ "markdown": "Reports a set of longhand properties. Suggests replacing a complete set of longhand CSS properties with an equivalent shorthand form.\n\n\nFor example, 4 properties: `padding-top`, `padding-right`, `padding-bottom`, and\n`padding-left`\ncan be safely replaced with a single `padding` property.\n\n\nNote that this inspection doesn't show up if the set of longhand properties is incomplete\n(e.g. only 3 `padding-xxx` properties in a ruleset)\nbecause switching to a shorthand may change the result.\nFor such cases consider the 'Properties may probably be replaced with a shorthand'\ninspection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "CssReplaceWithShorthandSafely",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS",
+ "index": 29,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.kubernetes",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "KubernetesDeprecatedResources",
+ "shortDescription": {
+ "text": "Deprecated Kubernetes resources"
+ },
+ "fullDescription": {
+ "text": "Report deprecated Kubernetes resource types.",
+ "markdown": "Report deprecated Kubernetes resource types. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "KubernetesDeprecatedResources",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesNonEditableResources",
+ "shortDescription": {
+ "text": "Non-editable Kubernetes resources"
+ },
+ "fullDescription": {
+ "text": "Reports non-editable (read-only) Kubernetes resource types.",
+ "markdown": "Reports non-editable (read-only) Kubernetes resource types. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "KubernetesNonEditableResources",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesDeprecatedKeys",
+ "shortDescription": {
+ "text": "Deprecated Kubernetes resource properties"
+ },
+ "fullDescription": {
+ "text": "Reports deprecated keys in Kubernetes resource files.",
+ "markdown": "Reports deprecated keys in Kubernetes resource files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "KubernetesDeprecatedKeys",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesNonEditableKeys",
+ "shortDescription": {
+ "text": "Non-editable Kubernetes resource properties"
+ },
+ "fullDescription": {
+ "text": "Reports non-editable (read-only) keys in Kubernetes resource files.",
+ "markdown": "Reports non-editable (read-only) keys in Kubernetes resource files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "KubernetesNonEditableKeys",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HelmChartMissingKeys",
+ "shortDescription": {
+ "text": "Missing Chart.yaml keys"
+ },
+ "fullDescription": {
+ "text": "Reports missing required keys in Chart.yaml.",
+ "markdown": "Reports missing required keys in Chart.yaml. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "HelmChartMissingKeys",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesUnknownValues",
+ "shortDescription": {
+ "text": "Unknown Kubernetes YAML values"
+ },
+ "fullDescription": {
+ "text": "Reports invalid values in Kubernetes resource files.",
+ "markdown": "Reports invalid values in Kubernetes resource files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "KubernetesUnknownValues",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesUnknownKeys",
+ "shortDescription": {
+ "text": "Unknown Kubernetes YAML keys"
+ },
+ "fullDescription": {
+ "text": "Reports unrecognized keys in Kubernetes resource files.",
+ "markdown": "Reports unrecognized keys in Kubernetes resource files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "KubernetesUnknownKeys",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HelmChartUnknownValues",
+ "shortDescription": {
+ "text": "Invalid Chart.yaml values"
+ },
+ "fullDescription": {
+ "text": "Reports unrecognized values in Chart.yaml and requirements.yaml.",
+ "markdown": "Reports unrecognized values in Chart.yaml and requirements.yaml. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "HelmChartUnknownValues",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesMissingKeys",
+ "shortDescription": {
+ "text": "Missing Kubernetes YAML keys"
+ },
+ "fullDescription": {
+ "text": "Reports missing required keys in Kubernetes resource files.",
+ "markdown": "Reports missing required keys in Kubernetes resource files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "KubernetesMissingKeys",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesUnknownResourcesInspection",
+ "shortDescription": {
+ "text": "Unknown Kubernetes resources"
+ },
+ "fullDescription": {
+ "text": "Reports unrecognized Kubernetes resource types.",
+ "markdown": "Reports unrecognized Kubernetes resource types. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "KubernetesUnknownResourcesInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HelmChartUnknownKeys",
+ "shortDescription": {
+ "text": "Unknown Chart.yaml keys"
+ },
+ "fullDescription": {
+ "text": "Reports unrecognized keys in Chart.yaml.",
+ "markdown": "Reports unrecognized keys in Chart.yaml. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HelmChartUnknownKeys",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "KubernetesDuplicatedEnvVars",
+ "shortDescription": {
+ "text": "Duplicated EnvVar definitions"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate EnvVars in Kubernetes container definitions.",
+ "markdown": "Reports duplicate EnvVars in Kubernetes container definitions. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "KubernetesDuplicatedEnvVars",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Kubernetes",
+ "index": 33,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.properties",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "UseEllipsisInPropertyInspection",
+ "shortDescription": {
+ "text": "Three dot characters instead of the ellipsis"
+ },
+ "fullDescription": {
+ "text": "Reports three \"dot\" characters which are used instead of the ellipsis character for UTF-8 properties files.",
+ "markdown": "Reports three \"dot\" characters which are used instead of the ellipsis character for UTF-8 properties files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UseEllipsisInPropertyInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Properties files",
+ "index": 38,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AlphaUnsortedPropertiesFile",
+ "shortDescription": {
+ "text": "Properties file or resource bundle is alphabetically unsorted"
+ },
+ "fullDescription": {
+ "text": "Reports alphabetically unsorted resource bundles or .properties files.",
+ "markdown": "Reports alphabetically unsorted resource bundles or .properties files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "AlphaUnsortedPropertiesFile",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Properties files",
+ "index": 38,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UnusedProperty",
+ "shortDescription": {
+ "text": "Unused property"
+ },
+ "fullDescription": {
+ "text": "Reports properties that are not referenced outside of the .properties file they are contained in.",
+ "markdown": "Reports properties that are not referenced outside of the .properties file they are contained in."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnusedProperty",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Properties files",
+ "index": 38,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "TrailingSpacesInProperty",
+ "shortDescription": {
+ "text": "Trailing spaces in property"
+ },
+ "fullDescription": {
+ "text": "Reports properties whose keys or values end with a whitespace.",
+ "markdown": "Reports properties whose keys or values end with a whitespace."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TrailingSpacesInProperty",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Properties files",
+ "index": 38,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "WrongPropertyKeyValueDelimiter",
+ "shortDescription": {
+ "text": "Property key/value delimiter doesn't match code style settings"
+ },
+ "fullDescription": {
+ "text": "Reports properties in which key or value delimiters do not match code style settings.",
+ "markdown": "Reports properties in which key or value delimiters do not match code style settings."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "WrongPropertyKeyValueDelimiter",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Properties files",
+ "index": 38,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DuplicatePropertyInspection",
+ "shortDescription": {
+ "text": "Duplicate property"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate property keys with different values, duplicate keys, or duplicate property values. Example: 'property1=value;\nproperty2=value;' The Options list allows selecting the area in which the inspection should search for duplicates.",
+ "markdown": "Reports duplicate property keys with different values, duplicate keys, or duplicate property values.\n\nExample:\n\n\n property1=value;\n property2=value;\n\nThe **Options** list allows selecting the area in which the inspection should search for duplicates."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DuplicatePropertyInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Properties files",
+ "index": 38,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "XPathView",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "XsltUnusedDeclaration",
+ "shortDescription": {
+ "text": "Unused variable or parameter"
+ },
+ "fullDescription": {
+ "text": "Reports local variables and parameters that are never used.",
+ "markdown": "Reports local variables and parameters that are never used."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "XsltUnusedDeclaration",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XSLT",
+ "index": 43,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "RedundantTypeConversion",
+ "shortDescription": {
+ "text": "Redundant type conversion"
+ },
+ "fullDescription": {
+ "text": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a 'string()', 'number()', or 'boolean()' function is already the same as the function's return type or if the expected expression type is 'any'. Suggests removing the unnecessary conversion.",
+ "markdown": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a `string()`, `number()`, or `boolean()` function is already the same as the function's return type or if the expected expression type is `any`. Suggests removing the unnecessary conversion."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "RedundantTypeConversion",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XPath",
+ "index": 85,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CheckNodeTest",
+ "shortDescription": {
+ "text": "Unknown element or attribute name"
+ },
+ "fullDescription": {
+ "text": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime. Example: ' ' If the 'h' is bound to the XHTML namespace, the inspection will report this part of the 'match' expression as an unknown element name because the correct name of the element is \"textarea\".",
+ "markdown": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime.\n\n**Example:**\n\n\n \n\n\nIf the `h` is bound to the XHTML namespace, the inspection will report this part of the `match` expression as an\nunknown element name because the correct name of the element is \"textarea\"."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CheckNodeTest",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XPath",
+ "index": 85,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XsltDeclarations",
+ "shortDescription": {
+ "text": "Incorrect declaration"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:",
+ "markdown": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XsltDeclarations",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XSLT",
+ "index": 43,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HardwiredNamespacePrefix",
+ "shortDescription": {
+ "text": "Hardcoded namespace prefix"
+ },
+ "fullDescription": {
+ "text": "Reports comparisons of the 'name()' function with a string that contains a colon (':'). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace. Example: '...'",
+ "markdown": "Reports comparisons of the `name()` function with a string that contains a colon (`:`). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace.\n\n**Example:**\n\n\n ...\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HardwiredNamespacePrefix",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XPath",
+ "index": 85,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ImplicitTypeConversion",
+ "shortDescription": {
+ "text": "Implicit type conversion"
+ },
+ "fullDescription": {
+ "text": "Reports implicit conversions between the predefined XPath-types 'STRING', 'NUMBER', 'BOOLEAN', and 'NODESET'. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs: Example: ' ' is not the same as ' ' The first test checks whether the element \"foo\" exists ('count(foo) > 0)'; the latter one however is only true if the element actually contains any text ('string-length(foo) > 0'). Suggests making the type conversion more explicit. Use the following options to configure the inspection: Enable or disable implicit conversions between certain types Always report explicit conversions that do not result in the actually expected type, for example, ' ' Ignore conversion from 'NODESET' to 'BOOLEAN' by using the 'string()' function as a shortcut for writing 'string-length() > 0'.",
+ "markdown": "Reports implicit conversions between the predefined XPath-types `STRING`, `NUMBER`, `BOOLEAN`, and `NODESET`. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs:\n\n**Example:**\n\n\n \n\nis not the same as\n\n\n \n\n\nThe first test checks whether the element \"foo\" exists (`count(foo) > 0)`; the latter one however is only\ntrue if the element actually contains any text (`string-length(foo) > 0`). Suggests making\nthe type conversion more explicit.\n\n\nUse the following options to configure the inspection:\n\n* Enable or disable implicit conversions between certain types\n* Always report explicit conversions that do not result in the actually expected type, for example, ` `\n* Ignore conversion from `NODESET` to `BOOLEAN` by using the `string()` function as a shortcut for writing `string-length() > 0`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "ImplicitTypeConversion",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XPath",
+ "index": 85,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IndexZeroUsage",
+ "shortDescription": {
+ "text": "XPath predicate with index 0"
+ },
+ "fullDescription": {
+ "text": "Reports usages of '0' in a predicate index or in a comparison with the function 'position()'. Such usage is almost always a bug because in XPath, the index starts at '1', not at '0'. Example: '//someelement[position() = 0]' or '//something[0]'",
+ "markdown": "Reports usages of `0` in a predicate index or in a comparison with the function `position()`. Such usage is almost always a bug because in XPath, the index starts at `1`, *not* at `0`.\n\n**Example:**\n\n\n //someelement[position() = 0] or //something[0]\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "IndexZeroUsage",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XPath",
+ "index": 85,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XsltTemplateInvocation",
+ "shortDescription": {
+ "text": "Incorrect template invocation"
+ },
+ "fullDescription": {
+ "text": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations. Parameters declared with a default value are optional and will not be reported as missing.",
+ "markdown": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations.\n\n\nParameters declared with a default value are optional and will not be reported as missing."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "XsltTemplateInvocation",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XSLT",
+ "index": 43,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "XsltVariableShadowing",
+ "shortDescription": {
+ "text": "Shadowed variable"
+ },
+ "fullDescription": {
+ "text": "Reports shadowed XSLT variables.",
+ "markdown": "Reports shadowed XSLT variables."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "XsltVariableShadowing",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "XSLT",
+ "index": 43,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "Docker",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "DockerFileRunCommandMissingContinuation",
+ "shortDescription": {
+ "text": "Missing continuation character for ''RUN'' command"
+ },
+ "fullDescription": {
+ "text": "Reports missing continuation characters in 'RUN' command. In the shell form of 'RUN' command you should use a '\\' (backslash) to continue a single 'RUN' instruction onto the next line. Otherwise, Docker build will fail. Examples: '# the command below will fail\n RUN /bin/bash -c 'source $HOME/.bashrc;\n echo $HOME'' After the quick-fix is applied: 'RUN /bin/bash -c 'source $HOME/.bashrc; \\\n echo $HOME''",
+ "markdown": "Reports missing continuation characters in `RUN` command.\n\n\nIn the *shell* form of `RUN` command you should use a '\\\\' (backslash)\nto continue a single `RUN` instruction onto the next line.\nOtherwise, Docker build will fail.\n\n**Examples:**\n\n\n # the command below will fail\n RUN /bin/bash -c 'source $HOME/.bashrc;\n echo $HOME'\n\nAfter the quick-fix is applied:\n\n\n RUN /bin/bash -c 'source $HOME/.bashrc; \\\n echo $HOME'\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "DockerFileRunCommandMissingContinuation",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dockerfile",
+ "index": 44,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DockerJsonFormStringLiterals",
+ "shortDescription": {
+ "text": "A single quoted string in JSON array format"
+ },
+ "fullDescription": {
+ "text": "Reports a single quoted string in JSON array format. JSON array form, must use double-quotes (\") around words not single-quotes ('). Otherwise, Docker build will fail. Examples: '# all the commands below will fail\n RUN ['/bin/bash', '-c', 'echo hello']\n ADD ['binaryA.jar', 'binary2.jar', 'destination/']\n COPY ['binaryA.jar', 'binary2.jar', 'destination/']' After the quick-fix is applied: 'RUN [\"/bin/bash\", \"-c\", \"echo hello\"]\n ADD [\"binaryA.jar\", \"binary2.jar\", \"destination/\"]\n COPY [\"binaryA.jar\", \"binary2.jar\", \"destination/\"]'",
+ "markdown": "Reports a single quoted string in JSON array format.\n\n\nJSON array form, must use double-quotes (\") around words not single-quotes ('). Otherwise, Docker build will fail.\n\n**Examples:**\n\n\n # all the commands below will fail\n RUN ['/bin/bash', '-c', 'echo hello']\n ADD ['binaryA.jar', 'binary2.jar', 'destination/']\n COPY ['binaryA.jar', 'binary2.jar', 'destination/']\n\nAfter the quick-fix is applied:\n\n\n RUN [\"/bin/bash\", \"-c\", \"echo hello\"]\n ADD [\"binaryA.jar\", \"binary2.jar\", \"destination/\"]\n COPY [\"binaryA.jar\", \"binary2.jar\", \"destination/\"]\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DockerJsonFormStringLiterals",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dockerfile",
+ "index": 44,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DockerFileArgumentCount",
+ "shortDescription": {
+ "text": "Wrong number of arguments"
+ },
+ "fullDescription": {
+ "text": "Reports invalid number of arguments for the Dockerfile commands. Docker build will fail after reaching the instruction with an invalid number of arguments.",
+ "markdown": "Reports invalid number of arguments for the Dockerfile commands.\n\n\nDocker build will fail after reaching the instruction with an invalid number of arguments."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "DockerFileArgumentCount",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dockerfile",
+ "index": 44,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ComposeUnknownValues",
+ "shortDescription": {
+ "text": "Unknown docker-compose YAML values"
+ },
+ "fullDescription": {
+ "text": "Reports unrecognized values in Docker Compose files.",
+ "markdown": "Reports unrecognized values in Docker Compose files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "ComposeUnknownValues",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Docker-compose",
+ "index": 135,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DockerFileAddOrCopyPaths",
+ "shortDescription": {
+ "text": "Invalid destination for ''ADD''/''COPY'' commands"
+ },
+ "fullDescription": {
+ "text": "Reports invalid destination directories in 'ADD' and 'COPY' commands. According to the Dockerfile specification, if multiple sources are specified, then the destination must be a directory, and it must end with a slash '/'. Otherwise, Docker build will fail. Examples: '# all the commands below will fail\n ADD textA.txt textB.txt relativeDir\n ADD [\"binaryA.jar\", \"binary2.jar\", \"destination\"]\n COPY text3.txt text4.txt /absolute/path' After the quick-fix is applied: 'ADD textA.txt textB.txt relativeDir/\n ADD [\"binaryA.jar\", \"binary2.jar\", \"destination/\"]\n COPY text3.txt text4.txt /absolute/path/'",
+ "markdown": "Reports invalid destination directories in `ADD` and `COPY` commands.\n\n\nAccording to the [Dockerfile specification](https://docs.docker.com/engine/reference/builder/#add),\nif multiple sources are specified, then the destination must be a directory, and it must end with a slash '/'.\nOtherwise, Docker build will fail.\n\n**Examples:**\n\n\n # all the commands below will fail\n ADD textA.txt textB.txt relativeDir\n ADD [\"binaryA.jar\", \"binary2.jar\", \"destination\"]\n COPY text3.txt text4.txt /absolute/path\n\nAfter the quick-fix is applied:\n\n\n ADD textA.txt textB.txt relativeDir/\n ADD [\"binaryA.jar\", \"binary2.jar\", \"destination/\"]\n COPY text3.txt text4.txt /absolute/path/\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DockerFileAddOrCopyPaths",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dockerfile",
+ "index": 44,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ComposeMissingKeys",
+ "shortDescription": {
+ "text": "Missing docker-compose YAML keys"
+ },
+ "fullDescription": {
+ "text": "Reports missing required keys in Docker Compose files.",
+ "markdown": "Reports missing required keys in Docker Compose files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "ComposeMissingKeys",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Docker-compose",
+ "index": 135,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ComposeUnquotedPorts",
+ "shortDescription": {
+ "text": "Unquoted port mappings"
+ },
+ "fullDescription": {
+ "text": "Reports unquoted port mappings in Docker Compose files. According to the Compose file specification, mapping ports in the 'HOST:CONTAINER' format may lead to erroneous results when using a container port lower than 60, because YAML parses numbers in the format 'xx:yy' as a base-60 value. For this reason, we recommend always explicitly specifying the port mappings as strings. Examples: 'ports:\n - 3000\n - 3000-3005\n - 22:22\n - 8080:8080' After the quick-fix is applied: 'ports:\n - \"3000\"\n - \"3000-3005\"\n - \"22:22\"\n - \"8080:8080\"'",
+ "markdown": "Reports unquoted port mappings in Docker Compose files.\n\n\nAccording to the [Compose file specification](https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-1),\nmapping ports in the `HOST:CONTAINER` format may lead to erroneous results when using a container port lower than 60,\nbecause YAML parses numbers in the format `xx:yy` as a base-60 value.\nFor this reason, we recommend always explicitly specifying the port mappings as strings.\n\n**Examples:**\n\n\n ports:\n - 3000\n - 3000-3005\n - 22:22\n - 8080:8080\n\nAfter the quick-fix is applied:\n\n\n ports:\n - \"3000\"\n - \"3000-3005\"\n - \"22:22\"\n - \"8080:8080\"\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "ComposeUnquotedPorts",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Docker-compose",
+ "index": 135,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "ComposeUnknownKeys",
+ "shortDescription": {
+ "text": "Unknown docker-compose YAML keys"
+ },
+ "fullDescription": {
+ "text": "Reports unrecognized keys in Docker Compose files.",
+ "markdown": "Reports unrecognized keys in Docker Compose files. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "ComposeUnknownKeys",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Docker-compose",
+ "index": 135,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DockerFileAssignments",
+ "shortDescription": {
+ "text": "Invalid spaces in ''key=value'' pair"
+ },
+ "fullDescription": {
+ "text": "Reports incorrect spacing for key-value pairs in 'ARG', 'ENV', and 'LABEL' commands. While it is not explicitly specified in the Dockerfile specification, some combinations of spacing for key-value pairs are not allowed. Docker build will fail after reaching the problem instruction. Examples: The 'ARG' command does not allow any spaces around '=' 'ENV' and 'LABEL' do not allow spaces after '=' '# all the commands below will fail\n ARG answer = 42\n ARG version= \"1.0.0\"\n LABEL \"maintained.by\"= someone@gmail.com\n ENV JAVA_HOME= \"/docker-java-home\"' After the quick-fix is applied: 'ARG answer=2\n ARG version=\"1.0.0\"\n LABEL \"maintained.by\"=someone@gmail.com\n ENV JAVA_HOME=\"/docker-java-home\"'",
+ "markdown": "Reports incorrect spacing for key-value pairs in `ARG`, `ENV`, and `LABEL` commands.\n\n\nWhile it is not explicitly specified in the [Dockerfile specification](https://docs.docker.com/engine/reference/builder/#arg),\nsome combinations of spacing for key-value pairs are not allowed.\nDocker build will fail after reaching the problem instruction.\n\n**Examples:**\n\n* The `ARG` command does not allow any spaces around '='\n* `ENV` and `LABEL` do not allow spaces after '='\n\n\n # all the commands below will fail\n ARG answer = 42\n ARG version= \"1.0.0\"\n LABEL \"maintained.by\"= someone@gmail.com\n ENV JAVA_HOME= \"/docker-java-home\"\n\nAfter the quick-fix is applied:\n\n\n ARG answer=2\n ARG version=\"1.0.0\"\n LABEL \"maintained.by\"=someone@gmail.com\n ENV JAVA_HOME=\"/docker-java-home\"\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "DockerFileAssignments",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dockerfile",
+ "index": 44,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.intellij.qodana",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "JsCoverageInspection",
+ "shortDescription": {
+ "text": "Check JavaScript and TypeScript source code coverage"
+ },
+ "fullDescription": {
+ "text": "Reports methods, classes and files whose coverage is below a certain threshold.",
+ "markdown": "Reports methods, classes and files whose coverage is below a certain threshold."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsCoverageInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Code Coverage",
+ "index": 53,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CyclomaticComplexityInspection",
+ "shortDescription": {
+ "text": "Code metrics"
+ },
+ "fullDescription": {
+ "text": "Calculates cyclomatic complexity.",
+ "markdown": "Calculates cyclomatic complexity."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CyclomaticComplexityInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Qodana",
+ "index": 174,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "AngularJS",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "AngularInvalidImportedOrDeclaredSymbol",
+ "shortDescription": {
+ "text": "Invalid imported or declared symbol"
+ },
+ "fullDescription": {
+ "text": "Reports any symbol that is declared, imported or exported by an Angular module or standalone component that is not a module, component, directive, or pipe or can’t be used in the context of the property.",
+ "markdown": "Reports any symbol that is declared, imported or exported by an Angular module or standalone component that is not a module, component, directive, or pipe or can't be used in the context of the property."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularInvalidImportedOrDeclaredSymbol",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularRecursiveModuleImportExport",
+ "shortDescription": {
+ "text": "Recursive import or export of an Angular module or a standalone component"
+ },
+ "fullDescription": {
+ "text": "Reports a cyclic dependency between Angular modules or standalone components.",
+ "markdown": "Reports a cyclic dependency between Angular modules or standalone components."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularRecursiveModuleImportExport",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularNgOptimizedImage",
+ "shortDescription": {
+ "text": "Issues with ngSrc usage in img tags"
+ },
+ "fullDescription": {
+ "text": "Reports issues related to usage of 'ngSrc' (NgOptimizedDirective) on 'img' tags. Following issues are reported: 'img' tags, which use 'src' instead of 'ngSrc' lack of 'width' and 'height', or 'fill' attributes when 'ngSrc' is used 'width' or 'height', and 'fill' attributes being present on the same element when 'ngSrc' is used",
+ "markdown": "Reports issues related to usage of `ngSrc` ([NgOptimizedDirective](https://angular.io/guide/image-directive)) on `img` tags.\n\n\nFollowing issues are reported:\n\n* `img` tags, which use `src` instead of `ngSrc`\n* lack of `width` and `height`, or `fill` attributes when `ngSrc` is used\n* `width` or `height`, and `fill` attributes being present on the same element when `ngSrc` is used"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "AngularNgOptimizedImage",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInvalidTemplateReferenceVariable",
+ "shortDescription": {
+ "text": "Unbound or ambiguous template reference variable"
+ },
+ "fullDescription": {
+ "text": "Reports a template reference variable that is not assigned to a directive when using 'exportAs' or is assigned to multiple directives.",
+ "markdown": "Reports a template reference variable that is not assigned to a directive when using `exportAs` or is assigned to multiple directives."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularInvalidTemplateReferenceVariable",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularMultipleStructuralDirectives",
+ "shortDescription": {
+ "text": "Multiple structural directives on one element"
+ },
+ "fullDescription": {
+ "text": "Reports multiple structural directives ('*ngIf', '*ngFor', etc.) on one element.",
+ "markdown": "Reports multiple structural directives (`*ngIf`, `*ngFor`, etc.) on one element."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularMultipleStructuralDirectives",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularUnsupportedSyntax",
+ "shortDescription": {
+ "text": "Unsupported Angular expression syntax"
+ },
+ "fullDescription": {
+ "text": "Reports problems with Angular expression syntax, which is not supported in an older version of Angular.",
+ "markdown": "Reports problems with Angular expression syntax, which is not supported in an older version of Angular."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularUnsupportedSyntax",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularNonStandaloneComponentImports",
+ "shortDescription": {
+ "text": "Invalid usage of imports in non-standalone components"
+ },
+ "fullDescription": {
+ "text": "Reports usages of imports property in non-standalone component decorators. Imports can be used only in standalone components.",
+ "markdown": "Reports usages of imports property in non-standalone component decorators. Imports can be used only in standalone components."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularNonStandaloneComponentImports",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInvalidSelector",
+ "shortDescription": {
+ "text": "Missing or invalid selector"
+ },
+ "fullDescription": {
+ "text": "Reports an invalid 'selector' property of a component or directive.",
+ "markdown": "Reports an invalid `selector` property of a component or directive."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularInvalidSelector",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularNonEmptyNgContent",
+ "shortDescription": {
+ "text": "Content inside tag"
+ },
+ "fullDescription": {
+ "text": "Reports a text or tag occurrence inside a '' tag used for content projection.",
+ "markdown": "Reports a text or tag occurrence inside a `` tag used for content projection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularNonEmptyNgContent",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInsecureBindingToEvent",
+ "shortDescription": {
+ "text": "Insecure binding to event"
+ },
+ "fullDescription": {
+ "text": "Reports a binding to an event property or attribute, for example, '[onclick]' or '[attr.onclick]' instead of '(click)'.",
+ "markdown": "Reports a binding to an event property or attribute, for example, `[onclick]` or `[attr.onclick]` instead of `(click)`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AngularInsecureBindingToEvent",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularDeferBlockOnTrigger",
+ "shortDescription": {
+ "text": "Problems with @defer `on` triggers"
+ },
+ "fullDescription": {
+ "text": "Reports issues with triggers in `on` parameters in `@defer` block.",
+ "markdown": "Reports issues with triggers in \\`on\\` parameters in \\`@defer\\` block."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularDeferBlockOnTrigger",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularMissingEventHandler",
+ "shortDescription": {
+ "text": "Missing event handler"
+ },
+ "fullDescription": {
+ "text": "Reports a missing event handler statement for an event binding.",
+ "markdown": "Reports a missing event handler statement for an event binding."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularMissingEventHandler",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularUndefinedBinding",
+ "shortDescription": {
+ "text": "Undefined binding"
+ },
+ "fullDescription": {
+ "text": "Reports an undefined property, event, or structural directive bindings on elements.",
+ "markdown": "Reports an undefined property, event, or structural directive bindings on elements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularUndefinedBinding",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularForBlockNonIterableVar",
+ "shortDescription": {
+ "text": "Non-iterable type in @for block"
+ },
+ "fullDescription": {
+ "text": "Reports that the type of variable to iterate over does not have '[Symbol.iterator]()' method, which returns an iterator.",
+ "markdown": "Reports that the type of variable to iterate over does not have `[Symbol.iterator]()` method, which returns an iterator."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularForBlockNonIterableVar",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularBindingTypeMismatch",
+ "shortDescription": {
+ "text": "Invalid binding type"
+ },
+ "fullDescription": {
+ "text": "Reports a mismatch between actual and expected directive binding type.",
+ "markdown": "Reports a mismatch between actual and expected directive binding type."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularBindingTypeMismatch",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularUndefinedTag",
+ "shortDescription": {
+ "text": "Undefined tag"
+ },
+ "fullDescription": {
+ "text": "Reports a tag defined by a component or directive out of the current scope.",
+ "markdown": "Reports a tag defined by a component or directive out of the current scope."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularUndefinedTag",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularAmbiguousComponentTag",
+ "shortDescription": {
+ "text": "Ambiguous component tag"
+ },
+ "fullDescription": {
+ "text": "Reports a component that is matched on an embedded template element '' or multiple components matched on any other element.",
+ "markdown": "Reports a component that is matched on an embedded template element `` or multiple components matched on any other element."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularAmbiguousComponentTag",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularUndefinedModuleExport",
+ "shortDescription": {
+ "text": "Undefined export from Angular module"
+ },
+ "fullDescription": {
+ "text": "Reports an export of an undeclared or unimported component, directive, or pipes from an Angular module.",
+ "markdown": "Reports an export of an undeclared or unimported component, directive, or pipes from an Angular module."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularUndefinedModuleExport",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInvalidI18nAttribute",
+ "shortDescription": {
+ "text": "Invalid i18n attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a problem with a 'i18n-*' attribute.",
+ "markdown": "Reports a problem with a `i18n-*` attribute."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AngularInvalidI18nAttribute",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularIncorrectLetUsage",
+ "shortDescription": {
+ "text": "Incorrect usage of @let declaration"
+ },
+ "fullDescription": {
+ "text": "Reports problems with @let declaration usages.",
+ "markdown": "Reports problems with @let declaration usages."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularIncorrectLetUsage",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInvalidAnimationTriggerAssignment",
+ "shortDescription": {
+ "text": "Invalid animation trigger assignment"
+ },
+ "fullDescription": {
+ "text": "Reports an invalid assignment of an animation trigger. To attach an animation to an element, use '[@triggerName]=\"expression\"' or an attribute without a value '@triggerName'.",
+ "markdown": "Reports an invalid assignment of an animation trigger. To attach an animation to an element, use `[@triggerName]=\"expression\"` or an attribute without a value `@triggerName`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularInvalidAnimationTriggerAssignment",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularUnresolvedPipe",
+ "shortDescription": {
+ "text": "Unresolved pipe"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved pipe.",
+ "markdown": "Reports an unresolved pipe."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularUnresolvedPipe",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularUnusedComponentImport",
+ "shortDescription": {
+ "text": "Unused import in an Angular component declaration"
+ },
+ "fullDescription": {
+ "text": "Reports unused imports in Angular components.",
+ "markdown": "Reports unused imports in Angular components."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularUnusedComponentImport",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularIncorrectBlockUsage",
+ "shortDescription": {
+ "text": "Incorrect usage of Angular block"
+ },
+ "fullDescription": {
+ "text": "Reports problems with Angular blocks.",
+ "markdown": "Reports problems with Angular blocks."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularIncorrectBlockUsage",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularCliAddDependency",
+ "shortDescription": {
+ "text": "Angular CLI add dependency"
+ },
+ "fullDescription": {
+ "text": "Suggests using the 'ng add' command to install the dependency. 'ng add' will use the package manager to download it and invoke a schematic which can update your project with configuration changes, add additional dependencies (e.g. polyfills), or scaffold package-specific initialization code.",
+ "markdown": "Suggests using the `ng add` command to install the dependency.\n\n`ng add` will use the package manager to download it and invoke a schematic\nwhich can update your project with configuration changes, add additional dependencies (e.g. polyfills),\nor scaffold package-specific initialization code."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "AngularCliAddDependency",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInaccessibleSymbol",
+ "shortDescription": {
+ "text": "Inaccessible component member or directive input"
+ },
+ "fullDescription": {
+ "text": "Reports access to invisible (private or protected) component member or directive input from an Angular template.",
+ "markdown": "Reports access to invisible (private or protected) component member or directive input from an Angular template."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularInaccessibleSymbol",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularIncorrectTemplateDefinition",
+ "shortDescription": {
+ "text": "Incorrect component template definition"
+ },
+ "fullDescription": {
+ "text": "Reports a component that doesn’t have an associated template or uses both 'template' and 'templateUrl' properties.",
+ "markdown": "Reports a component that doesn't have an associated template or uses both `template` and `templateUrl` properties."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularIncorrectTemplateDefinition",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularMissingRequiredDirectiveInputBinding",
+ "shortDescription": {
+ "text": "Missing required directive input"
+ },
+ "fullDescription": {
+ "text": "Reports a missing binding for a required directive input.",
+ "markdown": "Reports a missing binding for a required directive input."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularMissingRequiredDirectiveInputBinding",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularMissingOrInvalidDeclarationInModule",
+ "shortDescription": {
+ "text": "Missing or invalid component, directive or pipe declaration in a module"
+ },
+ "fullDescription": {
+ "text": "Reports a non-standalone Angular component, directive, or pipe that is not declared in any module or is declared in multiple modules.",
+ "markdown": "Reports a non-standalone Angular component, directive, or pipe that is not declared in any module or is declared in multiple modules."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularMissingOrInvalidDeclarationInModule",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "AngularInvalidEntryComponent",
+ "shortDescription": {
+ "text": "Invalid entry component"
+ },
+ "fullDescription": {
+ "text": "Reports an invalid Angular component specified in the module’s 'bootstrap' or 'entryComponents' property.",
+ "markdown": "Reports an invalid Angular component specified in the module's `bootstrap` or `entryComponents` property."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "AngularInvalidEntryComponent",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Angular",
+ "index": 59,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.swagger",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "SwYamlMaybeSpecificationInspection",
+ "shortDescription": {
+ "text": "Possible OpenAPI/Swagger specification candidate"
+ },
+ "fullDescription": {
+ "text": "Detects YAML files that can be interpreted as a part of OpenAPI/Swagger specification. Such files do not contain explicit specification attributes, but they are referenced from primary specification files located nearby. The following example contains two files located in the same directory. First one is a plain primary specification file. Second is referenced from the first one and thus is suggested to be considered a specification too. Primary specification file 'openapi.yaml': 'openapi: 3.1.0\ncomponents:\n schemas:\n CustomSchema:\n description: Custom schema object\n properties:\n foo:\n $ref: 'common.components.yaml#/components/schemas/CommonSchema'' Specification file candidate 'common.components.yaml': 'components: # 'Mark file as OpenAPI specification' highlighting\n schemas:\n CommonSchema:\n description: Common schema object reused in several specifications'",
+ "markdown": "Detects YAML files that can be interpreted as a part of OpenAPI/Swagger specification.\n\n\nSuch files do not contain explicit specification attributes, but they are referenced from primary specification files located nearby.\n\n\nThe following example contains two files located in the same directory. First one is a plain primary specification file.\nSecond is referenced from the first one and thus is suggested to be considered a specification too.\n\n**Primary specification file `openapi.yaml`:**\n\n\n openapi: 3.1.0\n components:\n schemas:\n CustomSchema:\n description: Custom schema object\n properties:\n foo:\n $ref: 'common.components.yaml#/components/schemas/CommonSchema'\n\n**Specification file candidate `common.components.yaml`:**\n\n\n components: # 'Mark file as OpenAPI specification' highlighting\n schemas:\n CommonSchema:\n description: Common schema object reused in several specifications\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SwYamlMaybeSpecificationInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "OpenAPI specifications",
+ "index": 66,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SwJsonUnresolvedReferencesInspection",
+ "shortDescription": {
+ "text": "Unresolved reference"
+ },
+ "fullDescription": {
+ "text": "Detects unresolved references in JSON specification files.",
+ "markdown": "Detects unresolved references in JSON specification files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "SwJsonUnresolvedReferencesInspection",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "OpenAPI specifications",
+ "index": 66,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SwJsonMaybeSpecificationInspection",
+ "shortDescription": {
+ "text": "Possible OpenAPI/Swagger specification candidate"
+ },
+ "fullDescription": {
+ "text": "Detects JSON files that can be interpreted as a part of OpenAPI/Swagger specification. Such files do not contain explicit specification attributes, but they are referenced from primary specification files located nearby. The following example contains two files located in the same directory. First one is a plain primary specification file. Second is referenced from the first one and thus is suggested to be considered a specification too. Primary specification file 'openapi.yaml': 'openapi: 3.1.0\ncomponents:\n schemas:\n CustomSchema:\n description: Custom schema object\n properties:\n foo:\n $ref: 'common.components.json#/components/schemas/CommonSchema'' Specification file candidate 'common.components.json': '{\n \"components\": { // 'Mark file as OpenAPI specification' highlighting\n \"schemas\": {\n \"CommonSchema\": {\n \"description\": \"Common schema object reused in several specifications\"\n }\n }\n }\n}'",
+ "markdown": "Detects JSON files that can be interpreted as a part of OpenAPI/Swagger specification.\n\n\nSuch files do not contain explicit specification attributes, but they are referenced from primary specification files located nearby.\n\n\nThe following example contains two files located in the same directory. First one is a plain primary specification file.\nSecond is referenced from the first one and thus is suggested to be considered a specification too.\n\n**Primary specification file `openapi.yaml`:**\n\n\n openapi: 3.1.0\n components:\n schemas:\n CustomSchema:\n description: Custom schema object\n properties:\n foo:\n $ref: 'common.components.json#/components/schemas/CommonSchema'\n\n**Specification file candidate `common.components.json`:**\n\n\n {\n \"components\": { // 'Mark file as OpenAPI specification' highlighting\n \"schemas\": {\n \"CommonSchema\": {\n \"description\": \"Common schema object reused in several specifications\"\n }\n }\n }\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "SwJsonMaybeSpecificationInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "OpenAPI specifications",
+ "index": 66,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "SwYamlUnresolvedReferencesInspection",
+ "shortDescription": {
+ "text": "Unresolved reference"
+ },
+ "fullDescription": {
+ "text": "Detects unresolved references in YAML specification files.",
+ "markdown": "Detects unresolved references in YAML specification files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "SwYamlUnresolvedReferencesInspection",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "OpenAPI specifications",
+ "index": 66,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.jetbrains.plugins.github",
+ "version": "243.24609-ultimate",
+ "rules": [
+ {
+ "id": "CyclicJobDependency",
+ "shortDescription": {
+ "text": "Cyclic job dependency"
+ },
+ "fullDescription": {
+ "text": "Detects cyclic dependencies for jobs in GitHub workflow YML file. See the GitHub Actions documentation for more information on workflow syntax.",
+ "markdown": "Detects cyclic dependencies for jobs in GitHub workflow YML file.\n\n\nSee the [GitHub Actions documentation](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds) for more information on workflow syntax."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "CyclicJobDependency",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "GitHub actions",
+ "index": 70,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MandatoryParamsAbsent",
+ "shortDescription": {
+ "text": "Invalid parameters"
+ },
+ "fullDescription": {
+ "text": "Reports the absence of mandatory parameters that do not have a default value for an action. It also provides a Quick Fix by adding the missing parameters with an empty value. For more information on action params, see the GitHub documentation.",
+ "markdown": "Reports the absence of mandatory parameters that do not have a default value for an action. It also provides a Quick Fix by adding the missing parameters with an empty value.\n\n\nFor more information on action params, see the [GitHub documentation](https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepswith)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "MandatoryParamsAbsent",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "GitHub actions",
+ "index": 70,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "IllegalJobDependency",
+ "shortDescription": {
+ "text": "Undefined job dependency"
+ },
+ "fullDescription": {
+ "text": "Detects dependencies to undefined Jobs in GitHub workflow YML file. See the GitHub Actions documentation for more information on workflow syntax.",
+ "markdown": "Detects dependencies to undefined Jobs in GitHub workflow YML file.\n\n\nSee the [GitHub Actions documentation](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds) for more information on workflow syntax."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "IllegalJobDependency",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "GitHub actions",
+ "index": 70,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UndefinedAction",
+ "shortDescription": {
+ "text": "Undefined action/file reference"
+ },
+ "fullDescription": {
+ "text": "Detects unresolved action references in GitHub action and workflow files. For more information on action references, see the GitHub documentation.",
+ "markdown": "Detects unresolved action references in GitHub action and workflow files.\n\n\nFor more information on action references, see the [GitHub documentation](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsuses)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UndefinedAction",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "GitHub actions",
+ "index": 70,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "UndefinedParamsPresent",
+ "shortDescription": {
+ "text": "Undefined parameters"
+ },
+ "fullDescription": {
+ "text": "Reports the presence of parameters which are not defined in an action. It also provides a Quick Fix by removing the undefined parameters. For more information on action params, see the GitHub documentation.",
+ "markdown": "Reports the presence of parameters which are not defined in an action. It also provides a Quick Fix by removing the undefined parameters.\n\n\nFor more information on action params, see the [GitHub documentation](https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepswith)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UndefinedParamsPresent",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "GitHub actions",
+ "index": 70,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "GithubFunctionSignatureValidation",
+ "shortDescription": {
+ "text": "Standard library functions validation"
+ },
+ "fullDescription": {
+ "text": "Reports invalid GitHub Actions Expression language standard library function calls For more information on GitHub Actions Expression language, see the GitHub documentation.",
+ "markdown": "Reports invalid GitHub Actions Expression language standard library function calls\n\n\nFor more information on GitHub Actions Expression language, see the [GitHub documentation](https://docs.github.com/en/actions/learn-github-actions/expressions)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "GithubFunctionSignatureValidation",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "GitHub actions",
+ "index": 70,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.jetbrains.plugins.jade",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "JadeTabsAndSpaces",
+ "shortDescription": {
+ "text": "Tabs and spaces both used"
+ },
+ "fullDescription": {
+ "text": "Reports use of spaces and tabs for indentation in a Pug file.",
+ "markdown": "Reports use of spaces and tabs for indentation in a Pug file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JadeTabsAndSpaces",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Pug_Jade",
+ "index": 71,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.jsonpath",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "JsonPathUnknownFunction",
+ "shortDescription": {
+ "text": "Unknown JSONPath function"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown name in a JSONPath function call instead of known standard function names: 'concat', 'keys', 'length', 'min', 'max', 'avg', 'stddev', 'sum'.",
+ "markdown": "Reports an unknown name in a JSONPath function call instead of known standard function names: `concat`, `keys`, `length`, `min`, `max`, `avg`, `stddev`, `sum`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsonPathUnknownFunction",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSONPath",
+ "index": 78,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JsonPathUnknownOperator",
+ "shortDescription": {
+ "text": "Unknown JSONPath operator"
+ },
+ "fullDescription": {
+ "text": "Reports an unknown operator on a JSONPath expression instead of one of the standard ones: 'in', 'nin', 'subsetof', 'anyof', 'noneof', 'size', 'empty', 'contains'.",
+ "markdown": "Reports an unknown operator on a JSONPath expression instead of one of the standard ones: `in`, `nin`, `subsetof`, `anyof`, `noneof`, `size`, `empty`, `contains`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsonPathUnknownOperator",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSONPath",
+ "index": 78,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JsonPathEvaluateUnknownKey",
+ "shortDescription": {
+ "text": "Unknown property key used for JSONPath evaluate expression"
+ },
+ "fullDescription": {
+ "text": "Reports a key in a JSONPath expression that is missing in the source JSON document to evaluate.",
+ "markdown": "Reports a key in a JSONPath expression that is missing in the source JSON document to evaluate."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsonPathEvaluateUnknownKey",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSONPath",
+ "index": 78,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "HtmlTools",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "HtmlRequiredSummaryAttribute",
+ "shortDescription": {
+ "text": "Missing required 'summary' attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a missing 'summary' attribute in a 'table' tag. Suggests adding a'summary' attribute. Based on WCAG 2.0: H73.",
+ "markdown": "Reports a missing `summary` attribute in a `table` tag. Suggests adding a`summary` attribute. Based on WCAG 2.0: [H73](https://www.w3.org/TR/WCAG20-TECHS/H73.html)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HtmlRequiredSummaryAttribute",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML/Accessibility",
+ "index": 83,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlNonExistentInternetResource",
+ "shortDescription": {
+ "text": "Unresolved web link"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved web link. Works by making network requests in the background.",
+ "markdown": "Reports an unresolved web link. Works by making network requests in the background."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlNonExistentInternetResource",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlRequiredTitleAttribute",
+ "shortDescription": {
+ "text": "Missing required 'title' attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a missing title attribute 'frame', 'iframe', 'dl', and 'a' tags. Suggests adding a title attribute. Based on WCAG 2.0: H33, H40, and H64.",
+ "markdown": "Reports a missing title attribute `frame`, `iframe`, `dl`, and `a` tags. Suggests adding a title attribute. Based on WCAG 2.0: [H33](https://www.w3.org/TR/WCAG20-TECHS/H33.html), [H40](https://www.w3.org/TR/WCAG20-TECHS/H40.html), and [H64](https://www.w3.org/TR/WCAG20-TECHS/H64.html)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HtmlRequiredTitleAttribute",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML/Accessibility",
+ "index": 83,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlRequiredAltAttribute",
+ "shortDescription": {
+ "text": "Missing required 'alt' attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a missing 'alt' attribute in a 'img' or 'applet' tag or in a 'area' element of an image map. Suggests adding a required attribute with a text alternative for the contents of the tag. Based on WCAG 2.0: H24, H35, H36, H37.",
+ "markdown": "Reports a missing `alt` attribute in a `img` or `applet` tag or in a `area` element of an image map. Suggests adding a required attribute with a text alternative for the contents of the tag. Based on WCAG 2.0: [H24](https://www.w3.org/TR/WCAG20-TECHS/H24.html), [H35](https://www.w3.org/TR/WCAG20-TECHS/H35.html), [H36](https://www.w3.org/TR/WCAG20-TECHS/H36.html), [H37](https://www.w3.org/TR/WCAG20-TECHS/H37.html)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlRequiredAltAttribute",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML/Accessibility",
+ "index": 83,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlPresentationalElement",
+ "shortDescription": {
+ "text": "Presentational tag"
+ },
+ "fullDescription": {
+ "text": "Reports a presentational HTML tag. Suggests replacing the presentational tag with a CSS or another tag.",
+ "markdown": "Reports a presentational HTML tag. Suggests replacing the presentational tag with a CSS or another tag."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "HtmlPresentationalElement",
+ "ideaSeverity": "INFORMATION",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlDeprecatedTag",
+ "shortDescription": {
+ "text": "Obsolete tag"
+ },
+ "fullDescription": {
+ "text": "Reports an obsolete HTML5 tag. Suggests replacing the obsolete tag with a CSS or another tag.",
+ "markdown": "Reports an obsolete HTML5 tag. Suggests replacing the obsolete tag with a CSS or another tag."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlDeprecatedTag",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlFormInputWithoutLabel",
+ "shortDescription": {
+ "text": "Missing associated label"
+ },
+ "fullDescription": {
+ "text": "Reports a form element ('input', 'textarea', or 'select') without an associated label. Suggests creating a new label. Based on WCAG 2.0: H44.",
+ "markdown": "Reports a form element (`input`, `textarea`, or `select`) without an associated label. Suggests creating a new label. Based on WCAG 2.0: [H44](https://www.w3.org/TR/WCAG20-TECHS/H44.html). "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlFormInputWithoutLabel",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML/Accessibility",
+ "index": 83,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlRequiredTitleElement",
+ "shortDescription": {
+ "text": "Missing required 'title' element"
+ },
+ "fullDescription": {
+ "text": "Reports a missing 'title' element inside a 'head' section. Suggests adding a 'title' element. The title should describe the document. Based on WCAG 2.0: H25.",
+ "markdown": "Reports a missing `title` element inside a `head` section. Suggests adding a `title` element. The title should describe the document. Based on WCAG 2.0: [H25](https://www.w3.org/TR/WCAG20-TECHS/H25.html)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlRequiredTitleElement",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML/Accessibility",
+ "index": 83,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlDeprecatedAttribute",
+ "shortDescription": {
+ "text": "Obsolete attribute"
+ },
+ "fullDescription": {
+ "text": "Reports an obsolete HTML5 attribute.",
+ "markdown": "Reports an obsolete HTML5 attribute."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlDeprecatedAttribute",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CheckImageSize",
+ "shortDescription": {
+ "text": "Mismatched image size"
+ },
+ "fullDescription": {
+ "text": "Reports a 'width' and 'height' attribute value of a 'img' tag that is different from the actual width and height of the referenced image.",
+ "markdown": "Reports a `width` and `height` attribute value of a `img` tag that is different from the actual width and height of the referenced image."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CheckImageSize",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Performance"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML",
+ "index": 11,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "HtmlRequiredLangAttribute",
+ "shortDescription": {
+ "text": "Missing required 'lang' attribute"
+ },
+ "fullDescription": {
+ "text": "Reports a missing 'lang' (or 'xml:lang') attribute in a 'html' tag. Suggests adding a required attribute to state the default language of the document. Based on WCAG 2.0: H57.",
+ "markdown": "Reports a missing `lang` (or `xml:lang`) attribute in a `html` tag. Suggests adding a required attribute to state the default language of the document. Based on WCAG 2.0: [H57](https://www.w3.org/TR/WCAG20-TECHS/H57.html)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HtmlRequiredLangAttribute",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "HTML/Accessibility",
+ "index": 83,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.modules.json",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "JsonSchemaCompliance",
+ "shortDescription": {
+ "text": "Compliance with JSON schema"
+ },
+ "fullDescription": {
+ "text": "Reports inconsistence between a JSON file and the JSON schema that is assigned to it.",
+ "markdown": "Reports inconsistence between a JSON file and the [JSON schema](https://json-schema.org) that is assigned to it. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsonSchemaCompliance",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSON and JSON5",
+ "index": 84,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JsonSchemaDeprecation",
+ "shortDescription": {
+ "text": "Deprecated JSON property"
+ },
+ "fullDescription": {
+ "text": "Reports a deprecated property in a JSON file. Note that deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard extension 'deprecationMessage'.",
+ "markdown": "Reports a deprecated property in a JSON file. \nNote that deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard extension 'deprecationMessage'."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "JsonSchemaDeprecation",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSON and JSON5",
+ "index": 84,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JsonStandardCompliance",
+ "shortDescription": {
+ "text": "Compliance with JSON standard"
+ },
+ "fullDescription": {
+ "text": "Reports the following discrepancies of a JSON file with the language specification: A line or block comment (configurable). Multiple top-level values (expect for JSON Lines files, configurable for others). A trailing comma in an object or array (configurable). A single quoted string. A property key is a not a double quoted strings. A NaN or Infinity/-Infinity numeric value as a floating point literal (configurable).",
+ "markdown": "Reports the following discrepancies of a JSON file with [the language specification](https://tools.ietf.org/html/rfc7159):\n\n* A line or block comment (configurable).\n* Multiple top-level values (expect for JSON Lines files, configurable for others).\n* A trailing comma in an object or array (configurable).\n* A single quoted string.\n* A property key is a not a double quoted strings.\n* A NaN or Infinity/-Infinity numeric value as a floating point literal (configurable)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "JsonStandardCompliance",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSON and JSON5",
+ "index": 84,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JsonSchemaRefReference",
+ "shortDescription": {
+ "text": "Unresolved '$ref' and '$schema' references"
+ },
+ "fullDescription": {
+ "text": "Reports an unresolved '$ref' or '$schema' path in a JSON schema.",
+ "markdown": "Reports an unresolved `$ref` or `$schema` path in a JSON schema. "
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsonSchemaRefReference",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSON and JSON5",
+ "index": 84,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "Json5StandardCompliance",
+ "shortDescription": {
+ "text": "Compliance with JSON5 standard"
+ },
+ "fullDescription": {
+ "text": "Reports inconsistency with the language specification in a JSON5 file.",
+ "markdown": "Reports inconsistency with [the language specification](http://json5.org) in a JSON5 file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "Json5StandardCompliance",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSON and JSON5",
+ "index": 84,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "JsonDuplicatePropertyKeys",
+ "shortDescription": {
+ "text": "Duplicate keys in object literals"
+ },
+ "fullDescription": {
+ "text": "Reports a duplicate key in an object literal.",
+ "markdown": "Reports a duplicate key in an object literal."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "JsonDuplicatePropertyKeys",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JSON and JSON5",
+ "index": 84,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.jetbrains.plugins.vue",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "VueMissingComponentImportInspection",
+ "shortDescription": {
+ "text": "Missing component import"
+ },
+ "fullDescription": {
+ "text": "Reports Vue components, which require to be imported in Vue templates. It provides a quick fix to add the missing import.",
+ "markdown": "Reports Vue components, which require to be imported in Vue templates. It provides a quick fix to add the missing import."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "VueMissingComponentImportInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Vue",
+ "index": 88,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "VueDeprecatedSymbol",
+ "shortDescription": {
+ "text": "Deprecated symbol"
+ },
+ "fullDescription": {
+ "text": "Reports a deprecated Vue symbol.",
+ "markdown": "Reports a deprecated Vue symbol."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "VueDeprecatedSymbol",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Vue",
+ "index": 88,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "VueUnrecognizedDirective",
+ "shortDescription": {
+ "text": "Unrecognized directive"
+ },
+ "fullDescription": {
+ "text": "Reports an unrecognized Vue directive.",
+ "markdown": "Reports an unrecognized Vue directive."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "VueUnrecognizedDirective",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Vue",
+ "index": 88,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "VueDuplicateTag",
+ "shortDescription": {
+ "text": "Duplicate template/script tag"
+ },
+ "fullDescription": {
+ "text": "Reports multiple usages of the 'template' or 'script' tag in a Vue file. Vue Component specification indicates that each '*.vue' file can contain at most one 'template' or 'script' block at a time.",
+ "markdown": "Reports multiple usages of the `template` or `script` tag in a Vue file.\n\n[Vue Component specification](https://vue-loader.vuejs.org/spec.html) indicates that each `*.vue` file can contain at most one `template` or `script` block at a time."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "VueDuplicateTag",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Vue",
+ "index": 88,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "VueDataFunction",
+ "shortDescription": {
+ "text": "Data function"
+ },
+ "fullDescription": {
+ "text": "Reports a Vue component data property that is not a function. Suggests wrapping an object literal with a function. When defining a component, 'data' must be declared as a function that returns the initial data object, because the same definition will be used for creating numerous instances. If a plain object is still used for 'data', that very object will be shared by reference across all instances created! With a 'data' function, every time a new instance is created we can simply call it to return a fresh copy of the initial data.",
+ "markdown": "Reports a Vue component [data](https://vuejs.org/v2/api/#data) property that is not a function. Suggests wrapping an object literal with a function.\n\nWhen defining a component, `data` must be declared as a function that returns the initial data object, because the same definition will be used for creating numerous instances. If a plain object is still used for `data`, that very object will be shared by reference across all instances created! With a `data` function, every time a new instance is created we can simply call it to return a fresh copy of the initial data."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "VueDataFunction",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Vue",
+ "index": 88,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "VueUnrecognizedSlot",
+ "shortDescription": {
+ "text": "Unrecognized slot"
+ },
+ "fullDescription": {
+ "text": "Reports an unrecognized Vue slot.",
+ "markdown": "Reports an unrecognized Vue slot."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "VueUnrecognizedSlot",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Vue",
+ "index": 88,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.intellij.plugins.markdown",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "MarkdownOutdatedTableOfContents",
+ "shortDescription": {
+ "text": "Outdated table of contents section"
+ },
+ "fullDescription": {
+ "text": "Checks if a particular table of contents section corresponds to the actual structure of the document.",
+ "markdown": "Checks if a particular table of contents section corresponds to the actual structure of the document."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownOutdatedTableOfContents",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownUnresolvedLinkLabel",
+ "shortDescription": {
+ "text": "Unresolved link label"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved link labels in Markdown files.",
+ "markdown": "Reports unresolved link labels in Markdown files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownUnresolvedLinkLabel",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownNoTableBorders",
+ "shortDescription": {
+ "text": "Table doesn't have side borders"
+ },
+ "fullDescription": {
+ "text": "Checks if table has correct side borders. For compatibility reasons all table rows should have borders (pipe symbols) at the start and at the end.",
+ "markdown": "Checks if table has correct side borders. For compatibility reasons all table rows should have borders (pipe symbols) at the start and at the end."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownNoTableBorders",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownIncorrectlyNumberedListItem",
+ "shortDescription": {
+ "text": "Incorrectly numbered list item"
+ },
+ "fullDescription": {
+ "text": "Ordered list items are expected to have straight numeration starting from 1. The motivation behind this is that most of Markdown processors are ignoring the numbering of ordered lists. A processor will generate an '' element for such list, that will number items continuously from 1.",
+ "markdown": "Ordered list items are expected to have straight numeration starting from 1.\n\nThe motivation behind this is that most of Markdown processors are ignoring the numbering of ordered lists. A processor will generate an `` element for such list, that will number items continuously from 1."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownIncorrectlyNumberedListItem",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownUnresolvedHeaderReference",
+ "shortDescription": {
+ "text": "Unresolved header reference"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved header references in Markdown files.",
+ "markdown": "Reports unresolved header references in Markdown files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownUnresolvedHeaderReference",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownLinkDestinationWithSpaces",
+ "shortDescription": {
+ "text": "Links should not contain spaces"
+ },
+ "fullDescription": {
+ "text": "To ensure consistency between different tools, file links should not contain spaces. Example: '[Some file link](some file.md)' A quick-fix replaces spaces with their url-encoded equivalent: '[Some file link](some%20file.md)'",
+ "markdown": "To ensure consistency between different tools, file links should not contain spaces.\n\n**Example:**\n\n\n [Some file link](some file.md)\n\nA quick-fix replaces spaces with their url-encoded equivalent:\n\n\n [Some file link](some%20file.md)\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownLinkDestinationWithSpaces",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownIncorrectTableFormatting",
+ "shortDescription": {
+ "text": "Incorrect table formatting"
+ },
+ "fullDescription": {
+ "text": "Checks if table is correctly formatted.",
+ "markdown": "Checks if table is correctly formatted."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "MarkdownIncorrectTableFormatting",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "MarkdownUnresolvedFileReference",
+ "shortDescription": {
+ "text": "Unresolved file references"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved file references in Markdown files.",
+ "markdown": "Reports unresolved file references in Markdown files."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "MarkdownUnresolvedFileReference",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Markdown",
+ "index": 90,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.jetbrains.plugins.yaml",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "YAMLIncompatibleTypes",
+ "shortDescription": {
+ "text": "Suspicious type mismatch"
+ },
+ "fullDescription": {
+ "text": "Reports a mismatch between a scalar value type in YAML file and types of the values in the similar positions. Example: 'myElements:\n - value1\n - value2\n - false # <- reported, because it is a boolean value, while other values are strings'",
+ "markdown": "Reports a mismatch between a scalar value type in YAML file and types of the values in the similar positions.\n\n**Example:**\n\n\n myElements:\n - value1\n - value2\n - false # <- reported, because it is a boolean value, while other values are strings\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "YAMLIncompatibleTypes",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "YAMLUnresolvedAlias",
+ "shortDescription": {
+ "text": "Unresolved alias"
+ },
+ "fullDescription": {
+ "text": "Reports unresolved aliases in YAML files. Example: 'some_key: *unknown_alias'",
+ "markdown": "Reports unresolved aliases in YAML files.\n\n**Example:**\n\n\n some_key: *unknown_alias\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "YAMLUnresolvedAlias",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "YAMLDuplicatedKeys",
+ "shortDescription": {
+ "text": "Duplicated YAML keys"
+ },
+ "fullDescription": {
+ "text": "Reports duplicated keys in YAML files. Example: 'same_key: some value\n same_key: another value'",
+ "markdown": "Reports duplicated keys in YAML files.\n\n**Example:**\n\n\n same_key: some value\n same_key: another value\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "YAMLDuplicatedKeys",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "YAMLSchemaValidation",
+ "shortDescription": {
+ "text": "Validation by JSON Schema"
+ },
+ "fullDescription": {
+ "text": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified. Scheme example: '{\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeNumberProperty: hello world'",
+ "markdown": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified.\n\n**Scheme example:**\n\n\n {\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeNumberProperty: hello world\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "YAMLSchemaValidation",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "YAMLSchemaDeprecation",
+ "shortDescription": {
+ "text": "Deprecated YAML key"
+ },
+ "fullDescription": {
+ "text": "Reports deprecated keys in YAML files. Deprecation is checked only if there exists a JSON schema associated with the corresponding YAML file. Note that the deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard 'deprecationMessage' extension. Scheme deprecation example: '{\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeDeprecatedProperty: some value'",
+ "markdown": "Reports deprecated keys in YAML files.\n\nDeprecation is checked only if there exists a JSON schema associated with the corresponding YAML file.\n\nNote that the deprecation mechanism is not defined in the JSON Schema specification yet,\nand this inspection uses a non-standard `deprecationMessage` extension.\n\n**Scheme deprecation example:**\n\n\n {\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeDeprecatedProperty: some value\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "YAMLSchemaDeprecation",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "YAMLRecursiveAlias",
+ "shortDescription": {
+ "text": "Recursive alias"
+ },
+ "fullDescription": {
+ "text": "Reports recursion in YAML aliases. Alias can't be recursive and be used inside the data referenced by a corresponding anchor. Example: 'some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor'",
+ "markdown": "Reports recursion in YAML aliases.\n\nAlias can't be recursive and be used inside the data referenced by a corresponding anchor.\n\n**Example:**\n\n\n some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "YAMLRecursiveAlias",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "YAMLUnusedAnchor",
+ "shortDescription": {
+ "text": "Unused anchor"
+ },
+ "fullDescription": {
+ "text": "Reports unused anchors. Example: 'some_key: &some_anchor\n key1: value1'",
+ "markdown": "Reports unused anchors.\n\n**Example:**\n\n\n some_key: &some_anchor\n key1: value1\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "YAMLUnusedAnchor",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "YAML",
+ "index": 95,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "intellij.webpack",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "WebpackConfigHighlighting",
+ "shortDescription": {
+ "text": "Webpack config compliance with JSON Schema"
+ },
+ "fullDescription": {
+ "text": "Validates options in webpack config files (which name should start with `webpack`, e.g. `webpack.config.js`) against webpack options schema. Disable this inspection to turn off validation and code completion inside the configuration object.",
+ "markdown": "Validates options in webpack config files (which name should start with \\`webpack\\`, e.g. \\`webpack.config.js\\`) against [webpack options schema](https://github.com/webpack/webpack/blob/master/schemas/WebpackOptions.json). \n\nDisable this inspection to turn off validation and code completion inside the configuration object."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "WebpackConfigHighlighting",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/General",
+ "index": 17,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.plugins.dependencyAnalysis",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "CheckDependencyLicenses",
+ "shortDescription": {
+ "text": "Check dependency licenses"
+ },
+ "fullDescription": {
+ "text": "Check dependencies licenses for possible problems: missing or prohibited licenses, or other compliance issues",
+ "markdown": "Check dependencies licenses for possible problems: missing or prohibited licenses, or other compliance issues"
+ },
+ "defaultConfiguration": {
+ "enabled": true,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CheckDependencyLicenses",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dependency analysis",
+ "index": 105,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CheckThirdPartySoftwareList",
+ "shortDescription": {
+ "text": "Check third party software list"
+ },
+ "fullDescription": {
+ "text": "Check project for possible problems: user's third party software list does not match the collected project metadata",
+ "markdown": "Check project for possible problems: user's third party software list does not match the collected project metadata"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CheckThirdPartySoftwareList",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dependency analysis",
+ "index": 105,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "CheckModuleLicenses",
+ "shortDescription": {
+ "text": "Check module licenses"
+ },
+ "fullDescription": {
+ "text": "Check module licenses for possible problems: missing licenses or other compliance issues",
+ "markdown": "Check module licenses for possible problems: missing licenses or other compliance issues"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "CheckModuleLicenses",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dependency analysis",
+ "index": 105,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.grpc",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "GrpcSchemes",
+ "shortDescription": {
+ "text": "GRPC request schema can be substituted or omitted"
+ },
+ "fullDescription": {
+ "text": "Reports unnecessary `grpc` or standard `http[s]` schemes usage in gRPC requests Example requests: '# `grpc` scheme may be omitted since insecure connection is assumed by default\nGRPC grpc://localhost/TestService/testRpc' '# `http` scheme may be omitted: prefer empty scheme for insecure connection and a dedicated `grpcs` scheme for a secure one\nGRPC http://localhost/TestService/testRpc' '# `https` scheme should be replaced by `grpcs`: prefer a dedicated `grpcs` scheme to indicate that transport layer security should be enabled to execute the request\nGRPC https://localhost/TestService/testRpc' To avoid confusion, it is recommended to use dedicated `grpcs` scheme in a gRPC request, when the request should use secure channel underneath. Otherwise, the scheme might be completely omitted",
+ "markdown": "Reports unnecessary \\`grpc\\` or standard \\`http\\[s\\]\\` schemes usage in gRPC requests\n\n\nExample requests:\n\n\n # `grpc` scheme may be omitted since insecure connection is assumed by default\n GRPC grpc://localhost/TestService/testRpc\n\n\n # `http` scheme may be omitted: prefer empty scheme for insecure connection and a dedicated `grpcs` scheme for a secure one\n GRPC http://localhost/TestService/testRpc\n\n\n # `https` scheme should be replaced by `grpcs`: prefer a dedicated `grpcs` scheme to indicate that transport layer security should be enabled to execute the request\n GRPC https://localhost/TestService/testRpc\n\n\nTo avoid confusion, it is recommended to use dedicated \\`grpcs\\` scheme in a gRPC request, when the request should use secure channel\nunderneath. Otherwise, the scheme might be completely omitted"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "GrpcSchemes",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Inappropriate gRPC request scheme",
+ "index": 106,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.jetbrains.sh",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "ShellCheck",
+ "shortDescription": {
+ "text": "ShellCheck"
+ },
+ "fullDescription": {
+ "text": "Reports shell script bugs detected by the integrated ShellCheck static analysis tool.",
+ "markdown": "Reports shell script bugs detected by the integrated [ShellCheck](https://github.com/koalaman/shellcheck) static analysis tool."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "ShellCheck",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Security"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Shell script",
+ "index": 111,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.jetbrains.plugins.less",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "LessResolvedByNameOnly",
+ "shortDescription": {
+ "text": "Missing import"
+ },
+ "fullDescription": {
+ "text": "Reports a reference to a variable or mixin that is declared in another file, which is not explicitly imported in the current file. Example: '* {\n margin: @var-in-other-file;\n}'",
+ "markdown": "Reports a reference to a variable or mixin that is declared in another file, which is not explicitly [imported](http://lesscss.org/features/#import-atrules-feature) in the current file.\n\n**Example:**\n\n\n * {\n margin: @var-in-other-file;\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "LessResolvedByNameOnly",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Less",
+ "index": 121,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LessUnresolvedVariable",
+ "shortDescription": {
+ "text": "Unresolved variable"
+ },
+ "fullDescription": {
+ "text": "Reports a reference to a Less variable that is not resolved. Example: '* {\n margin: @unknown-var;\n}'",
+ "markdown": "Reports a reference to a [Less variable](http://lesscss.org/features/#variables-feature) that is not resolved.\n\n**Example:**\n\n\n * {\n margin: @unknown-var;\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LessUnresolvedVariable",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Less",
+ "index": 121,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "LessUnresolvedMixin",
+ "shortDescription": {
+ "text": "Unresolved mixin"
+ },
+ "fullDescription": {
+ "text": "Reports a reference to a Less mixin that is not resolved. Example: '* {\n .unknown-mixin();\n}'",
+ "markdown": "Reports a reference to a [Less mixin](http://lesscss.org/features/#mixins-feature) that is not resolved.\n\n**Example:**\n\n\n * {\n .unknown-mixin();\n }\n"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LessUnresolvedMixin",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Less",
+ "index": 121,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "tanvd.grazi",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "LanguageDetectionInspection",
+ "shortDescription": {
+ "text": "Natural language detection"
+ },
+ "fullDescription": {
+ "text": "Detects natural languages and suggests enabling corresponding grammar and spelling checks.",
+ "markdown": "Detects natural languages and suggests enabling corresponding grammar and spelling checks."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "LanguageDetectionInspection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Proofreading",
+ "index": 122,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "GrazieInspection",
+ "shortDescription": {
+ "text": "Grammar"
+ },
+ "fullDescription": {
+ "text": "Reports grammar mistakes in your text. You can configure the inspection in Settings | Editor | Natural Languages | Grammar and Style.",
+ "markdown": "Reports grammar mistakes in your text. You can configure the inspection in [Settings \\| Editor \\| Natural Languages \\| Grammar and Style](settings://reference.settingsdialog.project.grazie)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "GrazieInspection",
+ "ideaSeverity": "GRAMMAR_ERROR",
+ "qodanaSeverity": "Info",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Proofreading",
+ "index": 122,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.jetbrains.rider-cpp",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "UnrealJsonLocalInspectionTool",
+ "shortDescription": {
+ "text": "Unreal Engine json inspection"
+ },
+ "fullDescription": {
+ "text": "RIDER-83134",
+ "markdown": "[RIDER-83134](https://youtrack.jetbrains.com/issue/RIDER-83134/)"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "UnrealJsonLocalInspectionTool",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Unreal Engine",
+ "index": 126,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.stylelint",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "Stylelint",
+ "shortDescription": {
+ "text": "Stylelint"
+ },
+ "fullDescription": {
+ "text": "Reports a discrepancy detected by the Stylelint linter. The highlighting is based on the rule severity specified in the Stylelint configuration file for each individual rule.",
+ "markdown": "Reports a discrepancy detected by the [Stylelint](http://stylelint.io) linter. \n\nThe highlighting is based on the rule severity specified in the [Stylelint configuration file](https://stylelint.io/user-guide/configure) for each individual rule."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "Stylelint",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Code quality tools",
+ "index": 129,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.hardcodedPasswords",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "HardcodedPasswords",
+ "shortDescription": {
+ "text": "Hardcoded passwords"
+ },
+ "fullDescription": {
+ "text": "Detects potential security tokens or passwords in comments using entropy analysis and regular expressions. This inspection utilizes entropy analysis and regular expressions to scan the codebase for strings that resemble security tokens or passwords. It highlights these findings, helping developers identify and secure potential vulnerabilities. The inspection's effectiveness relies on the patterns defined in its configuration, making it adaptable to different coding environments and requirements. '// Example of a regular expression pattern used for detection:\n/[0-9]+:AA[0-9A-Za-z\\-_]{33}/' Text after this comment will only be shown in the settings of the inspection.",
+ "markdown": "Detects potential security tokens or passwords in comments using entropy analysis and regular expressions.\n\n\nThis inspection utilizes entropy analysis and regular expressions to scan the codebase for strings that resemble security tokens or\npasswords. It highlights these findings, helping developers identify and secure potential vulnerabilities. The inspection's effectiveness\nrelies on the patterns defined in its configuration, making it adaptable to different coding environments and requirements.\n\n\n // Example of a regular expression pattern used for detection:\n /[0-9]+:AA[0-9A-Za-z\\-_]{33}/\n\nText after this comment will only be shown in the settings of the inspection."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "HardcodedPasswords",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Security",
+ "index": 131,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "Karma",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "KarmaConfigFile",
+ "shortDescription": {
+ "text": "Invalid Karma configuration file"
+ },
+ "fullDescription": {
+ "text": "Reports a potential error in a file path ('basePath', 'files') for a Karma configuration file, for example, 'karma.conf.js'.",
+ "markdown": "Reports a potential error in a file path ('basePath', 'files') for a Karma configuration file, for example, `karma.conf.js`."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "KarmaConfigFile",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Unit testing",
+ "index": 140,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.jetbrains.plugins.ini4idea",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "DuplicateSectionInFile",
+ "shortDescription": {
+ "text": "Duplicate section in file"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate sections in the 'ini' file.",
+ "markdown": "Reports duplicate sections in the `ini` file."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DuplicateSectionInFile",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Ini files",
+ "index": 147,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "DuplicateKeyInSection",
+ "shortDescription": {
+ "text": "Duplicate directive in section"
+ },
+ "fullDescription": {
+ "text": "Reports duplicate properties in the 'ini' file section.",
+ "markdown": "Reports duplicate properties in the `ini` file section."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "DuplicateKeyInSection",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Ini files",
+ "index": 147,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "tslint",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "TsLint",
+ "shortDescription": {
+ "text": "TSLint"
+ },
+ "fullDescription": {
+ "text": "Reports a discrepancy detected by the TSLint linter. The highlighting is based on the rule severity specified in the TSLint configuration file for each individual rule. Clear the 'Use rule severity from the configuration file' checkbox to use the severity configured in this inspection for all TSLint rules.",
+ "markdown": "Reports a discrepancy detected by the [TSLint](https://github.com/palantir/tslint) linter. \n\nThe highlighting is based on the rule severity specified in the [TSLint configuration file](https://palantir.github.io/tslint/usage/configuration/) for each individual rule. \n\nClear the 'Use rule severity from the configuration file' checkbox to use the severity configured in this inspection for all TSLint rules."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "TsLint",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "JavaScript and TypeScript/Code quality tools",
+ "index": 69,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.intellij.intelliLang",
+ "version": "243.24609",
+ "rules": [
+ {
+ "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": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "InjectedReferences",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Sanity"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "General",
+ "index": 46,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "W3Validators",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "W3CssValidation",
+ "shortDescription": {
+ "text": "W3C CSS validator"
+ },
+ "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/)."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "W3CssValidation",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "CSS/Code quality tools",
+ "index": 129,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "org.jetbrains.plugins.docker.gateway",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "DevContainerIdeSettings",
+ "shortDescription": {
+ "text": "Validate IDE settings"
+ },
+ "fullDescription": {
+ "text": "No description available",
+ "markdown": "No description available"
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "error",
+ "parameters": {
+ "suppressToolId": "DevContainerIdeSettings",
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Dev Container",
+ "index": 153,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.intellij.plugins.watcher",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "TaskProblemsInspection",
+ "shortDescription": {
+ "text": "File watcher problems"
+ },
+ "fullDescription": {
+ "text": "Reports an error detected by the output filters from a File Watcher. A File Watcher tracks changes in files and executes the configured command when a change is detected.",
+ "markdown": "Reports an error detected by the output filters from a File Watcher.\n\n\nA File Watcher tracks changes in files and executes the configured command when a change is detected."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "note",
+ "parameters": {
+ "suppressToolId": "TaskProblemsInspection",
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "codeQualityCategory": "Unspecified"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "File Watchers",
+ "index": 154,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "idea.plugin.protoeditor",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "PbDuplicatedImports",
+ "shortDescription": {
+ "text": "Duplicated import statements"
+ },
+ "fullDescription": {
+ "text": "Reports effectively equivalent import statements.",
+ "markdown": "Reports effectively equivalent import statements."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "PbDuplicatedImports",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Reliability"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Protocol Buffers",
+ "index": 164,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ },
+ {
+ "name": "com.dmarcotte.handlebars",
+ "version": "243.24609",
+ "rules": [
+ {
+ "id": "HbEmptyBlock",
+ "shortDescription": {
+ "text": "Missing block helper argument"
+ },
+ "fullDescription": {
+ "text": "Reports an 'if', 'each', or 'with' block helper without an argument.",
+ "markdown": "Reports an `if`, `each`, or `with` block helper without an argument."
+ },
+ "defaultConfiguration": {
+ "enabled": false,
+ "level": "warning",
+ "parameters": {
+ "suppressToolId": "HbEmptyBlock",
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "codeQualityCategory": "Code Style"
+ }
+ },
+ "relationships": [
+ {
+ "target": {
+ "id": "Handlebars_Mustache",
+ "index": 170,
+ "toolComponent": {
+ "name": "QDNET"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ],
+ "language": "en-US",
+ "contents": [
+ "localizedData",
+ "nonLocalizedData"
+ ],
+ "isComprehensive": false
+ }
+ ]
+ },
+ "invocations": [
+ {
+ "startTimeUtc": "2025-04-23T14:29:39.107328385Z",
+ "exitCode": 0,
+ "executionSuccessful": true
+ }
+ ],
+ "language": "en-US",
+ "versionControlProvenance": [
+ {
+ "repositoryUri": "https://github.com/GitTools/GitVersion.git",
+ "revisionId": "0a168fdf490f4e17ec601a595fec928710d461b4",
+ "branch": "feature/qodana-analysis",
+ "properties": {
+ "repoUrl": "https://github.com/GitTools/GitVersion.git",
+ "lastAuthorName": "Artur Stolear",
+ "vcsType": "Git",
+ "lastAuthorEmail": "artur.stolear@gmail.com"
+ }
+ }
+ ],
+ "results": [
+ {
+ "ruleId": "AutoPropertyCanBeMadeGetOnly.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Auto-property can be made get-only",
+ "markdown": "Auto-property can be made get-only"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 17,
+ "startColumn": 31,
+ "charOffset": 633,
+ "charLength": 5,
+ "snippet": {
+ "text": "init;"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 15,
+ "startColumn": 1,
+ "charOffset": 561,
+ "charLength": 119,
+ "snippet": {
+ "text": " new(x => x.Name, x => x.Number);\n\n public string Name { get; init; }\n\n public long? Number { get; init; }"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "39b1096331f5a6c8",
+ "equalIndicator/v1": "07a7b31b43b99bfe0c26afff61e4b0f77109d932a5cdc8f28e9061154276c7b6"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "AutoPropertyCanBeMadeGetOnly.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Auto-property can be made get-only",
+ "markdown": "Auto-property can be made get-only"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.MsBuild/Tasks/UpdateAssemblyInfo.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 14,
+ "startColumn": 44,
+ "charOffset": 335,
+ "charLength": 14,
+ "snippet": {
+ "text": "internal init;"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 12,
+ "startColumn": 1,
+ "charOffset": 276,
+ "charLength": 97,
+ "snippet": {
+ "text": "\n [Required]\n public ITaskItem[] CompileFiles { get; internal init; } = [];\n\n [Required]"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.MsBuild",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "b9242d297fc3a345",
+ "equalIndicator/v1": "5ac45d68c9deae77a0676e6f36c18fe17b6d8a1261a8d8301018251345a9c3d7"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "AutoPropertyCanBeMadeGetOnly.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Auto-property can be made get-only",
+ "markdown": "Auto-property can be made get-only"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 31,
+ "startColumn": 43,
+ "charOffset": 894,
+ "charLength": 5,
+ "snippet": {
+ "text": "init;"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 29,
+ "startColumn": 1,
+ "charOffset": 794,
+ "charLength": 150,
+ "snippet": {
+ "text": " public long CommitsSinceVersionSource { get; init; }\n\n public long UncommittedChanges { get; init; }\n\n public SemanticVersionBuildMetaData()"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "945534524a3ecb00",
+ "equalIndicator/v1": "963653db6db79949c03af1d532a9e55bc25bff64c3ebae3928847676f6cbee01"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "AutoPropertyCanBeMadeGetOnly.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Auto-property can be made get-only",
+ "markdown": "Auto-property can be made get-only"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 21,
+ "startColumn": 52,
+ "charOffset": 733,
+ "charLength": 5,
+ "snippet": {
+ "text": "init;"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 19,
+ "startColumn": 1,
+ "charOffset": 642,
+ "charLength": 165,
+ "snippet": {
+ "text": " public long? Number { get; init; }\n\n public bool PromoteTagEvenIfNameIsEmpty { get; init; }\n\n public SemanticVersionPreReleaseTag() => Name = string.Empty;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "b1e31eb5a46c5488",
+ "equalIndicator/v1": "f2380853e2e0a368b92041f47e42e69ff59b1ab8276af3e4c6d7876e721e903e"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "CA1859",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Change type of variable 'environment' from 'GitVersion.IEnvironment' to 'GitVersion.Core.Tests.Helpers.TestEnvironment' for improved performance",
+ "markdown": "Change type of variable 'environment' from 'GitVersion.IEnvironment' to 'GitVersion.Core.Tests.Helpers.TestEnvironment' for improved performance"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Output.Tests/Output/FormatArgumentTests.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 49,
+ "startColumn": 22,
+ "charOffset": 2086,
+ "charLength": 11,
+ "snippet": {
+ "text": "environment"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 47,
+ "startColumn": 1,
+ "charOffset": 1948,
+ "charLength": 239,
+ "snippet": {
+ "text": " var consoleBuilder = new StringBuilder();\n IConsole console = new TestConsoleAdapter(consoleBuilder);\n IEnvironment environment = new TestEnvironment();\n environment.SetEnvironmentVariable(\"CustomVar\", \"foo\");\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Output.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "798911f8163bb119",
+ "equalIndicator/v1": "13387ce1a0a2c97bdab9415ddfe044096d89d4eb5a12058b9486dfc451a7d7ba"
+ },
+ "properties": {
+ "ideaSeverity": "TYPO",
+ "qodanaSeverity": "Low",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "CA1859",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Change type of field 'environment' from 'GitVersion.IEnvironment' to 'GitVersion.Core.Tests.Helpers.TestEnvironment' for improved performance",
+ "markdown": "Change type of field 'environment' from 'GitVersion.IEnvironment' to 'GitVersion.Core.Tests.Helpers.TestEnvironment' for improved performance"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.App.Tests/Helpers/ProgramFixture.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 10,
+ "startColumn": 35,
+ "charOffset": 245,
+ "charLength": 11,
+ "snippet": {
+ "text": "environment"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 8,
+ "startColumn": 1,
+ "charOffset": 174,
+ "charLength": 195,
+ "snippet": {
+ "text": "public sealed class ProgramFixture\n{\n private readonly IEnvironment environment;\n private List> Overrides { get; } = [];\n private readonly Lazy logger;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.App.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "72d06e5a2b480dfd",
+ "equalIndicator/v1": "4d79e2de04432e508415de341d54cdb6267a0c69e28a1a34b6d680863a6d983d"
+ },
+ "properties": {
+ "ideaSeverity": "TYPO",
+ "qodanaSeverity": "Low",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "CA1859",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Change type of variable 'ignoreConfig' from 'GitVersion.Configuration.IIgnoreConfiguration' to 'GitVersion.Configuration.IgnoreConfiguration' for improved performance",
+ "markdown": "Change type of variable 'ignoreConfig' from 'GitVersion.Configuration.IIgnoreConfiguration' to 'GitVersion.Configuration.IgnoreConfiguration' for improved performance"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration.Tests/Configuration/IgnoreConfigurationTests.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 78,
+ "startColumn": 30,
+ "charOffset": 2314,
+ "charLength": 12,
+ "snippet": {
+ "text": "ignoreConfig"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 76,
+ "startColumn": 1,
+ "charOffset": 2236,
+ "charLength": 165,
+ "snippet": {
+ "text": " public void NewInstanceShouldBeEmpty()\n {\n IIgnoreConfiguration ignoreConfig = new IgnoreConfiguration();\n\n ignoreConfig.IsEmpty.ShouldBeTrue();"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "252c4e1844a8f3e4",
+ "equalIndicator/v1": "4dafc8d23d3af70888bfc929ea4086e1c7b238b2912b0f4f1bdd9a5cf28b7e1b"
+ },
+ "properties": {
+ "ideaSeverity": "TYPO",
+ "qodanaSeverity": "Low",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "CA1859",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Change type of field 'environment' from 'GitVersion.IEnvironment' to 'GitVersion.Core.Tests.Helpers.TestEnvironment' for improved performance",
+ "markdown": "Change type of field 'environment' from 'GitVersion.IEnvironment' to 'GitVersion.Core.Tests.Helpers.TestEnvironment' for improved performance"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Extensions/StringFormatWithExtensionTests.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 9,
+ "startColumn": 26,
+ "charOffset": 183,
+ "charLength": 11,
+ "snippet": {
+ "text": "environment"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 7,
+ "startColumn": 1,
+ "charOffset": 112,
+ "charLength": 96,
+ "snippet": {
+ "text": "public class StringFormatWithExtensionTests\n{\n private IEnvironment environment;\n\n [SetUp]"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "1ec852c0a17be112",
+ "equalIndicator/v1": "76837070d072d19b7b9f22ead9adfc33ff47308c1a23d43ab8bab6ef8d7e8eac"
+ },
+ "properties": {
+ "ideaSeverity": "TYPO",
+ "qodanaSeverity": "Low",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "ChangeFieldTypeToSystemThreadingLock",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Consider changing the type of 'LockObject' field to 'System.Threading.Lock' to express field intent",
+ "markdown": "Consider changing the type of 'LockObject' field to 'System.Threading.Lock' to express field intent"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Testing/Helpers/ProcessHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 8,
+ "startColumn": 29,
+ "charOffset": 171,
+ "charLength": 6,
+ "snippet": {
+ "text": "object"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 6,
+ "startColumn": 1,
+ "charOffset": 99,
+ "charLength": 202,
+ "snippet": {
+ "text": "public static partial class ProcessHelper\n{\n private static readonly object LockObject = new();\n\n // http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/f6069441-4ab1-4299-ad6a-b8bb9ed36be3"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "b1a3df2c79801d80",
+ "equalIndicator/v1": "05a56829e3cd54fe95e457f2799a2f78e4c61947baeebe13405f223b40eaea54"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "ChangeFieldTypeToSystemThreadingLock",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Consider changing the type of 'locker' field to 'System.Threading.Lock' to express field intent",
+ "markdown": "Consider changing the type of 'locker' field to 'System.Threading.Lock' to express field intent"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Logging/ConsoleAppender.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 5,
+ "startColumn": 22,
+ "charOffset": 100,
+ "charLength": 6,
+ "snippet": {
+ "text": "object"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 3,
+ "startColumn": 1,
+ "charOffset": 31,
+ "charLength": 192,
+ "snippet": {
+ "text": "internal class ConsoleAppender : ILogAppender\n{\n private readonly object locker = new();\n private readonly Dictionary palettes = CreatePalette();\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "8ce2b8bdd4789fd5",
+ "equalIndicator/v1": "fc85c07d08f54a93d98b43b199f1cfa9eaf5c4a71280a3912014a923b81d4232"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 166,
+ "startColumn": 1,
+ "charOffset": 6649,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0011.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 164,
+ "startColumn": 1,
+ "charOffset": 6626,
+ "charLength": 91,
+ "snippet": {
+ "text": "\n# IDE0011: Add braces\ndotnet_diagnostic.IDE0011.severity = none\n\n# IDE0090: Use 'new(...)'"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "79acbb20327c3c34",
+ "equalIndicator/v1": "029b80c382cb7bee63268d938f4555b1466bcdbd5118131932a3f587157ff163"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 65,
+ "startColumn": 1,
+ "charOffset": 2454,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0068.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 63,
+ "startColumn": 1,
+ "charOffset": 2370,
+ "charLength": 208,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0005.severity = none\ndotnet_diagnostic.IDE0067.severity = none\ndotnet_diagnostic.IDE0068.severity = none\ndotnet_diagnostic.IDE0069.severity = none\ndotnet_diagnostic.CA1016.severity = none"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "10eac334f85849b2",
+ "equalIndicator/v1": "0c21585ad36d1d3193706f1b6848bed1ca3ffa71eb0a02dc9149c431b2c1998d"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 157,
+ "startColumn": 1,
+ "charOffset": 6452,
+ "charLength": 41,
+ "snippet": {
+ "text": "csharp_use_roslyn_logic_for_evident_types"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 155,
+ "startColumn": 1,
+ "charOffset": 6406,
+ "charLength": 107,
+ "snippet": {
+ "text": "csharp_space_between_square_brackets = false\n\ncsharp_use_roslyn_logic_for_evident_types = true\n\n# Alignment"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "59bfaab0dfa52106",
+ "equalIndicator/v1": "22dba1ba37e11ff5e4539b0ce8624ecf88094bfc9e42de612939bd48ea960c3d"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 196,
+ "startColumn": 1,
+ "charOffset": 7522,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.RCS1036.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 194,
+ "startColumn": 1,
+ "charOffset": 7481,
+ "charLength": 121,
+ "snippet": {
+ "text": "\n# RCS1036: Remove redundant empty line.\ndotnet_diagnostic.RCS1036.severity = error\n\nxml_space_before_self_closing = true"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "c966dd28b8e07f8d",
+ "equalIndicator/v1": "231ff767ff319faefb5e07b9b7c8c75d9ab1629583cc19857fdf54edf8f651b3"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 67,
+ "startColumn": 1,
+ "charOffset": 2538,
+ "charLength": 33,
+ "snippet": {
+ "text": "dotnet_diagnostic.CA1016.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 65,
+ "startColumn": 1,
+ "charOffset": 2454,
+ "charLength": 157,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0068.severity = none\ndotnet_diagnostic.IDE0069.severity = none\ndotnet_diagnostic.CA1016.severity = none\n#### C# Coding Conventions ####\n"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "6c0aab165230353a",
+ "equalIndicator/v1": "25e2d72e2853737fd0941542ac2ca1e43077ce501445c666759e8a7b316c3662"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 184,
+ "startColumn": 1,
+ "charOffset": 7164,
+ "charLength": 33,
+ "snippet": {
+ "text": "dotnet_diagnostic.CA1810.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 182,
+ "startColumn": 1,
+ "charOffset": 7106,
+ "charLength": 157,
+ "snippet": {
+ "text": "\n# CA1810: Initialize reference type static fields inline\ndotnet_diagnostic.CA1810.severity = warning\n\n# CA1816: Dispose methods should call SuppressFinalize"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "87c5c378d7b46969",
+ "equalIndicator/v1": "2d693da59964a42fb1ccfcbc9c1f987cabf4b14ebc8290a7061190385ddeff6d"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 175,
+ "startColumn": 1,
+ "charOffset": 6887,
+ "charLength": 33,
+ "snippet": {
+ "text": "dotnet_diagnostic.CA1825.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 173,
+ "startColumn": 1,
+ "charOffset": 6840,
+ "charLength": 124,
+ "snippet": {
+ "text": "\n# CA1825: Avoid zero-length array allocations\ndotnet_diagnostic.CA1825.severity = warning\n\n# CA1822: Mark members as static"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "bb1cf9b9f330b4e9",
+ "equalIndicator/v1": "3b3387fe91b8c4eee275c30a6f324de60db6598d659f7a702d4fc64d0e3f0c48"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 190,
+ "startColumn": 1,
+ "charOffset": 7352,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0005.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 188,
+ "startColumn": 1,
+ "charOffset": 7308,
+ "charLength": 129,
+ "snippet": {
+ "text": "\n# IDE0005: Using directive is unnecessary.\ndotnet_diagnostic.IDE0005.severity = warning\n\n# RCS1037: Remove trailing white-space."
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "639dfff0c7b80fb2",
+ "equalIndicator/v1": "3fff8c650662fba90bcc8cd81872b90b81c4db81d872095b9e5797003a2a1f79"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 63,
+ "startColumn": 1,
+ "charOffset": 2370,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0005.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 61,
+ "startColumn": 1,
+ "charOffset": 2238,
+ "charLength": 257,
+ "snippet": {
+ "text": "\n# Dispose rules (CA2000 and CA2213) ported to IDE analyzers. We already execute the CA rules on the repo, so disable the IDE ones.\ndotnet_diagnostic.IDE0005.severity = none\ndotnet_diagnostic.IDE0067.severity = none\ndotnet_diagnostic.IDE0068.severity = none"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "5a37e4caf3ee107f",
+ "equalIndicator/v1": "42ceb31691d7a08924f3970f31af529b65dbc13c204f8731cbd614f92675fbc1"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 169,
+ "startColumn": 1,
+ "charOffset": 6718,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0090.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 167,
+ "startColumn": 1,
+ "charOffset": 6691,
+ "charLength": 103,
+ "snippet": {
+ "text": "\n# IDE0090: Use 'new(...)'\ndotnet_diagnostic.IDE0090.severity = warning\n\n# IDE0041: Use 'is null' check"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "86ca6a8417ba8785",
+ "equalIndicator/v1": "4e9a65b70b59280951d731bbe078b30ad69fc02be71c4004d69f68fbb88a8afd"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 178,
+ "startColumn": 1,
+ "charOffset": 6965,
+ "charLength": 33,
+ "snippet": {
+ "text": "dotnet_diagnostic.CA1822.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 176,
+ "startColumn": 1,
+ "charOffset": 6931,
+ "charLength": 130,
+ "snippet": {
+ "text": "\n# CA1822: Mark members as static\ndotnet_diagnostic.CA1822.severity = warning\n\n# CA2208: Instantiate argument exceptions correctly"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "db7f8741025acdaf",
+ "equalIndicator/v1": "4febe79f43e6b430c62f57f0a6c236fcdd16e6a151d947ba84f3bf37e9bb2ae2"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 187,
+ "startColumn": 1,
+ "charOffset": 7264,
+ "charLength": 33,
+ "snippet": {
+ "text": "dotnet_diagnostic.CA1816.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 185,
+ "startColumn": 1,
+ "charOffset": 7208,
+ "charLength": 143,
+ "snippet": {
+ "text": "\n# CA1816: Dispose methods should call SuppressFinalize\ndotnet_diagnostic.CA1816.severity = warning\n\n# IDE0005: Using directive is unnecessary."
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "031b4e930100eaed",
+ "equalIndicator/v1": "5ec3af0b633d97cd876cc79c6504d50e6687764ba4b72c24e21bd4959d50674e"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 66,
+ "startColumn": 1,
+ "charOffset": 2496,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0069.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 64,
+ "startColumn": 1,
+ "charOffset": 2412,
+ "charLength": 198,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0067.severity = none\ndotnet_diagnostic.IDE0068.severity = none\ndotnet_diagnostic.IDE0069.severity = none\ndotnet_diagnostic.CA1016.severity = none\n#### C# Coding Conventions ####"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "4b123121b35ea337",
+ "equalIndicator/v1": "89c0d750acefd4fa3d4698bd27d4a7df7b9d94b537487eb27232b5c76016ee64"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 172,
+ "startColumn": 1,
+ "charOffset": 6795,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0041.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 170,
+ "startColumn": 1,
+ "charOffset": 6763,
+ "charLength": 123,
+ "snippet": {
+ "text": "\n# IDE0041: Use 'is null' check\ndotnet_diagnostic.IDE0041.severity = warning\n\n# CA1825: Avoid zero-length array allocations"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "7a6ebbe89d81d6e7",
+ "equalIndicator/v1": "a4c215bdc766017f9c71cf9201077b2e9a1ddc64da63a1a807198d027ea30972"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 181,
+ "startColumn": 1,
+ "charOffset": 7062,
+ "charLength": 33,
+ "snippet": {
+ "text": "dotnet_diagnostic.CA2208.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 179,
+ "startColumn": 1,
+ "charOffset": 7009,
+ "charLength": 154,
+ "snippet": {
+ "text": "\n# CA2208: Instantiate argument exceptions correctly\ndotnet_diagnostic.CA2208.severity = warning\n\n# CA1810: Initialize reference type static fields inline"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "5cdf53476b2e6331",
+ "equalIndicator/v1": "af740b18a526343963bcd71ce04fe086fda971a4c233e52de45be807be67fc3f"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 198,
+ "startColumn": 1,
+ "charOffset": 7566,
+ "charLength": 29,
+ "snippet": {
+ "text": "xml_space_before_self_closing"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 196,
+ "startColumn": 1,
+ "charOffset": 7522,
+ "charLength": 80,
+ "snippet": {
+ "text": "dotnet_diagnostic.RCS1036.severity = error\n\nxml_space_before_self_closing = true"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "1a495b7166c00f0c",
+ "equalIndicator/v1": "c76a66276392e781089c5b4bf0bd51174daa8d3ef342d2cbd3c8aeff75373918"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 193,
+ "startColumn": 1,
+ "charOffset": 7438,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.RCS1037.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 191,
+ "startColumn": 1,
+ "charOffset": 7397,
+ "charLength": 124,
+ "snippet": {
+ "text": "\n# RCS1037: Remove trailing white-space.\ndotnet_diagnostic.RCS1037.severity = error\n\n# RCS1036: Remove redundant empty line."
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "016581f23b43933b",
+ "equalIndicator/v1": "d42ad4f15b582801c04be0e5d3b1d14392a9dfcc1f1ecf3dcd9a6ed4d8fe10e5"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 163,
+ "startColumn": 1,
+ "charOffset": 6578,
+ "charLength": 39,
+ "snippet": {
+ "text": "csharp_instance_members_qualify_members"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 161,
+ "startColumn": 1,
+ "charOffset": 6547,
+ "charLength": 101,
+ "snippet": {
+ "text": "\n# Qualify fields with \"this.\"\ncsharp_instance_members_qualify_members = field\n\n# IDE0011: Add braces"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "e986e53014471e90",
+ "equalIndicator/v1": "d4f6f20c9e2392d2f56dd1cf7dee3a7ffae8522a1331ce9d05545a4900f619e2"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 160,
+ "startColumn": 1,
+ "charOffset": 6514,
+ "charLength": 25,
+ "snippet": {
+ "text": "align_multiline_parameter"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 158,
+ "startColumn": 1,
+ "charOffset": 6501,
+ "charLength": 76,
+ "snippet": {
+ "text": "\n# Alignment\nalign_multiline_parameter = true\n\n# Qualify fields with \"this.\""
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "4dbb677794c8ef24",
+ "equalIndicator/v1": "da9c0fcb72ea13b7f04a436b0d7cf5c52f7c790fa6fc1fa207520319ca81c35a"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "EditorConfigKeyCorrectness",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "The property is not supported",
+ "markdown": "The property is not supported"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../.editorconfig",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 64,
+ "startColumn": 1,
+ "charOffset": 2412,
+ "charLength": 34,
+ "snippet": {
+ "text": "dotnet_diagnostic.IDE0067.severity"
+ },
+ "sourceLanguage": "EditorConfig"
+ },
+ "contextRegion": {
+ "startLine": 62,
+ "startColumn": 1,
+ "charOffset": 2239,
+ "charLength": 298,
+ "snippet": {
+ "text": "# Dispose rules (CA2000 and CA2213) ported to IDE analyzers. We already execute the CA rules on the repo, so disable the IDE ones.\ndotnet_diagnostic.IDE0005.severity = none\ndotnet_diagnostic.IDE0067.severity = none\ndotnet_diagnostic.IDE0068.severity = none\ndotnet_diagnostic.IDE0069.severity = none"
+ },
+ "sourceLanguage": "EditorConfig"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "b8f1fccf2f7166d3",
+ "equalIndicator/v1": "e0c82b1d48a58938401ade7aece2d7594cce0f9bfc5c9cc261de5065ce21de7c"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "EditorConfig"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'GetBranchSpecificLabel' can be made private",
+ "markdown": "Method 'GetBranchSpecificLabel' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Extensions/ConfigurationExtensions.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 80,
+ "startColumn": 5,
+ "charOffset": 3601,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 78,
+ "startColumn": 1,
+ "charOffset": 3500,
+ "charLength": 251,
+ "snippet": {
+ "text": " => GetBranchSpecificLabel(configuration, branchName.WithoutOrigin, branchNameOverride);\n\n public static string? GetBranchSpecificLabel(\n this EffectiveConfiguration configuration, string? branchName, string? branchNameOverride)\n {"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "3fa24d0f0642f9f7",
+ "equalIndicator/v1": "07f27f91c4ae9f1e135bc1acf3fdc7a6e27e5cc17691d895c26651ee7919b5ac"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithUpdateBuildNumber' can be made private",
+ "markdown": "Method 'WithUpdateBuildNumber' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 193,
+ "startColumn": 5,
+ "charOffset": 6597,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 191,
+ "startColumn": 1,
+ "charOffset": 6586,
+ "charLength": 119,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithUpdateBuildNumber(bool value)\n {\n this.updateBuildNumber = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "f4cdb250e446d78c",
+ "equalIndicator/v1": "162dc3f8ebaf56ace070dc004cdb6c7aef4f713e104e8acf36ec6d4840918519"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithPreventIncrementOfMergedBranch' can be made private",
+ "markdown": "Method 'WithPreventIncrementOfMergedBranch' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 260,
+ "startColumn": 5,
+ "charOffset": 8891,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 258,
+ "startColumn": 1,
+ "charOffset": 8880,
+ "charLength": 146,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithPreventIncrementOfMergedBranch(bool? value)\n {\n this.preventIncrementOfMergedBranch = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "a438203fe493332f",
+ "equalIndicator/v1": "17501f1b3cb4687f5bf4871cd3cee6f28a0fb9277cee5c439001d9f564e3a130"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'IsLabeledWith' can be made private",
+ "markdown": "Method 'IsLabeledWith' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersion.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 24,
+ "startColumn": 5,
+ "charOffset": 623,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 22,
+ "startColumn": 1,
+ "charOffset": 549,
+ "charLength": 246,
+ "snippet": {
+ "text": " public SemanticVersionBuildMetaData BuildMetaData { get; init; }\n\n public bool IsLabeledWith(string value) => PreReleaseTag.HasTag() && PreReleaseTag.Name.IsEquivalentTo(value);\n\n public bool IsMatchForBranchSpecificLabel(string? value)"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "a204ee13475fb9ad",
+ "equalIndicator/v1": "1a1388cf56fd9986badb2156d80a3858fa545384a3e7b13b71eeb4519ebcdb4a"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithNoBumpMessage' can be made private",
+ "markdown": "Method 'WithNoBumpMessage' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 169,
+ "startColumn": 5,
+ "charOffset": 5913,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 167,
+ "startColumn": 1,
+ "charOffset": 5902,
+ "charLength": 114,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithNoBumpMessage(string? value)\n {\n this.noBumpMessage = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "53f8f91c63188b63",
+ "equalIndicator/v1": "1d04599576977cee54240cb129d4b3b7e3d60d038e1e913fa0b7fe1e6e3d9409"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'ToString' can be made private",
+ "markdown": "Method 'ToString' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 105,
+ "startColumn": 5,
+ "charOffset": 4019,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 103,
+ "startColumn": 1,
+ "charOffset": 3958,
+ "charLength": 166,
+ "snippet": {
+ "text": " public override string ToString() => ToString(\"t\");\n\n public string ToString(string format) => ToString(format, CultureInfo.CurrentCulture);\n\n /// "
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "306f43e59749c8c7",
+ "equalIndicator/v1": "1e655491f52cd8d75af8440cfe48b2d777ca6fa88da809b6ea67c61e8bad258c"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Property 'Context' can be made private",
+ "markdown": "Property 'Context' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 15,
+ "startColumn": 5,
+ "charOffset": 509,
+ "charLength": 9,
+ "snippet": {
+ "text": "protected"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 13,
+ "startColumn": 1,
+ "charOffset": 416,
+ "charLength": 257,
+ "snippet": {
+ "text": " private readonly Lazy versionContext = versionContext.NotNull();\n\n protected GitVersionContext Context => this.versionContext.Value;\n\n protected SemanticVersionBuildMetaData CreateVersionBuildMetaData(ICommit? baseVersionSource)"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "edfbdbeba3db16ef",
+ "equalIndicator/v1": "25413b6464d5050748f884f073d7dd63c750b68d47aba1fb4936a3946f013179"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'DumpGraph' can be made private",
+ "markdown": "Method 'DumpGraph' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 65,
+ "startColumn": 5,
+ "charOffset": 2479,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 63,
+ "startColumn": 1,
+ "charOffset": 2415,
+ "charLength": 254,
+ "snippet": {
+ "text": " => DumpGraph(repository.Path, writer, maxCommits);\n\n public static void DumpGraph(this IRepository repository, Action? writer = null, int? maxCommits = null)\n => DumpGraph(repository.ToGitRepository().Path, writer, maxCommits);\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.MsBuild.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "f66041ca3f62af8b",
+ "equalIndicator/v1": "3cec01000c68144291c9e0f834ba4490e64a85767ef5b82b2fdc29cdf41f8406"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'CompareTo' can be made private",
+ "markdown": "Method 'CompareTo' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersion.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 221,
+ "startColumn": 5,
+ "charOffset": 7523,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 219,
+ "startColumn": 1,
+ "charOffset": 7423,
+ "charLength": 201,
+ "snippet": {
+ "text": " public int CompareTo(SemanticVersion? value) => CompareTo(value, includePreRelease: true);\n\n public int CompareTo(SemanticVersion? value, bool includePreRelease)\n {\n if (value == null)"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "dc198b8584f3d313",
+ "equalIndicator/v1": "59ffba36bf2f386e1e0d7b4bc0aaab48fabaa6d4afb5965b1cb95fef23992adc"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'GetCurrentDirectory' can be made private",
+ "markdown": "Method 'GetCurrentDirectory' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Helpers/FileSystemHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 74,
+ "startColumn": 9,
+ "charOffset": 3205,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 72,
+ "startColumn": 1,
+ "charOffset": 3142,
+ "charLength": 291,
+ "snippet": {
+ "text": " : StringComparison.OrdinalIgnoreCase;\n\n public static string GetCurrentDirectory() => AppContext.BaseDirectory ?? throw new InvalidOperationException();\n\n public static string GetTempPathLegacy() => fileSystem.Path.GetTempPath().TrimEnd(DirectorySeparatorChar);"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "54963d95d4a2b1c2",
+ "equalIndicator/v1": "6732e23188eba6b8c688b733a53c5a6787409739d46b248f42458ac8e747df96"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'GetFullPath' can be made private",
+ "markdown": "Method 'GetFullPath' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Helpers/FileSystemHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 108,
+ "startColumn": 9,
+ "charOffset": 4537,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 106,
+ "startColumn": 1,
+ "charOffset": 4432,
+ "charLength": 258,
+ "snippet": {
+ "text": " public static string? GetExtension(string? path) => fileSystem.Path.GetExtension(path);\n\n public static string GetFullPath(string? path) => fileSystem.Path.GetFullPath(path!);\n\n public static string Combine(string? path1, string? path2)"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "9a5d1a2ad5c4e5b8",
+ "equalIndicator/v1": "7bd476cf03181321fa398a10395699e96bf050ce5a5ec1162fe7964d43feacb1"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithIsReleaseBranch' can be made private",
+ "markdown": "Method 'WithIsReleaseBranch' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 308,
+ "startColumn": 5,
+ "charOffset": 10357,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 306,
+ "startColumn": 1,
+ "charOffset": 10346,
+ "charLength": 116,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithIsReleaseBranch(bool? value)\n {\n this.isReleaseBranch = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "d841d600090e0246",
+ "equalIndicator/v1": "7c856ca43421ba359bbd8a46382b230df0b206e8b49a4c467035ef80c298b36a"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'GetTempPath' can be made private",
+ "markdown": "Method 'GetTempPath' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Helpers/FileSystemHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 77,
+ "startColumn": 9,
+ "charOffset": 3442,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 75,
+ "startColumn": 1,
+ "charOffset": 3318,
+ "charLength": 218,
+ "snippet": {
+ "text": "\n public static string GetTempPathLegacy() => fileSystem.Path.GetTempPath().TrimEnd(DirectorySeparatorChar);\n public static string GetTempPath()\n {\n var tempPath = GetCurrentDirectory();"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "e9bbe0a232d1f2bb",
+ "equalIndicator/v1": "81aff2ce6987502feac67c101fd449948663144ad455a51e46285cd218675829"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithRegularExpression' can be made private",
+ "markdown": "Method 'WithRegularExpression' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 296,
+ "startColumn": 5,
+ "charOffset": 10017,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 294,
+ "startColumn": 1,
+ "charOffset": 10006,
+ "charLength": 122,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithRegularExpression(string? value)\n {\n this.regularExpression = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "70211adbe88a21f9",
+ "equalIndicator/v1": "8697076173547d2573eff685a6e8048b90a53a6f77cb7f4fe749f7533fa3dc72"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithPreventIncrementWhenCurrentCommitTagged' can be made private",
+ "markdown": "Method 'WithPreventIncrementWhenCurrentCommitTagged' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 272,
+ "startColumn": 5,
+ "charOffset": 9277,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 270,
+ "startColumn": 1,
+ "charOffset": 9266,
+ "charLength": 164,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithPreventIncrementWhenCurrentCommitTagged(bool? value)\n {\n this.preventIncrementWhenCurrentCommitTagged = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "9fcdeb835eacbafa",
+ "equalIndicator/v1": "8bed8fd8ed8cd10ae282611bde7cf3db2b2429b2c2094767b8869c59be508a56"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithPreReleaseWeight' can be made private",
+ "markdown": "Method 'WithPreReleaseWeight' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 320,
+ "startColumn": 5,
+ "charOffset": 10673,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 318,
+ "startColumn": 1,
+ "charOffset": 10662,
+ "charLength": 117,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithPreReleaseWeight(int? value)\n {\n this.preReleaseWeight = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "fa34c0dd386ebf63",
+ "equalIndicator/v1": "8dd744fa23bef7b300485157af43879871db8b2ee29201d3fc0e7ea51081448f"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithTracksReleaseBranches' can be made private",
+ "markdown": "Method 'WithTracksReleaseBranches' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 302,
+ "startColumn": 5,
+ "charOffset": 10184,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 300,
+ "startColumn": 1,
+ "charOffset": 10173,
+ "charLength": 128,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithTracksReleaseBranches(bool? value)\n {\n this.tracksReleaseBranches = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "72e585b50d1d68cd",
+ "equalIndicator/v1": "8edc4dd166cb4befd91c6b9c0352e5ba4e08dee7b4c14811073693f08fd5c1b3"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithShas' can be made private",
+ "markdown": "Method 'WithShas' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/IgnoreConfigurationBuilder.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 29,
+ "startColumn": 5,
+ "charOffset": 672,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 27,
+ "startColumn": 1,
+ "charOffset": 661,
+ "charLength": 109,
+ "snippet": {
+ "text": " }\n\n public IgnoreConfigurationBuilder WithShas(HashSet value)\n {\n this.shas = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "79d7694be7303156",
+ "equalIndicator/v1": "9191b831b7a6c97d7f2befa29faf57850e20a6e19d4825d9a7f969ed27bfc28a"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithTrackMergeTarget' can be made private",
+ "markdown": "Method 'WithTrackMergeTarget' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 278,
+ "startColumn": 5,
+ "charOffset": 9486,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 276,
+ "startColumn": 1,
+ "charOffset": 9475,
+ "charLength": 118,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithTrackMergeTarget(bool? value)\n {\n this.trackMergeTarget = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "07c819bfc6ae3ff8",
+ "equalIndicator/v1": "932a115609e38ccdc5b15021ffd491e1dc5465c72c341bd300126021849a5403"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithPreventIncrementWhenBranchMerged' can be made private",
+ "markdown": "Method 'WithPreventIncrementWhenBranchMerged' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 266,
+ "startColumn": 5,
+ "charOffset": 9082,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 264,
+ "startColumn": 1,
+ "charOffset": 9071,
+ "charLength": 150,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithPreventIncrementWhenBranchMerged(bool? value)\n {\n this.preventIncrementWhenBranchMerged = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "f8c7df635da2b8ad",
+ "equalIndicator/v1": "9d1091b9ff2d424c0812ed314a87cfd29c7f6eeecf559efc306e108cc1c4a2ab"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'DiscoverRepository' can be made private",
+ "markdown": "Method 'DiscoverRepository' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 51,
+ "startColumn": 5,
+ "charOffset": 1734,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 49,
+ "startColumn": 1,
+ "charOffset": 1723,
+ "charLength": 149,
+ "snippet": {
+ "text": " }\n\n public static void DiscoverRepository(this IServiceProvider sp)\n {\n var gitRepository = sp.GetRequiredService();"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.MsBuild.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "3b81dbc907dc82f9",
+ "equalIndicator/v1": "a4265a9c06bacc2838ccd8059ca6d68eacce0b3e23d5fd78b54e6a812bca24b2"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'GetVersion' can be made private",
+ "markdown": "Method 'GetVersion' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 68,
+ "startColumn": 5,
+ "charOffset": 2674,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 66,
+ "startColumn": 1,
+ "charOffset": 2592,
+ "charLength": 343,
+ "snippet": {
+ "text": " => DumpGraph(repository.ToGitRepository().Path, writer, maxCommits);\n\n public static GitVersionVariables GetVersion(this RepositoryFixtureBase fixture, IGitVersionConfiguration? configuration = null,\n IRepository? repository = null, string? commitId = null, bool onlyTrackedBranches = true, string? targetBranch = null)\n {"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.MsBuild.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "318ac156b1657713",
+ "equalIndicator/v1": "a4afd1b08385395f0807fd8f3fc04f39d8fc8314a24009a2342a71b99c37769a"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Property 'DirectorySeparatorChar' can be made private",
+ "markdown": "Property 'DirectorySeparatorChar' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Helpers/FileSystemHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 67,
+ "startColumn": 9,
+ "charOffset": 2878,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 65,
+ "startColumn": 1,
+ "charOffset": 2808,
+ "charLength": 228,
+ "snippet": {
+ "text": " {\n public static string NewLine => SysEnv.NewLine;\n public static char DirectorySeparatorChar => fileSystem.Path.DirectorySeparatorChar;\n\n private static readonly StringComparison OsDependentComparison ="
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "47e20dd81572c251",
+ "equalIndicator/v1": "a4f011d97b4f80ac560ed9ef839d4f3c53a31f9e284590ecb9000c1363ff5b8e"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithAssemblyVersioningFormat' can be made private",
+ "markdown": "Method 'WithAssemblyVersioningFormat' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 121,
+ "startColumn": 5,
+ "charOffset": 4516,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 119,
+ "startColumn": 1,
+ "charOffset": 4505,
+ "charLength": 136,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithAssemblyVersioningFormat(string? value)\n {\n this.assemblyVersioningFormat = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "65ec659931f70250",
+ "equalIndicator/v1": "a9ff1f6afad5baa1879308d0688fc50f93231148751f22ab0382a727857f2c0c"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Constructor 'SemanticVersionPreReleaseTag' can be made private",
+ "markdown": "Constructor 'SemanticVersionPreReleaseTag' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 23,
+ "startColumn": 5,
+ "charOffset": 746,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 21,
+ "startColumn": 1,
+ "charOffset": 682,
+ "charLength": 227,
+ "snippet": {
+ "text": " public bool PromoteTagEvenIfNameIsEmpty { get; init; }\n\n public SemanticVersionPreReleaseTag() => Name = string.Empty;\n\n public SemanticVersionPreReleaseTag(string name, long? number, bool promoteTagEvenIfNameIsEmpty)"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "4a42a72507675ee0",
+ "equalIndicator/v1": "cda0e8d0b89f3b9e17c4a83e1e9316a95447c3eb3c58bef1794d599c5bb8d116"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Property 'PromoteTagEvenIfNameIsEmpty' can be made private",
+ "markdown": "Property 'PromoteTagEvenIfNameIsEmpty' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 21,
+ "startColumn": 5,
+ "charOffset": 686,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 19,
+ "startColumn": 1,
+ "charOffset": 642,
+ "charLength": 165,
+ "snippet": {
+ "text": " public long? Number { get; init; }\n\n public bool PromoteTagEvenIfNameIsEmpty { get; init; }\n\n public SemanticVersionPreReleaseTag() => Name = string.Empty;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "304d08da85634319",
+ "equalIndicator/v1": "ce384c072aedd7cfb73948dda11dcd04749e99d41826a45d7df82e6ad841b651"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Property 'RefSpecs' can be made private",
+ "markdown": "Property 'RefSpecs' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.LibGit2Sharp/Git/Remote.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 20,
+ "startColumn": 5,
+ "charOffset": 720,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 18,
+ "startColumn": 1,
+ "charOffset": 668,
+ "charLength": 107,
+ "snippet": {
+ "text": " public string Url => this.innerRemote.Url;\n\n public IEnumerable RefSpecs\n {\n get"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.LibGit2Sharp",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "0b42b6fe81d50fee",
+ "equalIndicator/v1": "d9b036319212323201c50ca1c4b114e7cfd397a81f5cadd17e9763b36e145fec"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithVersionInBranchPattern' can be made private",
+ "markdown": "Method 'WithVersionInBranchPattern' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 139,
+ "startColumn": 5,
+ "charOffset": 5044,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 137,
+ "startColumn": 1,
+ "charOffset": 5033,
+ "charLength": 132,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithVersionInBranchPattern(string? value)\n {\n this.versionInBranchPattern = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "8348fe093daaf082",
+ "equalIndicator/v1": "da3a2b7bb813af9c8beb4477fcf5c07fc1e5fc4e6d6eeccd8de2e690e3fdeaa7"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'ToGitRepository' can be made private",
+ "markdown": "Method 'ToGitRepository' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 161,
+ "startColumn": 5,
+ "charOffset": 6451,
+ "charLength": 8,
+ "snippet": {
+ "text": "internal"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 159,
+ "startColumn": 1,
+ "charOffset": 6440,
+ "charLength": 154,
+ "snippet": {
+ "text": " }\n\n internal static IGitRepository ToGitRepository(this IRepository repository)\n {\n var gitRepository = new GitRepository(new NullLog());"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.MsBuild.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "aa5d8e1a3910919c",
+ "equalIndicator/v1": "de8f75ffee4f641447c9483347e33e7705e4b9ef7d5131112ae2cdd416322ab0"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithIsMainBranch' can be made private",
+ "markdown": "Method 'WithIsMainBranch' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 314,
+ "startColumn": 5,
+ "charOffset": 10518,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 312,
+ "startColumn": 1,
+ "charOffset": 10507,
+ "charLength": 110,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithIsMainBranch(bool? value)\n {\n this.isMainBranch = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "0625bb954b3755eb",
+ "equalIndicator/v1": "e1537a990b34403b4d0d5046b725d803e2a199c4fba0bf04dd25e4ce99f3002b"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'Combine' can be made private",
+ "markdown": "Method 'Combine' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Helpers/FileSystemHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 125,
+ "startColumn": 9,
+ "charOffset": 5097,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 123,
+ "startColumn": 1,
+ "charOffset": 5078,
+ "charLength": 164,
+ "snippet": {
+ "text": " }\n\n public static string Combine(string? path1, string? path2, string? path3)\n {\n ArgumentException.ThrowIfNullOrWhiteSpace(path1);"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "9efd3542863b65cb",
+ "equalIndicator/v1": "e8a2e96804c2dd49761635866a90126621007fc0bc2e3d505ebc6fef0f03383c"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithTrackMergeMessage' can be made private",
+ "markdown": "Method 'WithTrackMergeMessage' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 284,
+ "startColumn": 5,
+ "charOffset": 9649,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 282,
+ "startColumn": 1,
+ "charOffset": 9638,
+ "charLength": 120,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithTrackMergeMessage(bool? value)\n {\n this.trackMergeMessage = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "c12445c5a92fea37",
+ "equalIndicator/v1": "fb7a2ab2c07c95d3f2a1c47d6f74f1cc0e45c77007c49f7ea9e387cc7b4ffb8d"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBePrivate.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Field 'repositoryStore' can be made private",
+ "markdown": "Field 'repositoryStore' can be made private"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 12,
+ "startColumn": 5,
+ "charOffset": 335,
+ "charLength": 9,
+ "snippet": {
+ "text": "protected"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 10,
+ "startColumn": 1,
+ "charOffset": 280,
+ "charLength": 224,
+ "snippet": {
+ "text": "{\n protected readonly ILog log = log.NotNull();\n protected readonly IRepositoryStore repositoryStore = repositoryStore.NotNull();\n private readonly Lazy versionContext = versionContext.NotNull();\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "d774cc88ea0885cc",
+ "equalIndicator/v1": "fc453f975365798d2caf47bd8a217f79da184734fe3652e261743ccf2cb2fb7c"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBeProtected.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithIsSourceBranchFor' can be made protected",
+ "markdown": "Method 'WithIsSourceBranchFor' can be made protected"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 102,
+ "startColumn": 5,
+ "charOffset": 2934,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 100,
+ "startColumn": 1,
+ "charOffset": 2923,
+ "charLength": 152,
+ "snippet": {
+ "text": " }\n\n public virtual BranchConfigurationBuilder WithIsSourceBranchFor(IEnumerable values)\n {\n WithIsSourceBranchFor([.. values]);"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "907339a47a48aba5",
+ "equalIndicator/v1": "26daf9e7e80d3d2b5b915dd59c36b06265526229dc1ce38f2c3d1c54476f930d"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBeProtected.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Constant 'MainBranch' can be made protected",
+ "markdown": "Constant 'MainBranch' can be made protected"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Helpers/TestBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 10,
+ "startColumn": 5,
+ "charOffset": 206,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 8,
+ "startColumn": 1,
+ "charOffset": 178,
+ "charLength": 178,
+ "snippet": {
+ "text": "public class TestBase\n{\n public const string MainBranch = \"main\";\n\n protected static IServiceProvider ConfigureServices(Action? overrideServices = null)"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.MsBuild.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "d8605a834ce1f2ec",
+ "equalIndicator/v1": "36bec50ba3e6870ccade82084537061038c70a64dee81529a4d3f0e1a0f37a8a"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBeProtected.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithConfiguration' can be made protected",
+ "markdown": "Method 'WithConfiguration' can be made protected"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 326,
+ "startColumn": 5,
+ "charOffset": 10835,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 324,
+ "startColumn": 1,
+ "charOffset": 10824,
+ "charLength": 165,
+ "snippet": {
+ "text": " }\n\n public TConfigurationBuilder WithConfiguration(IGitVersionConfiguration value)\n {\n WithAssemblyVersioningScheme(value.AssemblyVersioningScheme);"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "50524bf965a4b8da",
+ "equalIndicator/v1": "60b9a3ae23943157b539c2d72261df7557fb4ac690984f6a78a697bc179c1db9"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBeProtected.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithSourceBranches' can be made protected",
+ "markdown": "Method 'WithSourceBranches' can be made protected"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 90,
+ "startColumn": 5,
+ "charOffset": 2600,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 88,
+ "startColumn": 1,
+ "charOffset": 2589,
+ "charLength": 146,
+ "snippet": {
+ "text": " }\n\n public virtual BranchConfigurationBuilder WithSourceBranches(IEnumerable values)\n {\n WithSourceBranches([.. values]);"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "99829247586fa2d8",
+ "equalIndicator/v1": "9b5933600024cb61754ddb6cf50acd68e820744494fc03e9df4381f5fb2c5dcc"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBeProtected.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithPreventIncrementWhenBranchMerged' can be made protected",
+ "markdown": "Method 'WithPreventIncrementWhenBranchMerged' can be made protected"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 54,
+ "startColumn": 5,
+ "charOffset": 1558,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 52,
+ "startColumn": 1,
+ "charOffset": 1547,
+ "charLength": 163,
+ "snippet": {
+ "text": " }\n\n public virtual BranchConfigurationBuilder WithPreventIncrementWhenBranchMerged(bool? value)\n {\n this.preventIncrementWhenBranchMerged = value;"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "71e7d9b29242c60a",
+ "equalIndicator/v1": "b858e2f3b626a01e808428a2774ff97c1b17fcb757f23f4f64398e392b81dd3e"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "MemberCanBeProtected.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Method 'WithBranch' can be made protected",
+ "markdown": "Method 'WithBranch' can be made protected"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 229,
+ "startColumn": 5,
+ "charOffset": 7788,
+ "charLength": 6,
+ "snippet": {
+ "text": "public"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 227,
+ "startColumn": 1,
+ "charOffset": 7777,
+ "charLength": 169,
+ "snippet": {
+ "text": " }\n\n public BranchConfigurationBuilder WithBranch(string value)\n => this.branchConfigurationBuilders.GetOrAdd(value, () => BranchConfigurationBuilder.New);\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "fbde394b0bdaac89",
+ "equalIndicator/v1": "e8d7c2d9d95e73a87b377c0050c29d16bfae58ce8c8bb67b334a49da873d4650"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Some values of the enum are not processed inside switch: Inherit",
+ "markdown": "Some values of the enum are not processed inside switch: Inherit"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Extensions/IncrementStrategyExtensions.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 5,
+ "startColumn": 92,
+ "charOffset": 175,
+ "charLength": 6,
+ "snippet": {
+ "text": "switch"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 3,
+ "startColumn": 1,
+ "charOffset": 34,
+ "charLength": 206,
+ "snippet": {
+ "text": "public static class IncrementStrategyExtensions\n{\n public static VersionField ToVersionField(this IncrementStrategy strategy) => strategy switch\n {\n IncrementStrategy.None => VersionField.None,"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "1ac30133f4a78181",
+ "equalIndicator/v1": "9be1d124e5d238645ce52708262f518ad3f9f4177c6a2da2044e3143590df0db"
+ },
+ "properties": {
+ "ideaSeverity": "TYPO",
+ "qodanaSeverity": "Low",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedMember.Local",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Enum member 'NoOpenFileErrorBox' is never used",
+ "markdown": "Enum member 'NoOpenFileErrorBox' is never used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Testing/Helpers/ProcessHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 174,
+ "startColumn": 9,
+ "charOffset": 6303,
+ "charLength": 18,
+ "snippet": {
+ "text": "NoOpenFileErrorBox"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 172,
+ "startColumn": 1,
+ "charOffset": 6224,
+ "charLength": 113,
+ "snippet": {
+ "text": " NoGpFaultErrorBox = 0x2,\n NoAlignmentFaultExcept = 0x4,\n NoOpenFileErrorBox = 0x8000\n }\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "79fefe9f9fe4faa3",
+ "equalIndicator/v1": "4fe5ef4b9b99a40a741be590e83d775cc3ee39dd4a8267caf4947e171b3a45fe"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedMember.Local",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Enum member 'NoAlignmentFaultExcept' is never used",
+ "markdown": "Enum member 'NoAlignmentFaultExcept' is never used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Testing/Helpers/ProcessHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 173,
+ "startColumn": 9,
+ "charOffset": 6265,
+ "charLength": 22,
+ "snippet": {
+ "text": "NoAlignmentFaultExcept"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 171,
+ "startColumn": 1,
+ "charOffset": 6190,
+ "charLength": 146,
+ "snippet": {
+ "text": " FailCriticalErrors = 0x1,\n NoGpFaultErrorBox = 0x2,\n NoAlignmentFaultExcept = 0x4,\n NoOpenFileErrorBox = 0x8000\n }"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "753a240dc52182f5",
+ "equalIndicator/v1": "c0b2552a70635e20a2355a2e69d9c35ebd2e3b080cd74f85d0dbec85084b567e"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedMember.Local",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Enum member 'Default' is never used",
+ "markdown": "Enum member 'Default' is never used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Testing/Helpers/ProcessHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 170,
+ "startColumn": 9,
+ "charOffset": 6175,
+ "charLength": 7,
+ "snippet": {
+ "text": "Default"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 168,
+ "startColumn": 1,
+ "charOffset": 6133,
+ "charLength": 123,
+ "snippet": {
+ "text": " private enum ErrorModes\n {\n Default = 0x0,\n FailCriticalErrors = 0x1,\n NoGpFaultErrorBox = 0x2,"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Testing",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "e57abe62354da987",
+ "equalIndicator/v1": "e5a0e1e0f5c4041d9a86121940ebd766fa5e46f2ce286a45e83ee2fdf95edabf"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedMemberInSuper.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Only implementations of method 'FromJson' are used",
+ "markdown": "Only implementations of method 'FromJson' are used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/OutputVariables/IVersionVariableSerializer.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 5,
+ "startColumn": 25,
+ "charOffset": 109,
+ "charLength": 8,
+ "snippet": {
+ "text": "FromJson"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 3,
+ "startColumn": 1,
+ "charOffset": 39,
+ "charLength": 203,
+ "snippet": {
+ "text": "public interface IVersionVariableSerializer\n{\n GitVersionVariables FromJson(string json);\n string ToJson(GitVersionVariables gitVersionVariables);\n GitVersionVariables FromFile(string filePath);"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "9c14d2762c92e19e",
+ "equalIndicator/v1": "5c1cb130ad5e53dc7120d8aeb6ef8f237824c9eaf90a4e3f0573d2e7f9cfe8c9"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedMemberInSuper.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Only implementations of property 'WorkingDirectory' are used",
+ "markdown": "Only implementations of property 'WorkingDirectory' are used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/Output/IConverterContext.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 5,
+ "startColumn": 12,
+ "charOffset": 71,
+ "charLength": 16,
+ "snippet": {
+ "text": "WorkingDirectory"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 3,
+ "startColumn": 1,
+ "charOffset": 23,
+ "charLength": 76,
+ "snippet": {
+ "text": "public interface IConverterContext\n{\n string WorkingDirectory { get; }\n}\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "60b1554fa4bd5dc2",
+ "equalIndicator/v1": "9d63774df9d7e05463e205630f117f973cc659d7fa5926a7e0f8aaaf2304b1c6"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedType.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Class 'IgnoreConfigurationBuilder' is never used (except inside its declaration)",
+ "markdown": "Class 'IgnoreConfigurationBuilder' is never used (except inside its declaration)"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Configuration/Builders/IgnoreConfigurationBuilder.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 3,
+ "startColumn": 23,
+ "charOffset": 59,
+ "charLength": 26,
+ "snippet": {
+ "text": "IgnoreConfigurationBuilder"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 1,
+ "startColumn": 1,
+ "charOffset": 0,
+ "charLength": 146,
+ "snippet": {
+ "text": "namespace GitVersion.Configuration;\n\ninternal sealed class IgnoreConfigurationBuilder\n{\n public static IgnoreConfigurationBuilder New => new();"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Configuration",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "25a2ace762dfb00f",
+ "equalIndicator/v1": "15d42fca64552bc8aff310e634bee6a2b9146fc9dfb8eb5f3b15593287d2233b"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedType.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Class 'TaggedCommitVersionStrategy' is never used",
+ "markdown": "Class 'TaggedCommitVersionStrategy' is never used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 13,
+ "startColumn": 23,
+ "charOffset": 409,
+ "charLength": 27,
+ "snippet": {
+ "text": "TaggedCommitVersionStrategy"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 11,
+ "startColumn": 1,
+ "charOffset": 319,
+ "charLength": 173,
+ "snippet": {
+ "text": "/// Increments if the tag is not the current commit.\n/// \ninternal sealed class TaggedCommitVersionStrategy(\n ILog log,\n Lazy contextLazy,"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "d967b3fae2f6c018",
+ "equalIndicator/v1": "2df185ac94ad6c05efc2fb1b76cd20af362ffd450a47b703bb7dc4d31038aecf"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedType.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Class 'ExecutableHelper' is never used",
+ "markdown": "Class 'ExecutableHelper' is never used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/Helpers/ExecutableHelper.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 5,
+ "startColumn": 21,
+ "charOffset": 89,
+ "charLength": 16,
+ "snippet": {
+ "text": "ExecutableHelper"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 3,
+ "startColumn": 1,
+ "charOffset": 27,
+ "charLength": 140,
+ "snippet": {
+ "text": "namespace GitVersion.Core.Tests.Helpers;\n\npublic static class ExecutableHelper\n{\n public static string GetDotNetExecutable() => \"dotnet\";"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core.Tests",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "465f8011cb1f23ff",
+ "equalIndicator/v1": "5bb3dd2a0977188b991b9ed3965969b28c4b5411bf5729e98ff7520bedc05e41"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ },
+ {
+ "ruleId": "UnusedType.Global",
+ "kind": "fail",
+ "level": "note",
+ "message": {
+ "text": "Class 'TrackReleaseBranchesVersionStrategy' is never used",
+ "markdown": "Class 'TrackReleaseBranchesVersionStrategy' is never used"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 10,
+ "startColumn": 23,
+ "charOffset": 235,
+ "charLength": 35,
+ "snippet": {
+ "text": "TrackReleaseBranchesVersionStrategy"
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 8,
+ "startColumn": 1,
+ "charOffset": 171,
+ "charLength": 179,
+ "snippet": {
+ "text": "namespace GitVersion.VersionCalculation;\n\ninternal sealed class TrackReleaseBranchesVersionStrategy(\n Lazy contextLazy,\n IRepositoryStore repositoryStore,"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "GitVersion.Core",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "b4f244eb64615685",
+ "equalIndicator/v1": "b63af6c15c019a9c52843e65463894bda0c76e2ebfb309105acccc5db97bedb4"
+ },
+ "properties": {
+ "ideaSeverity": "WEAK WARNING",
+ "qodanaSeverity": "Moderate",
+ "tags": [
+ "C#",
+ ".NET 8.0",
+ ".NET 9.0"
+ ]
+ }
+ }
+ ],
+ "automationDetails": {
+ "id": "GitVersion/qodana/2025-04-23",
+ "guid": "947f3471-c681-4ce3-bd9c-93ceb48b1696",
+ "properties": {
+ "jobUrl": "https://github.com/GitTools/GitVersion/actions/runs/14620708825",
+ "analysisKind": "regular"
+ }
+ },
+ "newlineSequences": [
+ "\r\n",
+ "\n"
+ ],
+ "properties": {
+ "qodana.promo.results": [
+ {
+ "ruleId": "HardcodedPasswords",
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Hardcoded password detected by \"bitbucket-client-id\" default rule",
+ "markdown": "Hardcoded password detected by \"bitbucket-client-id\" default rule"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "GitVersion.Core.Tests/MergeMessageTests.cs",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 149,
+ "startColumn": 24,
+ "charOffset": 6803,
+ "charLength": 243,
+ "snippet": {
+ "text": "$\"\"\"\n Pull request #68: Release/2.2.0\n\n Merge in aaa/777 from release/2.2.0 to {MainBranch}\n\n * commit '750aa37753dec1a85b22cc16db851187649d9e97':\n \"\"\""
+ },
+ "sourceLanguage": "C#"
+ },
+ "contextRegion": {
+ "startLine": 147,
+ "startColumn": 1,
+ "charOffset": 6705,
+ "charLength": 411,
+ "snippet": {
+ "text": " private static readonly object[] BitBucketPullMergeMessages_v7 =\n [\n new object[] { $\"\"\"\n Pull request #68: Release/2.2.0\n\n Merge in aaa/777 from release/2.2.0 to {MainBranch}\n\n * commit '750aa37753dec1a85b22cc16db851187649d9e97':\n \"\"\", \"release/2.2.0\", MainBranch, new SemanticVersion(2, 2), 68 }\n ];\n"
+ },
+ "sourceLanguage": "C#"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "73f61f7a69becf74",
+ "equalIndicator/v1": "cd0e7a34d9213ddbeb5a965a4560719420a746c46e40ae380a87ccae800ac082"
+ },
+ "properties": {
+ "ideaSeverity": "ERROR",
+ "qodanaSeverity": "Critical",
+ "tags": [
+ "C#"
+ ]
+ }
+ },
+ {
+ "ruleId": "MarkdownUnresolvedFileReference",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "Cannot resolve directory 'docs'",
+ "markdown": "Cannot resolve directory 'docs'"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../docs/input/docs/usage/cli/arguments.md",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 130,
+ "startColumn": 34,
+ "charOffset": 5717,
+ "charLength": 4,
+ "snippet": {
+ "text": "docs"
+ },
+ "sourceLanguage": "Markdown"
+ },
+ "contextRegion": {
+ "startLine": 128,
+ "startColumn": 1,
+ "charOffset": 5657,
+ "charLength": 261,
+ "snippet": {
+ "text": "18. `update-build-number`\n\nRead more about [Configuration](/docs/reference/configuration).\n\nUsing `override-config` on the command line will not change the contents of the config file `GitVersion.yml`, `GitVersion.yaml`, `.GitVersion.yml` or `.GitVersion.yaml`."
+ },
+ "sourceLanguage": "Markdown"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "9643b0394420be16",
+ "equalIndicator/v1": "6b510b8a48dec9b75c0b13c790b4b98866ebe3f75fb167e51676a29f425c4a37"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "Markdown"
+ ]
+ }
+ },
+ {
+ "ruleId": "MarkdownUnresolvedFileReference",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "Cannot resolve symbol 'configuration'",
+ "markdown": "Cannot resolve symbol 'configuration'"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../docs/input/docs/usage/cli/arguments.md",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 130,
+ "startColumn": 49,
+ "charOffset": 5732,
+ "charLength": 13,
+ "snippet": {
+ "text": "configuration"
+ },
+ "sourceLanguage": "Markdown"
+ },
+ "contextRegion": {
+ "startLine": 128,
+ "startColumn": 1,
+ "charOffset": 5657,
+ "charLength": 261,
+ "snippet": {
+ "text": "18. `update-build-number`\n\nRead more about [Configuration](/docs/reference/configuration).\n\nUsing `override-config` on the command line will not change the contents of the config file `GitVersion.yml`, `GitVersion.yaml`, `.GitVersion.yml` or `.GitVersion.yaml`."
+ },
+ "sourceLanguage": "Markdown"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "0083bdf8adad6b9a",
+ "equalIndicator/v1": "9419591614d1b66f12c6392c26afa945c81a2ef01f10943cc08c353e49e3e659"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "Markdown"
+ ]
+ }
+ },
+ {
+ "ruleId": "MarkdownUnresolvedFileReference",
+ "kind": "fail",
+ "level": "warning",
+ "message": {
+ "text": "Cannot resolve directory 'reference'",
+ "markdown": "Cannot resolve directory 'reference'"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../docs/input/docs/usage/cli/arguments.md",
+ "uriBaseId": "SRCROOT"
+ },
+ "region": {
+ "startLine": 130,
+ "startColumn": 39,
+ "charOffset": 5722,
+ "charLength": 9,
+ "snippet": {
+ "text": "reference"
+ },
+ "sourceLanguage": "Markdown"
+ },
+ "contextRegion": {
+ "startLine": 128,
+ "startColumn": 1,
+ "charOffset": 5657,
+ "charLength": 261,
+ "snippet": {
+ "text": "18. `update-build-number`\n\nRead more about [Configuration](/docs/reference/configuration).\n\nUsing `override-config` on the command line will not change the contents of the config file `GitVersion.yml`, `GitVersion.yaml`, `.GitVersion.yml` or `.GitVersion.yaml`."
+ },
+ "sourceLanguage": "Markdown"
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "rider.module",
+ "kind": "module"
+ }
+ ]
+ }
+ ],
+ "partialFingerprints": {
+ "equalIndicator/v2": "650688edb0a7015d",
+ "equalIndicator/v1": "bd452496a3cfc8b290c002e00c60c673313c538878196f0c1815854859bb740f"
+ },
+ "properties": {
+ "ideaSeverity": "WARNING",
+ "qodanaSeverity": "High",
+ "tags": [
+ "Markdown"
+ ]
+ }
+ }
+ ],
+ "configProfile": "starter",
+ "deviceId": "200820300000000-3e47-7fab-260c-3266c4769609",
+ "qodanaNewResultSummary": {
+ "moderate": 54,
+ "low": 5,
+ "high": 20,
+ "total": 79
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/qodana.yaml b/qodana.yaml
new file mode 100644
index 0000000000..7ebeb09341
--- /dev/null
+++ b/qodana.yaml
@@ -0,0 +1,92 @@
+#-------------------------------------------------------------------------------#
+# Qodana analysis is configured by qodana.yaml file #
+# https://www.jetbrains.com/help/qodana/qodana-yaml.html #
+#-------------------------------------------------------------------------------#
+version: "1.0"
+#Specify IDE code to run analysis without container (Applied in CI/CD pipeline)
+ide: QDNET
+#Specify inspection profile for code analysis
+profile:
+ name: qodana.starter
+include:
+ - name: ConvertIfStatementToReturnStatement
+ - name: ConvertIfStatementToConditionalTernaryExpression
+ - name: AutoPropertyCanBeMadeGetOnly.Global
+ - name: CanReplaceCastWithLambdaReturnType
+ - name: ChangeFieldTypeToSystemThreadingLock
+ - name: ConvertIfStatementToSwitchStatement
+ - name: ConvertToConstant.Local
+ - name: DuplicatedSequentialIfBodies
+ - name: InlineTemporaryVariable
+ - name: InvertIf
+ - name: UseVerbatimString
+ - name: MemberCanBePrivate.Global
+ - name: MemberCanBeProtected.Global
+ - name: MergeIntoPattern
+ - name: UnusedMethodReturnValue.Global
+ - name: EditorConfigNoMatchingFiles
+ - name: PreferConcreteValueOverDefault
+ - name: PropertyCanBeMadeInitOnly.Global
+ - name: MoveLocalFunctionAfterJumpStatement
+ - name: RedundantExplicitParamsArrayCreation
+ - name: RedundantOverload.Global
+ - name: RedundantStringInterpolation
+ - name: RedundantVerbatimStringPrefix
+ - name: ReplaceSubstringWithRangeIndexer
+ - name: RCS1001
+ - name: RCS1003
+ - name: RCS1123
+ - name: SYSLIB1045
+ - name: CA1826
+ - name: RCS1256
+ - name: RCS1118
+ - name: RCS1077
+ - name: RCS1205
+ - name: RCS1214
+ - name: RCS1249
+ - name: RCS1192
+ - name: SYSLIB1054
+ - name: CA1512
+ - name: CA1866
+ - name: CA1859
+ - name: RCS1246
+ - name: CA1829
+ - name: RCS1266
+ - name: RCS1267
+ - name: RCS1227
+ - name: SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault
+ - name: SwitchStatementHandlesSomeKnownEnumValuesWithDefault
+ - name: RedundantAlwaysMatchSubpattern
+ - name: UnusedType.Global
+ - name: UnusedMemberInSuper.Global
+ - name: UnusedMember.Local
+ - name: EditorConfigKeyCorrectness
+ - name: UseCollectionCountProperty
+ - name: UseDiscardAssignment
+ - name: ArrangeNamespaceBody
+ - name: SuggestDiscardDeclarationVarStyle
+ - name: ArrangeTrailingCommaInMultilineLists
+ - name: ArrangeObjectCreationWhenTypeNotEvident
+ - name: UseRawString
+ - name: VirtualMemberNeverOverridden.Global
+ - name: ArrangeVarKeywordsInDeconstructingDeclaration
+ - name: SuggestVarOrType_BuiltInTypes
+#Enable inspections
+#include:
+# - name:
+#Disable inspections
+exclude:
+ - name: LoopCanBeConvertedToQuery
+ - name: ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator
+ - name: ConvertIfStatementToConditionalTernaryExpression
+ paths:
+ - GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs
+ - GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs
+#Execute shell command before Qodana execution (Applied in CI/CD pipeline)
+bootstrap: dotnet build src/GitVersion.slnx
+dotnet:
+ frameworks: net8.0;net9.0
+ solution: src/GitVersion.slnx
+#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)
+#plugins:
+# - id: #(plugin id can be found at https://plugins.jetbrains.com)
diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs
index 82f7e5c8da..5e53ac63a0 100644
--- a/src/GitVersion.App.Tests/ArgumentParserTests.cs
+++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs
@@ -361,7 +361,7 @@ public void UpdateAssemblyInfoWithRelativeFilename()
var targetPath = FileSystemHelper.Path.Combine(repo.RepositoryPath, "subdir1", "subdir2");
this.fileSystem.Directory.CreateDirectory(targetPath);
- var arguments = this.argumentParser.ParseArguments($"-targetpath {targetPath} -updateAssemblyInfo ..\\..\\CommonAssemblyInfo.cs");
+ var arguments = this.argumentParser.ParseArguments($@"-targetpath {targetPath} -updateAssemblyInfo ..\..\CommonAssemblyInfo.cs");
arguments.UpdateAssemblyInfo.ShouldBe(true);
arguments.UpdateAssemblyInfoFileName.Count.ShouldBe(1);
arguments.UpdateAssemblyInfoFileName.ShouldContain(x => FileSystemHelper.Path.GetFileName(x).Equals("CommonAssemblyInfo.cs"));
@@ -604,7 +604,7 @@ public void EnsureAssemblyInfoFalse()
[Test]
public void DynamicRepoLocation()
{
- var arguments = this.argumentParser.ParseArguments(@"-dynamicRepoLocation /tmp/foo");
+ var arguments = this.argumentParser.ParseArguments("-dynamicRepoLocation /tmp/foo");
arguments.ClonePath.ShouldBe("/tmp/foo");
}
diff --git a/src/GitVersion.App.Tests/ExecCmdLineArgumentTest.cs b/src/GitVersion.App.Tests/ExecCmdLineArgumentTest.cs
index b732fdf6ac..b722f0a6ff 100644
--- a/src/GitVersion.App.Tests/ExecCmdLineArgumentTest.cs
+++ b/src/GitVersion.App.Tests/ExecCmdLineArgumentTest.cs
@@ -25,11 +25,15 @@ public void LogPathContainsForwardSlash()
fixture.MakeATaggedCommit("1.2.3");
fixture.MakeACommit();
- var result = GitVersionHelper.ExecuteIn(fixture.RepositoryPath, @" /l ""/tmp/path""", false);
+ var result = GitVersionHelper.ExecuteIn(fixture.RepositoryPath,
+ """ /l "/tmp/path" """, false);
result.ExitCode.ShouldBe(0);
result.Output.ShouldNotBeNull();
- result.Output.ShouldContain(@"""MajorMinorPatch"": ""1.2.4""");
+ result.Output.ShouldContain(
+ """
+ "MajorMinorPatch": "1.2.4"
+ """);
}
[Theory]
@@ -42,7 +46,8 @@ public void CheckBuildServerVerbosityConsole(string verbosityArg, string expecte
fixture.MakeATaggedCommit("1.2.3");
fixture.MakeACommit();
- var result = GitVersionHelper.ExecuteIn(fixture.RepositoryPath, $@" {verbosityArg} -output buildserver /l ""/tmp/path""", false);
+ var result = GitVersionHelper.ExecuteIn(fixture.RepositoryPath,
+ $""" {verbosityArg} -output buildserver /l "/tmp/path" """, false);
result.ExitCode.ShouldBe(0);
result.Output.ShouldNotBeNull();
diff --git a/src/GitVersion.App.Tests/HelpWriterTests.cs b/src/GitVersion.App.Tests/HelpWriterTests.cs
index 9fa4cc1283..785f7a8ef6 100644
--- a/src/GitVersion.App.Tests/HelpWriterTests.cs
+++ b/src/GitVersion.App.Tests/HelpWriterTests.cs
@@ -35,7 +35,7 @@ public void AllArgsAreInHelp()
{ nameof(Arguments.ShowVariable), "/showvariable" },
{ nameof(Arguments.Format), "/format" }
};
- string helpText = string.Empty;
+ var helpText = string.Empty;
this.helpWriter.WriteTo(s => helpText = s);
@@ -51,7 +51,7 @@ public void AllArgsAreInHelp()
.ShouldBeEmpty();
}
- private static bool IsNotInHelp(IReadOnlyDictionary lookup, string propertyName, string helpText)
+ private static bool IsNotInHelp(Dictionary lookup, string propertyName, string helpText)
{
if (lookup.TryGetValue(propertyName, out var value))
return !helpText.Contains(value);
diff --git a/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs b/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs
index 141b29b36a..6e436ffc9e 100644
--- a/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs
+++ b/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs
@@ -6,8 +6,8 @@ namespace GitVersion.App.Tests;
public class ExecutionResults(int exitCode, string? output, string? logContents = null)
{
- public int ExitCode { get; init; } = exitCode;
- public string? Output { get; init; } = output;
+ public int ExitCode { get; } = exitCode;
+ public string? Output { get; } = output;
public string? Log { get; init; } = logContents;
public GitVersionVariables? OutputVariables
diff --git a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs
index cb663b43aa..6485ce3e8f 100644
--- a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs
+++ b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs
@@ -49,7 +49,7 @@ public void WithEnv(params KeyValuePair[] envs)
public Task Run(string arg)
{
- var args = arg.Split([' '], StringSplitOptions.RemoveEmptyEntries).ToArray();
+ var args = arg.Split([' '], StringSplitOptions.RemoveEmptyEntries);
return Run(args);
}
diff --git a/src/GitVersion.App.Tests/UpdateWixVersionFileTests.cs b/src/GitVersion.App.Tests/UpdateWixVersionFileTests.cs
index a73c361411..f3ba06a794 100644
--- a/src/GitVersion.App.Tests/UpdateWixVersionFileTests.cs
+++ b/src/GitVersion.App.Tests/UpdateWixVersionFileTests.cs
@@ -39,7 +39,7 @@ public void WixVersionFileVarCountTest()
var gitVersionVarsInWix = GetGitVersionVarsInWixFile(FileSystemHelper.Path.Combine(fixture.RepositoryPath, this.wixVersionFileName));
var gitVersionVars = GitVersionVariables.AvailableVariables;
- Assert.That(gitVersionVarsInWix, Has.Count.EqualTo(gitVersionVars.Count()));
+ Assert.That(gitVersionVarsInWix, Has.Count.EqualTo(gitVersionVars.Count));
}
[Test]
diff --git a/src/GitVersion.App.Tests/VersionWriterTests.cs b/src/GitVersion.App.Tests/VersionWriterTests.cs
index 36c70d08c3..bea307439b 100644
--- a/src/GitVersion.App.Tests/VersionWriterTests.cs
+++ b/src/GitVersion.App.Tests/VersionWriterTests.cs
@@ -22,7 +22,7 @@ public void WriteVersionShouldWriteFileVersionWithNoPrereleaseTag()
{
var asm = GenerateAssembly(new Version(1, 0, 0), "");
- string? version = string.Empty;
+ var version = string.Empty;
this.versionWriter.WriteTo(asm, v => version = v);
Assert.Multiple(() =>
{
@@ -36,7 +36,7 @@ public void WriteVersionShouldWriteFileVersionWithPrereleaseTag()
{
var asm = GenerateAssembly(new Version(1, 0, 0), "-beta4");
- string? version = string.Empty;
+ var version = string.Empty;
this.versionWriter.WriteTo(asm, v => version = v);
Assert.Multiple(() =>
{
@@ -48,7 +48,7 @@ public void WriteVersionShouldWriteFileVersionWithPrereleaseTag()
private static Assembly GenerateAssembly(Version fileVersion, string prereleaseInfo)
{
var attribute = typeof(AssemblyInformationalVersionAttribute);
- var csharpCode = $@"[assembly: {attribute.FullName}(""{fileVersion + prereleaseInfo}"")]";
+ var csharpCode = $"""[assembly: {attribute.FullName}("{fileVersion + prereleaseInfo}")]""";
var compilation = CSharpCompilation.Create("test-asm")
.WithOptions(new(OutputKind.DynamicallyLinkedLibrary))
.AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs
index 5a62ad2c23..d22b63ee31 100644
--- a/src/GitVersion.App/ArgumentParser.cs
+++ b/src/GitVersion.App/ArgumentParser.cs
@@ -177,25 +177,23 @@ private void ParseTargetPath(Arguments arguments, string? name, IReadOnlyList? values, string? value)
@@ -357,14 +351,10 @@ private static bool ParseRemoteArguments(Arguments arguments, string? name, IRea
return true;
}
- if (name.IsSwitch("b"))
- {
- EnsureArgumentValueCount(values);
- arguments.TargetBranch = value;
- return true;
- }
-
- return false;
+ if (!name.IsSwitch("b")) return false;
+ EnsureArgumentValueCount(values);
+ arguments.TargetBranch = value;
+ return true;
}
private static void ParseShowVariable(Arguments arguments, string? value, string? name)
@@ -379,7 +369,7 @@ private static void ParseShowVariable(Arguments arguments, string? value, string
if (versionVariable == null)
{
var message = $"{name} requires a valid version variable. Available variables are:{FileSystemHelper.Path.NewLine}" +
- string.Join(", ", availableVariables.Select(x => string.Concat("'", x, "'")));
+ string.Join(", ", availableVariables.Select(x => $"'{x}'"));
throw new WarningException(message);
}
@@ -562,14 +552,14 @@ private static void EnsureArgumentValueCount(IReadOnlyList? values)
}
}
- private static NameValueCollection CollectSwitchesAndValuesFromArguments(IList namedArguments, out bool firstArgumentIsSwitch)
+ private static NameValueCollection CollectSwitchesAndValuesFromArguments(string[] namedArguments, out bool firstArgumentIsSwitch)
{
firstArgumentIsSwitch = true;
var switchesAndValues = new NameValueCollection();
string? currentKey = null;
var argumentRequiresValue = false;
- for (var i = 0; i < namedArguments.Count; ++i)
+ for (var i = 0; i < namedArguments.Length; ++i)
{
var arg = namedArguments[i];
diff --git a/src/GitVersion.App/FileSystemGlobbing/DirectoryInfoGlobbingWrapper.cs b/src/GitVersion.App/FileSystemGlobbing/DirectoryInfoGlobbingWrapper.cs
index bf6fbbb3dc..798e4ddbf3 100644
--- a/src/GitVersion.App/FileSystemGlobbing/DirectoryInfoGlobbingWrapper.cs
+++ b/src/GitVersion.App/FileSystemGlobbing/DirectoryInfoGlobbingWrapper.cs
@@ -36,30 +36,28 @@ this.directoryInfo.Parent is null
public override IEnumerable EnumerateFileSystemInfos()
{
- if (this.directoryInfo.Exists)
+ if (!this.directoryInfo.Exists) yield break;
+ IEnumerable fileSystemInfos;
+ try
{
- IEnumerable fileSystemInfos;
- try
- {
- fileSystemInfos = this.directoryInfo.EnumerateFileSystemInfos(
- "*",
- SearchOption.TopDirectoryOnly
- );
- }
- catch (DirectoryNotFoundException)
- {
- yield break;
- }
+ fileSystemInfos = this.directoryInfo.EnumerateFileSystemInfos(
+ "*",
+ SearchOption.TopDirectoryOnly
+ );
+ }
+ catch (DirectoryNotFoundException)
+ {
+ yield break;
+ }
- foreach (var fileSystemInfo in fileSystemInfos)
+ foreach (var fileSystemInfo in fileSystemInfos)
+ {
+ yield return fileSystemInfo switch
{
- yield return fileSystemInfo switch
- {
- IDirectoryInfo info => new DirectoryInfoGlobbingWrapper(this.fileSystem, info),
- IFileInfo info => new FileInfoGlobbingWrapper(this.fileSystem, info),
- _ => new FileSystemInfoGlobbingWrapper(this.fileSystem, fileSystemInfo),
- };
- }
+ IDirectoryInfo info => new DirectoryInfoGlobbingWrapper(this.fileSystem, info),
+ IFileInfo info => new FileInfoGlobbingWrapper(this.fileSystem, info),
+ _ => new FileSystemInfoGlobbingWrapper(this.fileSystem, fileSystemInfo)
+ };
}
}
@@ -82,7 +80,7 @@ this.directoryInfo.Parent is null
{
{ Length: 1 } => new DirectoryInfoGlobbingWrapper(this.fileSystem, dirs[0], parentPath),
{ Length: 0 } => null,
- _ => throw new InvalidOperationException($"More than one sub directories are found under {this.directoryInfo.FullName} with name {path}."),
+ _ => throw new InvalidOperationException($"More than one sub directories are found under {this.directoryInfo.FullName} with name {path}.")
};
}
diff --git a/src/GitVersion.App/OverrideConfigurationOptionParser.cs b/src/GitVersion.App/OverrideConfigurationOptionParser.cs
index f3e886ddcf..2b19243e63 100644
--- a/src/GitVersion.App/OverrideConfigurationOptionParser.cs
+++ b/src/GitVersion.App/OverrideConfigurationOptionParser.cs
@@ -41,7 +41,7 @@ internal class OverrideConfigurationOptionParser
/// Only simple types are supported
private static bool IsSupportedPropertyType(Type propertyType)
{
- Type unwrappedType = Nullable.GetUnderlyingType(propertyType) ?? propertyType;
+ var unwrappedType = Nullable.GetUnderlyingType(propertyType) ?? propertyType;
return unwrappedType == typeof(string)
|| unwrappedType.IsEnum
diff --git a/src/GitVersion.App/QuotedStringHelpers.cs b/src/GitVersion.App/QuotedStringHelpers.cs
index 15fcd174d6..4a360a6428 100644
--- a/src/GitVersion.App/QuotedStringHelpers.cs
+++ b/src/GitVersion.App/QuotedStringHelpers.cs
@@ -26,13 +26,13 @@ public static string[] SplitUnquoted(string? input, char splitChar)
return [];
var split = new List();
- bool isPreviousCharBackslash = false;
- bool isInsideQuotes = false;
+ var isPreviousCharBackslash = false;
+ var isInsideQuotes = false;
- int startIndex = 0;
- for (int i = 0; i < input.Length; i++)
+ var startIndex = 0;
+ for (var i = 0; i < input.Length; i++)
{
- char current = input[i];
+ var current = input[i];
switch (current)
{
case '"':
@@ -52,7 +52,7 @@ public static string[] SplitUnquoted(string? input, char splitChar)
split.Add(input[startIndex..]);
- return split.Where(argument => !argument.IsNullOrEmpty()).ToArray();
+ return [.. split.Where(argument => !argument.IsNullOrEmpty())];
}
///
diff --git a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs
index 49c8bf4e6c..b9c46c8da6 100644
--- a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs
+++ b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs
@@ -67,11 +67,9 @@ public override string[] SetOutputVariables(string name, string? value)
public override string? GetCurrentBranch(bool usingDynamicRepos)
{
var pullRequestBranchName = Environment.GetEnvironmentVariable("APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH");
- if (!pullRequestBranchName.IsNullOrWhiteSpace())
- {
- return pullRequestBranchName;
- }
- return Environment.GetEnvironmentVariable("APPVEYOR_REPO_BRANCH");
+ return !pullRequestBranchName.IsNullOrWhiteSpace()
+ ? pullRequestBranchName
+ : this.Environment.GetEnvironmentVariable("APPVEYOR_REPO_BRANCH");
}
public override bool PreventFetch() => false;
diff --git a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs
index ef5763ede1..d372f067b4 100644
--- a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs
+++ b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs
@@ -28,12 +28,7 @@ public override string[] SetOutputVariables(string name, string? value) =>
// https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
// BUILD_SOURCEBRANCH must be used only for "real" branches, not for tags.
// Azure Pipelines sets BUILD_SOURCEBRANCH to refs/tags/ when the pipeline is triggered for a tag.
- if (sourceBranch?.StartsWith("refs/tags", StringComparison.OrdinalIgnoreCase) == true)
- {
- return null;
- }
-
- return sourceBranch;
+ return sourceBranch?.StartsWith("refs/tags", StringComparison.OrdinalIgnoreCase) == true ? null : sourceBranch;
}
public override bool PreventFetch() => true;
@@ -49,16 +44,12 @@ public override string SetBuildNumber(GitVersionVariables variables)
var newBuildNumber = variables.OrderBy(x => x.Key).Aggregate(buildNumberEnv, ReplaceVariables);
// If no variable substitution has happened, use FullSemVer
- if (buildNumberEnv == newBuildNumber)
- {
- var buildNumber = variables.FullSemVer.EndsWith("+0")
- ? variables.FullSemVer[..^2]
- : variables.FullSemVer;
-
- return $"##vso[build.updatebuildnumber]{buildNumber}";
- }
+ if (buildNumberEnv != newBuildNumber) return $"##vso[build.updatebuildnumber]{newBuildNumber}";
+ var buildNumber = variables.FullSemVer.EndsWith("+0")
+ ? variables.FullSemVer[..^2]
+ : variables.FullSemVer;
- return $"##vso[build.updatebuildnumber]{newBuildNumber}";
+ return $"##vso[build.updatebuildnumber]{buildNumber}";
}
private static string ReplaceVariables(string buildNumberEnv, KeyValuePair variable)
diff --git a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs
index 836101e09f..ec79090b94 100644
--- a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs
+++ b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs
@@ -38,16 +38,16 @@ public override void WriteIntegration(Action writer, GitVersionVariable
writer($"Outputting variables to '{this.propertyFile}' for Bash,");
writer($"and to '{this.ps1File}' for Powershell ... ");
writer("To import the file into your build environment, add the following line to your build step:");
- writer($"Bash:");
+ writer("Bash:");
writer($" - source {this.propertyFile}");
- writer($"Powershell:");
+ writer("Powershell:");
writer($" - . .\\{this.ps1File}");
writer("");
writer("To reuse the file across build steps, add the file as a build artifact:");
- writer($"Bash:");
+ writer("Bash:");
writer(" artifacts:");
writer($" - {this.propertyFile}");
- writer($"Powershell:");
+ writer("Powershell:");
writer(" artifacts:");
writer($" - {this.ps1File}");
@@ -67,12 +67,7 @@ public override void WriteIntegration(Action writer, GitVersionVariable
public override string? GetCurrentBranch(bool usingDynamicRepos)
{
var branchName = EvaluateEnvironmentVariable(BranchEnvironmentVariableName);
- if (branchName?.StartsWith("refs/heads/") == true)
- {
- return branchName;
- }
-
- return null;
+ return branchName?.StartsWith("refs/heads/") == true ? branchName : null;
}
private string? EvaluateEnvironmentVariable(string variableName)
diff --git a/src/GitVersion.BuildAgents/Agents/Drone.cs b/src/GitVersion.BuildAgents/Agents/Drone.cs
index d5c46697d5..5895fe791b 100644
--- a/src/GitVersion.BuildAgents/Agents/Drone.cs
+++ b/src/GitVersion.BuildAgents/Agents/Drone.cs
@@ -24,28 +24,19 @@ public override string[] SetOutputVariables(string name, string? value) =>
// https://discourse.drone.io/t/getting-the-branch-a-pull-request-is-created-from/670
// Unfortunately, DRONE_REFSPEC isn't populated, however CI_COMMIT_REFSPEC can be used instead of.
var pullRequestNumber = Environment.GetEnvironmentVariable("DRONE_PULL_REQUEST");
- if (!pullRequestNumber.IsNullOrWhiteSpace())
- {
- // DRONE_SOURCE_BRANCH is available in Drone 1.x.x version
- var sourceBranch = Environment.GetEnvironmentVariable("DRONE_SOURCE_BRANCH");
- if (!sourceBranch.IsNullOrWhiteSpace())
- return sourceBranch;
-
- // In drone lower than 1.x.x source branch can be parsed from CI_COMMIT_REFSPEC
- // CI_COMMIT_REFSPEC - {sourceBranch}:{destinationBranch}
- // https://github.com/drone/drone/issues/2222
- var ciCommitRefSpec = Environment.GetEnvironmentVariable("CI_COMMIT_REFSPEC");
- if (!ciCommitRefSpec.IsNullOrWhiteSpace())
- {
- var colonIndex = ciCommitRefSpec.IndexOf(':');
- if (colonIndex > 0)
- {
- return ciCommitRefSpec.Substring(0, colonIndex);
- }
- }
- }
-
- return Environment.GetEnvironmentVariable("DRONE_BRANCH");
+ if (pullRequestNumber.IsNullOrWhiteSpace()) return this.Environment.GetEnvironmentVariable("DRONE_BRANCH");
+ // DRONE_SOURCE_BRANCH is available in Drone 1.x.x version
+ var sourceBranch = this.Environment.GetEnvironmentVariable("DRONE_SOURCE_BRANCH");
+ if (!sourceBranch.IsNullOrWhiteSpace())
+ return sourceBranch;
+
+ // In drone lower than 1.x.x source branch can be parsed from CI_COMMIT_REFSPEC
+ // CI_COMMIT_REFSPEC - {sourceBranch}:{destinationBranch}
+ // https://github.com/drone/drone/issues/2222
+ var ciCommitRefSpec = this.Environment.GetEnvironmentVariable("CI_COMMIT_REFSPEC");
+ if (ciCommitRefSpec.IsNullOrWhiteSpace()) return this.Environment.GetEnvironmentVariable("DRONE_BRANCH");
+ var colonIndex = ciCommitRefSpec.IndexOf(':');
+ return colonIndex > 0 ? ciCommitRefSpec[..colonIndex] : this.Environment.GetEnvironmentVariable("DRONE_BRANCH");
}
public override bool PreventFetch() => false;
diff --git a/src/GitVersion.BuildAgents/Agents/EnvRun.cs b/src/GitVersion.BuildAgents/Agents/EnvRun.cs
index 45b9e3e075..c74962f92b 100644
--- a/src/GitVersion.BuildAgents/Agents/EnvRun.cs
+++ b/src/GitVersion.BuildAgents/Agents/EnvRun.cs
@@ -7,21 +7,14 @@ namespace GitVersion.Agents;
internal class EnvRun(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem)
{
- public const string EnvironmentVariableName = "ENVRUN_DATABASE";
+ private const string EnvironmentVariableName = "ENVRUN_DATABASE";
protected override string EnvironmentVariable => EnvironmentVariableName;
public override bool CanApplyToCurrentContext()
{
var envRunDatabasePath = Environment.GetEnvironmentVariable(EnvironmentVariableName);
- if (!envRunDatabasePath.IsNullOrEmpty())
- {
- if (!this.FileSystem.File.Exists(envRunDatabasePath))
- {
- this.Log.Error($"The database file of EnvRun.exe was not found at {envRunDatabasePath}.");
- return false;
- }
-
- return true;
- }
+ if (envRunDatabasePath.IsNullOrEmpty()) return false;
+ if (this.FileSystem.File.Exists(envRunDatabasePath)) return true;
+ this.Log.Error($"The database file of EnvRun.exe was not found at {envRunDatabasePath}.");
return false;
}
diff --git a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs
index 572590de54..90308f1e5e 100644
--- a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs
+++ b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs
@@ -22,18 +22,14 @@ public override string[] SetOutputVariables(string name, string? value) =>
$"GitVersion_{name}={value}"
];
- public override string? GetCurrentBranch(bool usingDynamicRepos)
- {
- // CI_COMMIT_REF_NAME can contain either the branch or the tag
- // See https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
-
- // CI_COMMIT_TAG is only available in tag pipelines,
- // so we can exit if CI_COMMIT_REF_NAME would return the tag
- if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("CI_COMMIT_TAG")))
- return null;
-
- return Environment.GetEnvironmentVariable("CI_COMMIT_REF_NAME");
- }
+ // CI_COMMIT_REF_NAME can contain either the branch or the tag
+ // See https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
+ // CI_COMMIT_TAG is only available in tag pipelines,
+ // so we can exit if CI_COMMIT_REF_NAME would return the tag
+ public override string? GetCurrentBranch(bool usingDynamicRepos) =>
+ string.IsNullOrEmpty(this.Environment.GetEnvironmentVariable("CI_COMMIT_TAG"))
+ ? this.Environment.GetEnvironmentVariable("CI_COMMIT_REF_NAME")
+ : null;
public override bool PreventFetch() => true;
diff --git a/src/GitVersion.BuildAgents/Agents/MyGet.cs b/src/GitVersion.BuildAgents/Agents/MyGet.cs
index a8eb3fd32e..dad7d7feb7 100644
--- a/src/GitVersion.BuildAgents/Agents/MyGet.cs
+++ b/src/GitVersion.BuildAgents/Agents/MyGet.cs
@@ -28,7 +28,7 @@ public override string[] SetOutputVariables(string name, string? value)
return [.. messages];
}
- public override string? SetBuildNumber(GitVersionVariables variables) =>
+ public override string SetBuildNumber(GitVersionVariables variables) =>
$"##myget[buildNumber '{ServiceMessageEscapeHelper.EscapeValue(variables.FullSemVer)}']";
public override bool PreventFetch() => false;
diff --git a/src/GitVersion.BuildAgents/Agents/TeamCity.cs b/src/GitVersion.BuildAgents/Agents/TeamCity.cs
index 6cb5aa92fb..cae3ca8ab3 100644
--- a/src/GitVersion.BuildAgents/Agents/TeamCity.cs
+++ b/src/GitVersion.BuildAgents/Agents/TeamCity.cs
@@ -16,23 +16,21 @@ internal class TeamCity(IEnvironment environment, ILog log, IFileSystem fileSyst
{
var branchName = Environment.GetEnvironmentVariable("Git_Branch");
- if (branchName.IsNullOrEmpty())
+ if (!branchName.IsNullOrEmpty()) return branchName;
+ if (!usingDynamicRepos)
{
- if (!usingDynamicRepos)
- {
- WriteBranchEnvVariableWarning();
- }
-
- return base.GetCurrentBranch(usingDynamicRepos);
+ WriteBranchEnvVariableWarning();
}
- return branchName;
+ return base.GetCurrentBranch(usingDynamicRepos);
}
- private void WriteBranchEnvVariableWarning() => this.Log.Warning(@"TeamCity doesn't make the current branch available through environmental variables.
-Depending on your authentication and transport setup of your git VCS root things may work. In that case, ignore this warning.
-In your TeamCity build configuration, add a parameter called `env.Git_Branch` with value %teamcity.build.vcs.branch.%
-See https://gitversion.net/docs/reference/build-servers/teamcity for more info");
+ private void WriteBranchEnvVariableWarning() => this.Log.Warning("""
+ TeamCity doesn't make the current branch available through environmental variables.
+ Depending on your authentication and transport setup of your git VCS root things may work. In that case, ignore this warning.
+ In your TeamCity build configuration, add a parameter called `env.Git_Branch` with value %teamcity.build.vcs.branch.%
+ See https://gitversion.net/docs/reference/build-servers/teamcity for more info
+ """);
public override bool PreventFetch() => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("Git_Branch"));
diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs
index 084ce06795..3035b49a8b 100644
--- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs
+++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs
@@ -157,7 +157,7 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame_WithDifferentCasing()
public void ReturnConfigurationFilePathIfCustomConfigurationIsSet()
{
this.workingPath = this.repoPath;
- string configurationFilePath = FileSystemHelper.Path.Combine(this.workingPath, "Configuration", "CustomConfig.yaml");
+ var configurationFilePath = FileSystemHelper.Path.Combine(this.workingPath, "Configuration", "CustomConfig.yaml");
this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = configurationFilePath } };
@@ -208,7 +208,6 @@ public void DoNotThrowWhenConfigFileIsInSubDirectoryOfRepoPath()
public void NoWarnOnCustomYmlFile()
{
var stringLogger = string.Empty;
- void Action(string info) => stringLogger = info;
var logAppender = new TestLogAppender(Action);
var log = new Log(logAppender);
@@ -223,13 +222,15 @@ public void NoWarnOnCustomYmlFile()
configurationProvider.ProvideForDirectory(this.repoPath);
stringLogger.ShouldMatch("No configuration file found, using default configuration");
+ return;
+
+ void Action(string info) => stringLogger = info;
}
[Test]
public void NoWarnOnCustomYmlFileOutsideRepoPath()
{
var stringLogger = string.Empty;
- void Action(string info) => stringLogger = info;
var logAppender = new TestLogAppender(Action);
var log = new Log(logAppender);
@@ -238,13 +239,16 @@ public void NoWarnOnCustomYmlFileOutsideRepoPath()
this.configFileLocator = sp.GetRequiredService();
this.fileSystem = sp.GetRequiredService();
- string path = FileSystemHelper.Path.Combine(FileSystemHelper.Path.GetTempPath(), "unrelatedPath");
+ var path = FileSystemHelper.Path.Combine(FileSystemHelper.Path.GetTempPath(), "unrelatedPath");
using var _ = this.fileSystem.SetupConfigFile(path: path, fileName: ConfigFile);
var configurationProvider = (ConfigurationProvider)sp.GetRequiredService();
configurationProvider.ProvideForDirectory(this.repoPath);
stringLogger.ShouldMatch("No configuration file found, using default configuration");
+ return;
+
+ void Action(string info) => stringLogger = info;
}
[Test]
diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs
index 6dfe2f3760..390aca6cbb 100644
--- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs
+++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs
@@ -34,13 +34,14 @@ public void Setup()
public void OverwritesDefaultsWithProvidedConfig()
{
var defaultConfiguration = this.configurationProvider.ProvideForDirectory(this.repoPath);
- const string text = @"
-next-version: 2.0.0
-branches:
- develop:
- increment: Major
- mode: ContinuousDelivery
- label: dev";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ develop:
+ increment: Major
+ mode: ContinuousDelivery
+ label: dev
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -72,11 +73,13 @@ public void CombineVersionStrategyConfigNextAndTaggedCommit()
[Test]
public void CanRemoveLabel()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- release:
- label: """"";
+ const string text =
+ """
+ next-version: 2.0.0
+ branches:
+ release:
+ label: ""
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -87,11 +90,12 @@ public void CanRemoveLabel()
[Test]
public void RegexIsRequired()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- bug:
- label: bugfix";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ bug:
+ label: bugfix
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var ex = Should.Throw(() => this.configurationProvider.ProvideForDirectory(this.repoPath));
ex.Message.ShouldBe($"Branch configuration 'bug' is missing required configuration 'regex'{FileSystemHelper.Path.NewLine}" +
@@ -101,12 +105,13 @@ public void RegexIsRequired()
[Test(Description = "This test proves the configuration validation will fail early with a helpful message when a branch listed in source-branches has no configuration.")]
public void SourceBranchesValidationShouldFailWhenMatchingBranchConfigurationIsMissing()
{
- const string text = @"
-branches:
- bug:
- regex: 'bug[\/-]'
- label: bugfix
- source-branches: [notconfigured]";
+ const string text = """
+ branches:
+ bug:
+ regex: 'bug[\/-]'
+ label: bugfix
+ source-branches: [notconfigured]
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var ex = Should.Throw(() => this.configurationProvider.ProvideForDirectory(this.repoPath));
ex.Message.ShouldBe($"Branch configuration 'bug' defines these 'source-branches' that are not configured: '[notconfigured]'{FileSystemHelper.Path.NewLine}" +
@@ -118,12 +123,13 @@ public void SourceBranchesValidationShouldFailWhenMatchingBranchConfigurationIsM
[TestCase(ConfigurationConstants.DevelopBranchKey)]
public void SourceBranchesValidationShouldSucceedForWellKnownBranches(string wellKnownBranchKey)
{
- var text = $@"
-branches:
- bug:
- regex: 'bug[\/-]'
- label: bugfix
- source-branches: [{wellKnownBranchKey}]";
+ var text = $"""
+ branches:
+ bug:
+ regex: 'bug[\/-]'
+ label: bugfix
+ source-branches: [{wellKnownBranchKey}]
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -133,13 +139,14 @@ public void SourceBranchesValidationShouldSucceedForWellKnownBranches(string wel
[Test]
public void CanProvideConfigForNewBranch()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- bug:
- regex: 'bug[\/-]'
- label: bugfix
- source-branches: []";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ bug:
+ regex: 'bug[\/-]'
+ label: bugfix
+ source-branches: []
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -189,10 +196,11 @@ public void CanWriteOutEffectiveConfiguration()
[Test]
public void CanUpdateAssemblyInformationalVersioningScheme()
{
- const string text = @"
-assembly-versioning-scheme: MajorMinor
-assembly-file-versioning-scheme: MajorMinorPatch
-assembly-informational-format: '{NugetVersion}'";
+ const string text = """
+ assembly-versioning-scheme: MajorMinor
+ assembly-file-versioning-scheme: MajorMinorPatch
+ assembly-informational-format: '{NugetVersion}'
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
@@ -205,10 +213,11 @@ public void CanUpdateAssemblyInformationalVersioningScheme()
[Test]
public void CanUpdateAssemblyInformationalVersioningSchemeWithMultipleVariables()
{
- const string text = @"
-assembly-versioning-scheme: MajorMinor
-assembly-file-versioning-scheme: MajorMinorPatch
-assembly-informational-format: '{Major}.{Minor}.{Patch}'";
+ const string text = """
+ assembly-versioning-scheme: MajorMinor
+ assembly-file-versioning-scheme: MajorMinorPatch
+ assembly-informational-format: '{Major}.{Minor}.{Patch}'
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
@@ -221,12 +230,14 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithMultipleVariables(
[Test]
public void CanUpdateAssemblyInformationalVersioningSchemeWithFullSemVer()
{
- const string text = @"assembly-versioning-scheme: MajorMinorPatch
-assembly-file-versioning-scheme: MajorMinorPatch
-assembly-informational-format: '{FullSemVer}'
-mode: ContinuousDelivery
-next-version: 5.3.0
-branches: {}";
+ const string text = """
+ assembly-versioning-scheme: MajorMinorPatch
+ assembly-file-versioning-scheme: MajorMinorPatch
+ assembly-informational-format: '{FullSemVer}'
+ mode: ContinuousDelivery
+ next-version: 5.3.0
+ branches: {}
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
@@ -271,7 +282,6 @@ public void NoWarnOnGitVersionYmlFile()
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var stringLogger = string.Empty;
- void Action(string info) => stringLogger = info;
var logAppender = new TestLogAppender(Action);
var log = new Log(logAppender);
@@ -288,18 +298,22 @@ public void NoWarnOnGitVersionYmlFile()
var filePath = FileSystemHelper.Path.Combine(this.repoPath, ConfigurationFileLocator.DefaultFileName);
stringLogger.ShouldContain($"Using configuration file '{filePath}'");
+ return;
+
+ void Action(string info) => stringLogger = info;
}
[Test]
public void ShouldUseSpecifiedSourceBranchesForDevelop()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- develop:
- mode: ContinuousDeployment
- source-branches: ['develop']
- label: dev";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ develop:
+ mode: ContinuousDeployment
+ source-branches: ['develop']
+ label: dev
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -309,12 +323,13 @@ public void ShouldUseSpecifiedSourceBranchesForDevelop()
[Test]
public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForDevelop()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- develop:
- mode: ContinuousDeployment
- label: dev";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ develop:
+ mode: ContinuousDeployment
+ label: dev
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -324,13 +339,14 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForDevelop()
[Test]
public void ShouldUseSpecifiedSourceBranchesForFeature()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- feature:
- mode: ContinuousDeployment
- source-branches: ['develop', 'release']
- label: dev";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ feature:
+ mode: ContinuousDeployment
+ source-branches: ['develop', 'release']
+ label: dev
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -340,12 +356,13 @@ public void ShouldUseSpecifiedSourceBranchesForFeature()
[Test]
public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForFeature()
{
- const string text = @"
-next-version: 2.0.0
-branches:
- feature:
- mode: ContinuousDeployment
- label: dev";
+ const string text = """
+ next-version: 2.0.0
+ branches:
+ feature:
+ mode: ContinuousDeployment
+ label: dev
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);
@@ -356,9 +373,10 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForFeature()
[Test]
public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty()
{
- const string text = @"
-next-version: 1.2.3
-tag-prefix: custom-tag-prefix-from-yml";
+ const string text = """
+ next-version: 1.2.3
+ tag-prefix: custom-tag-prefix-from-yml
+ """;
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var expectedConfig = GitFlowConfigurationBuilder.New
diff --git a/src/GitVersion.Configuration/BranchConfiguration.cs b/src/GitVersion.Configuration/BranchConfiguration.cs
index 06317c999a..699f67fcd5 100644
--- a/src/GitVersion.Configuration/BranchConfiguration.cs
+++ b/src/GitVersion.Configuration/BranchConfiguration.cs
@@ -8,72 +8,72 @@ internal record BranchConfiguration : IBranchConfiguration
{
[JsonPropertyName("mode")]
[JsonPropertyDescription("The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.")]
- public DeploymentMode? DeploymentMode { get; internal set; }
+ public DeploymentMode? DeploymentMode { get; internal init; }
[JsonPropertyName("label")]
[JsonPropertyDescription("The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).")]
- public string? Label { get; internal set; }
+ public string? Label { get; internal init; }
[JsonPropertyName("increment")]
[JsonPropertyDescription("The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.")]
- public IncrementStrategy Increment { get; internal set; }
+ public IncrementStrategy Increment { get; internal init; }
[JsonIgnore]
IPreventIncrementConfiguration IBranchConfiguration.PreventIncrement => PreventIncrement;
[JsonPropertyName("prevent-increment")]
[JsonPropertyDescription("The prevent increment configuration section.")]
- public PreventIncrementConfiguration PreventIncrement { get; internal set; } = new();
+ public PreventIncrementConfiguration PreventIncrement { get; internal init; } = new();
[JsonPropertyName("track-merge-target")]
[JsonPropertyDescription("Strategy which will look for tagged merge commits directly off the current branch.")]
- public bool? TrackMergeTarget { get; internal set; }
+ public bool? TrackMergeTarget { get; internal init; }
[JsonPropertyName("track-merge-message")]
[JsonPropertyDescription("This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.")]
- public bool? TrackMergeMessage { get; internal set; }
+ public bool? TrackMergeMessage { get; internal init; }
[JsonPropertyName("commit-message-incrementing")]
[JsonPropertyDescription("Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.")]
- public CommitMessageIncrementMode? CommitMessageIncrementing { get; internal set; }
+ public CommitMessageIncrementMode? CommitMessageIncrementing { get; internal init; }
[JsonPropertyName("regex")]
[JsonPropertyDescription("The regular expression pattern to use to match this branch.")]
[JsonPropertyFormat(Format.Regex)]
- public string? RegularExpression { get; internal set; }
+ public string? RegularExpression { get; internal init; }
[JsonIgnore]
string? IBranchConfiguration.RegularExpression => RegularExpression;
[JsonPropertyName("source-branches")]
[JsonPropertyDescription("The source branches for this branch.")]
- public HashSet SourceBranches { get; internal set; } = [];
+ public HashSet SourceBranches { get; internal init; } = [];
[JsonIgnore]
IReadOnlyCollection IBranchConfiguration.SourceBranches => SourceBranches;
[JsonPropertyName("is-source-branch-for")]
[JsonPropertyDescription("The branches that this branch is a source branch.")]
- public HashSet IsSourceBranchFor { get; internal set; } = [];
+ public HashSet IsSourceBranchFor { get; internal init; } = [];
[JsonIgnore]
IReadOnlyCollection IBranchConfiguration.IsSourceBranchFor => IsSourceBranchFor;
[JsonPropertyName("tracks-release-branches")]
[JsonPropertyDescription("Indicates this branch configuration represents develop in GitFlow.")]
- public bool? TracksReleaseBranches { get; internal set; }
+ public bool? TracksReleaseBranches { get; internal init; }
[JsonPropertyName("is-release-branch")]
[JsonPropertyDescription("Indicates this branch configuration represents a release branch in GitFlow.")]
- public bool? IsReleaseBranch { get; internal set; }
+ public bool? IsReleaseBranch { get; internal init; }
[JsonPropertyName("is-main-branch")]
[JsonPropertyDescription("When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.")]
- public bool? IsMainBranch { get; internal set; }
+ public bool? IsMainBranch { get; internal init; }
[JsonPropertyName("pre-release-weight")]
[JsonPropertyDescription("Provides a way to translate the PreReleaseLabel to a number.")]
- public int? PreReleaseWeight { get; internal set; }
+ public int? PreReleaseWeight { get; internal init; }
public virtual IBranchConfiguration Inherit(IBranchConfiguration configuration)
{
diff --git a/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs
index 18c40f8b81..d158110b9f 100644
--- a/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs
+++ b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs
@@ -89,7 +89,7 @@ public virtual BranchConfigurationBuilder WithRegularExpression(string? value)
public virtual BranchConfigurationBuilder WithSourceBranches(IEnumerable values)
{
- WithSourceBranches(values.ToArray());
+ WithSourceBranches([.. values]);
return this;
}
@@ -101,7 +101,7 @@ public virtual BranchConfigurationBuilder WithSourceBranches(params string[] val
public virtual BranchConfigurationBuilder WithIsSourceBranchFor(IEnumerable values)
{
- WithIsSourceBranchFor(values.ToArray());
+ WithIsSourceBranchFor([.. values]);
return this;
}
diff --git a/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs
index afd8bfa04d..95785bc048 100644
--- a/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs
+++ b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs
@@ -100,232 +100,230 @@ protected ConfigurationBuilderBase()
}
}
- public virtual TConfigurationBuilder WithAssemblyVersioningScheme(AssemblyVersioningScheme? value)
+ public TConfigurationBuilder WithAssemblyVersioningScheme(AssemblyVersioningScheme? value)
{
this.assemblyVersioningScheme = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithAssemblyFileVersioningScheme(AssemblyFileVersioningScheme? value)
+ public TConfigurationBuilder WithAssemblyFileVersioningScheme(AssemblyFileVersioningScheme? value)
{
this.assemblyFileVersioningScheme = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithAssemblyInformationalFormat(string? value)
+ public TConfigurationBuilder WithAssemblyInformationalFormat(string? value)
{
this.assemblyInformationalFormat = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithAssemblyVersioningFormat(string? value)
+ public TConfigurationBuilder WithAssemblyVersioningFormat(string? value)
{
this.assemblyVersioningFormat = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithAssemblyFileVersioningFormat(string? value)
+ public TConfigurationBuilder WithAssemblyFileVersioningFormat(string? value)
{
this.assemblyFileVersioningFormat = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithTagPrefixPattern(string? value)
+ public TConfigurationBuilder WithTagPrefixPattern(string? value)
{
this.tagPrefix = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithVersionInBranchPattern(string? value)
+ public TConfigurationBuilder WithVersionInBranchPattern(string? value)
{
this.versionInBranchPattern = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithNextVersion(string? value)
+ public TConfigurationBuilder WithNextVersion(string? value)
{
this.nextVersion = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithMajorVersionBumpMessage(string? value)
+ public TConfigurationBuilder WithMajorVersionBumpMessage(string? value)
{
this.majorVersionBumpMessage = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithMinorVersionBumpMessage(string? value)
+ public TConfigurationBuilder WithMinorVersionBumpMessage(string? value)
{
this.minorVersionBumpMessage = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithPatchVersionBumpMessage(string? value)
+ public TConfigurationBuilder WithPatchVersionBumpMessage(string? value)
{
this.patchVersionBumpMessage = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithNoBumpMessage(string? value)
+ public TConfigurationBuilder WithNoBumpMessage(string? value)
{
this.noBumpMessage = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithTagPreReleaseWeight(int? value)
+ public TConfigurationBuilder WithTagPreReleaseWeight(int? value)
{
this.tagPreReleaseWeight = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithIgnoreConfiguration(IIgnoreConfiguration value)
+ public TConfigurationBuilder WithIgnoreConfiguration(IIgnoreConfiguration value)
{
this.ignore = (IgnoreConfiguration)value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithCommitDateFormat(string? value)
+ public TConfigurationBuilder WithCommitDateFormat(string? value)
{
this.commitDateFormat = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithUpdateBuildNumber(bool value)
+ public TConfigurationBuilder WithUpdateBuildNumber(bool value)
{
this.updateBuildNumber = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithSemanticVersionFormat(SemanticVersionFormat value)
+ public TConfigurationBuilder WithSemanticVersionFormat(SemanticVersionFormat value)
{
this.semanticVersionFormat = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithVersionStrategy(VersionStrategies value)
+ public TConfigurationBuilder WithVersionStrategy(VersionStrategies value)
{
- this.versionStrategies = Enum.GetValues()
- .Where(element => element != VersionStrategies.None && value.HasFlag(element))
- .ToArray();
+ this.versionStrategies = [.. Enum.GetValues().Where(element => element != VersionStrategies.None && value.HasFlag(element))];
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithVersionStrategies(params VersionStrategies[] values)
+ public TConfigurationBuilder WithVersionStrategies(params VersionStrategies[] values)
{
this.versionStrategies = values;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithMergeMessageFormats(IReadOnlyDictionary value)
+ public TConfigurationBuilder WithMergeMessageFormats(IReadOnlyDictionary value)
{
this.mergeMessageFormats = new(value);
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithoutBranches()
+ public TConfigurationBuilder WithoutBranches()
{
this.branchConfigurationBuilders.Clear();
return (TConfigurationBuilder)this;
}
- public virtual BranchConfigurationBuilder WithBranch(string value)
+ public BranchConfigurationBuilder WithBranch(string value)
=> this.branchConfigurationBuilders.GetOrAdd(value, () => BranchConfigurationBuilder.New);
- public virtual BranchConfigurationBuilder WithBranch(string value, BranchConfigurationBuilder builder)
+ public BranchConfigurationBuilder WithBranch(string value, BranchConfigurationBuilder builder)
=> this.branchConfigurationBuilders.GetOrAdd(value, () => builder);
- public virtual TConfigurationBuilder WithBranch(string value, Action action)
+ public TConfigurationBuilder WithBranch(string value, Action action)
{
var result = this.branchConfigurationBuilders.GetOrAdd(value, () => BranchConfigurationBuilder.New);
action(result);
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithDeploymentMode(DeploymentMode? value)
+ public TConfigurationBuilder WithDeploymentMode(DeploymentMode? value)
{
this.versioningMode = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithLabel(string? value)
+ public TConfigurationBuilder WithLabel(string? value)
{
this.label = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithIncrement(IncrementStrategy value)
+ public TConfigurationBuilder WithIncrement(IncrementStrategy value)
{
this.increment = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithPreventIncrementOfMergedBranch(bool? value)
+ public TConfigurationBuilder WithPreventIncrementOfMergedBranch(bool? value)
{
this.preventIncrementOfMergedBranch = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithPreventIncrementWhenBranchMerged(bool? value)
+ public TConfigurationBuilder WithPreventIncrementWhenBranchMerged(bool? value)
{
this.preventIncrementWhenBranchMerged = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithPreventIncrementWhenCurrentCommitTagged(bool? value)
+ public TConfigurationBuilder WithPreventIncrementWhenCurrentCommitTagged(bool? value)
{
this.preventIncrementWhenCurrentCommitTagged = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithTrackMergeTarget(bool? value)
+ public TConfigurationBuilder WithTrackMergeTarget(bool? value)
{
this.trackMergeTarget = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithTrackMergeMessage(bool? value)
+ public TConfigurationBuilder WithTrackMergeMessage(bool? value)
{
this.trackMergeMessage = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithCommitMessageIncrementing(CommitMessageIncrementMode? value)
+ public TConfigurationBuilder WithCommitMessageIncrementing(CommitMessageIncrementMode? value)
{
this.commitMessageIncrementing = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithRegularExpression(string? value)
+ public TConfigurationBuilder WithRegularExpression(string? value)
{
this.regularExpression = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithTracksReleaseBranches(bool? value)
+ public TConfigurationBuilder WithTracksReleaseBranches(bool? value)
{
this.tracksReleaseBranches = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithIsReleaseBranch(bool? value)
+ public TConfigurationBuilder WithIsReleaseBranch(bool? value)
{
this.isReleaseBranch = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithIsMainBranch(bool? value)
+ public TConfigurationBuilder WithIsMainBranch(bool? value)
{
this.isMainBranch = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithPreReleaseWeight(int? value)
+ public TConfigurationBuilder WithPreReleaseWeight(int? value)
{
this.preReleaseWeight = value;
return (TConfigurationBuilder)this;
}
- public virtual TConfigurationBuilder WithConfiguration(IGitVersionConfiguration value)
+ public TConfigurationBuilder WithConfiguration(IGitVersionConfiguration value)
{
WithAssemblyVersioningScheme(value.AssemblyVersioningScheme);
WithAssemblyFileVersioningScheme(value.AssemblyFileVersioningScheme);
@@ -419,7 +417,7 @@ public virtual IGitVersionConfiguration Build()
{
OfMergedBranch = this.preventIncrementOfMergedBranch,
WhenBranchMerged = this.preventIncrementWhenBranchMerged,
- WhenCurrentCommitTagged = this.preventIncrementWhenCurrentCommitTagged,
+ WhenCurrentCommitTagged = this.preventIncrementWhenCurrentCommitTagged
},
PreReleaseWeight = this.preReleaseWeight
};
diff --git a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs
index 09fe1afb72..08398c0c58 100644
--- a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs
+++ b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs
@@ -87,7 +87,7 @@ private GitFlowConfigurationBuilder()
SourceBranches =
[
this.MainBranch.Name,
- this.SupportBranch.Name,
+ this.SupportBranch.Name
],
Label = "beta",
PreventIncrement = new PreventIncrementConfiguration
@@ -161,7 +161,7 @@ private GitFlowConfigurationBuilder()
SourceBranches =
[
this.MainBranch.Name,
- this.SupportBranch.Name,
+ this.SupportBranch.Name
],
Label = "beta",
IsReleaseBranch = true,
@@ -206,7 +206,7 @@ private GitFlowConfigurationBuilder()
{
WhenCurrentCommitTagged = true
},
- IsMainBranch = false,
+ IsMainBranch = false
});
}
}
diff --git a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs
index b672ae3824..43fb64df46 100644
--- a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs
+++ b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs
@@ -117,7 +117,7 @@ private TrunkBasedConfigurationBuilder()
[
this.MainBranch.Name,
this.FeatureBranch.Name,
- this.HotfixBranch.Name,
+ this.HotfixBranch.Name
],
TrackMergeMessage = true,
PreReleaseWeight = 30000
diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs
index 2f5eccf0f9..489c39e1f1 100644
--- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs
+++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs
@@ -40,7 +40,7 @@ public void Verify(string? workingDirectory, string? projectRootDirectory)
public string? GetConfigurationFile(string? directoryPath)
{
- string? customConfigurationFile = GetCustomConfigurationFilePathIfEligable(directoryPath);
+ var customConfigurationFile = GetCustomConfigurationFilePathIfEligable(directoryPath);
if (!string.IsNullOrWhiteSpace(customConfigurationFile))
{
this.log.Info($"Found configuration file at '{customConfigurationFile}'");
@@ -52,16 +52,14 @@ public void Verify(string? workingDirectory, string? projectRootDirectory)
return null;
}
- string[] files = fileSystem.Directory.GetFiles(directoryPath);
+ var files = fileSystem.Directory.GetFiles(directoryPath);
foreach (var fileName in this.SupportedConfigFileNames)
{
this.log.Debug($"Trying to find configuration file {fileName} at '{directoryPath}'");
- string? matchingFile = files.FirstOrDefault(file => string.Equals(FileSystemHelper.Path.GetFileName(file), fileName, StringComparison.OrdinalIgnoreCase));
- if (matchingFile != null)
- {
- this.log.Info($"Found configuration file at '{matchingFile}'");
- return matchingFile;
- }
+ var matchingFile = files.FirstOrDefault(file => string.Equals(FileSystemHelper.Path.GetFileName(file), fileName, StringComparison.OrdinalIgnoreCase));
+ if (matchingFile == null) continue;
+ this.log.Info($"Found configuration file at '{matchingFile}'");
+ return matchingFile;
}
return null;
@@ -69,21 +67,14 @@ public void Verify(string? workingDirectory, string? projectRootDirectory)
private string? GetCustomConfigurationFilePathIfEligable(string? directoryPath)
{
- if (!string.IsNullOrWhiteSpace(this.ConfigurationFile))
+ if (string.IsNullOrWhiteSpace(this.ConfigurationFile)) return null;
+ var configurationFilePath = this.ConfigurationFile;
+ if (!string.IsNullOrWhiteSpace(directoryPath))
{
- string configurationFilePath = this.ConfigurationFile;
- if (!string.IsNullOrWhiteSpace(directoryPath))
- {
- configurationFilePath = FileSystemHelper.Path.Combine(directoryPath, this.ConfigurationFile);
- }
-
- if (fileSystem.File.Exists(configurationFilePath))
- {
- return configurationFilePath;
- }
+ configurationFilePath = FileSystemHelper.Path.Combine(directoryPath, this.ConfigurationFile);
}
- return null;
+ return this.fileSystem.File.Exists(configurationFilePath) ? configurationFilePath : null;
}
private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, string? projectRootDirectory)
diff --git a/src/GitVersion.Configuration/ConfigurationHelper.cs b/src/GitVersion.Configuration/ConfigurationHelper.cs
index 66e2bd5bea..0410558782 100644
--- a/src/GitVersion.Configuration/ConfigurationHelper.cs
+++ b/src/GitVersion.Configuration/ConfigurationHelper.cs
@@ -14,11 +14,9 @@ internal class ConfigurationHelper
{
get
{
- if (this.dictionary == null)
- {
- this.yaml ??= Serializer.Serialize(this.configuration!);
- this.dictionary = Serializer.Deserialize>(this.yaml);
- }
+ if (this.dictionary != null) return this.dictionary;
+ this.yaml ??= Serializer.Serialize(this.configuration!);
+ this.dictionary = Serializer.Deserialize>(this.yaml);
return this.dictionary;
}
}
@@ -37,53 +35,63 @@ public void Override(IReadOnlyDictionary value)
{
value.NotNull();
- if (value.Any())
- {
- var map = Dictionary.ToDictionary(element => element.Key, element => element.Value);
- Merge(map, value);
- this.dictionary = map;
- this.yaml = null;
- this.configuration = null;
- }
+ if (!value.Any()) return;
+ var map = Dictionary.ToDictionary(element => element.Key, element => element.Value);
+ Merge(map, value);
+ this.dictionary = map;
+ this.yaml = null;
+ this.configuration = null;
}
private static void Merge(IDictionary dictionary, IReadOnlyDictionary anotherDictionary)
{
foreach (var item in dictionary)
{
- if (item.Value is IDictionary anotherDictionaryValue)
- {
- if (anotherDictionary.TryGetValue(item.Key, out var value) && value is IReadOnlyDictionary dictionaryValue)
- {
- Merge(anotherDictionaryValue, dictionaryValue);
- }
- }
- else if (item.Value is null or string or IList)
+ switch (item.Value)
{
- if (anotherDictionary.TryGetValue(item.Key, out var value))
- {
- dictionary[item.Key] = value;
- }
+ case IDictionary anotherDictionaryValue:
+ {
+ if (anotherDictionary.TryGetValue(item.Key, out var value) && value is IReadOnlyDictionary dictionaryValue)
+ {
+ Merge(anotherDictionaryValue, dictionaryValue);
+ }
+
+ break;
+ }
+ case null or string or IList:
+ {
+ if (anotherDictionary.TryGetValue(item.Key, out var value))
+ {
+ dictionary[item.Key] = value;
+ }
+
+ break;
+ }
}
}
foreach (var item in anotherDictionary)
{
- if (item.Value is IReadOnlyDictionary dictionaryValue)
+ switch (item.Value)
{
- if (!dictionary.ContainsKey(item.Key))
- {
- Dictionary anotherDictionaryValue = [];
- Merge(anotherDictionaryValue, dictionaryValue);
- dictionary.Add(item.Key, anotherDictionaryValue);
- }
- }
- else if (item.Value is null or string or IList)
- {
- if (!dictionary.ContainsKey(item.Key))
- {
- dictionary.Add(item.Key, item.Value);
- }
+ case IReadOnlyDictionary when dictionary.ContainsKey(item.Key):
+ continue;
+ case IReadOnlyDictionary dictionaryValue:
+ {
+ Dictionary anotherDictionaryValue = [];
+ Merge(anotherDictionaryValue, dictionaryValue);
+ dictionary.Add(item.Key, anotherDictionaryValue);
+ break;
+ }
+ case null or string or IList:
+ {
+ if (!dictionary.ContainsKey(item.Key))
+ {
+ dictionary.Add(item.Key, item.Value);
+ }
+
+ break;
+ }
}
}
}
diff --git a/src/GitVersion.Configuration/ConfigurationProvider.cs b/src/GitVersion.Configuration/ConfigurationProvider.cs
index e201f36b55..644e1656cc 100644
--- a/src/GitVersion.Configuration/ConfigurationProvider.cs
+++ b/src/GitVersion.Configuration/ConfigurationProvider.cs
@@ -73,7 +73,7 @@ private IGitVersionConfiguration ProvideConfiguration(string? configFile,
}
}
- private IReadOnlyDictionary? ReadOverrideConfiguration(string? configFilePath)
+ private Dictionary? ReadOverrideConfiguration(string? configFilePath)
{
if (configFilePath == null)
{
@@ -97,7 +97,7 @@ private IGitVersionConfiguration ProvideConfiguration(string? configFile,
string? workflow = null;
foreach (var item in new[] { overrideConfigurationFromFile, overrideConfiguration })
{
- if (item?.TryGetValue("workflow", out object? value) == true && value != null)
+ if (item?.TryGetValue("workflow", out var value) == true && value != null)
{
workflow = (string)value;
}
diff --git a/src/GitVersion.Configuration/ConfigurationSerializer.cs b/src/GitVersion.Configuration/ConfigurationSerializer.cs
index 9d66d0012c..5517252772 100644
--- a/src/GitVersion.Configuration/ConfigurationSerializer.cs
+++ b/src/GitVersion.Configuration/ConfigurationSerializer.cs
@@ -30,16 +30,16 @@ private sealed class JsonPropertyNameInspector(ITypeInspector innerTypeDescripto
public override IEnumerable GetProperties(Type type, object? container) =>
innerTypeDescriptor.GetProperties(type, container)
.Where(p => p.GetCustomAttribute() == null)
- .Select(p =>
+ .Select(IPropertyDescriptor (p) =>
{
var descriptor = new PropertyDescriptor(p);
var member = p.GetCustomAttribute();
- if (member is { Name: not null })
+ if (member is not null)
{
descriptor.Name = member.Name;
}
- return (IPropertyDescriptor)descriptor;
+ return descriptor;
})
.OrderBy(p => p.Order);
}
diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs
index 0a8c23e4d3..da01a143a3 100644
--- a/src/GitVersion.Configuration/GitVersionConfiguration.cs
+++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs
@@ -10,49 +10,49 @@ internal sealed record GitVersionConfiguration : BranchConfiguration, IGitVersio
{
[JsonPropertyName("workflow")]
[JsonPropertyDescription("The base template of the configuration to use. Possible values are: 'GitFlow/v1' or 'GitHubFlow/v1'")]
- public string? Workflow { get; internal set; }
+ public string? Workflow { get; internal init; }
[JsonPropertyName("assembly-versioning-scheme")]
[JsonPropertyDescription($"The scheme to use when setting AssemblyVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to '{NameOfDefaultAssemblyVersioningScheme}'.")]
[JsonPropertyDefault(DefaultAssemblyVersioningScheme)]
- public AssemblyVersioningScheme? AssemblyVersioningScheme { get; internal set; }
+ public AssemblyVersioningScheme? AssemblyVersioningScheme { get; internal init; }
[JsonPropertyName("assembly-file-versioning-scheme")]
[JsonPropertyDescription($"The scheme to use when setting AssemblyFileVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to '{NameOfDefaultAssemblyFileVersioningScheme}'.")]
[JsonPropertyDefault(DefaultAssemblyFileVersioningScheme)]
- public AssemblyFileVersioningScheme? AssemblyFileVersioningScheme { get; internal set; }
+ public AssemblyFileVersioningScheme? AssemblyFileVersioningScheme { get; internal init; }
[JsonPropertyName("assembly-informational-format")]
[JsonPropertyDescription($"Specifies the format of AssemblyInformationalVersion. Defaults to '{DefaultAssemblyInformationalFormat}'.")]
[JsonPropertyDefault($"'{DefaultAssemblyInformationalFormat}'")]
- public string? AssemblyInformationalFormat { get; internal set; }
+ public string? AssemblyInformationalFormat { get; internal init; }
[JsonPropertyName("assembly-versioning-format")]
[JsonPropertyDescription("Specifies the format of AssemblyVersion and overwrites the value of assembly-versioning-scheme.")]
- public string? AssemblyVersioningFormat { get; internal set; }
+ public string? AssemblyVersioningFormat { get; internal init; }
[JsonPropertyName("assembly-file-versioning-format")]
[JsonPropertyDescription("Specifies the format of AssemblyFileVersion and overwrites the value of assembly-file-versioning-scheme.")]
- public string? AssemblyFileVersioningFormat { get; internal set; }
+ public string? AssemblyFileVersioningFormat { get; internal init; }
[JsonPropertyName("tag-prefix")]
[JsonPropertyDescription($"A regular expression which is used to trim Git tags before processing. Defaults to '{RegexPatterns.Configuration.DefaultTagPrefixPattern}'")]
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultTagPrefixPattern)]
[JsonPropertyFormat(Format.Regex)]
- public string? TagPrefixPattern { get; internal set; }
+ public string? TagPrefixPattern { get; internal init; }
[JsonPropertyName("version-in-branch-pattern")]
[JsonPropertyDescription($"A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '{RegexPatterns.Configuration.DefaultVersionInBranchPattern}'.")]
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultVersionInBranchPattern)]
[JsonPropertyFormat(Format.Regex)]
- public string? VersionInBranchPattern { get; internal set; }
+ public string? VersionInBranchPattern { get; internal init; }
[JsonPropertyName("next-version")]
[JsonPropertyDescription("Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes")]
public string? NextVersion
{
get => nextVersion;
- internal set =>
+ internal init =>
nextVersion = int.TryParse(value, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out var major)
? $"{major}.0"
: value;
@@ -63,39 +63,39 @@ public string? NextVersion
[JsonPropertyDescription($"The regular expression to match commit messages with to perform a major version increment. Defaults to '{RegexPatterns.VersionCalculation.DefaultMajorPattern}'")]
[JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultMajorPattern)]
[JsonPropertyFormat(Format.Regex)]
- public string? MajorVersionBumpMessage { get; internal set; }
+ public string? MajorVersionBumpMessage { get; internal init; }
[JsonPropertyName("minor-version-bump-message")]
[JsonPropertyDescription($"The regular expression to match commit messages with to perform a minor version increment. Defaults to '{RegexPatterns.VersionCalculation.DefaultMinorPattern}'")]
[JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultMinorPattern)]
[JsonPropertyFormat(Format.Regex)]
- public string? MinorVersionBumpMessage { get; internal set; }
+ public string? MinorVersionBumpMessage { get; internal init; }
[JsonPropertyName("patch-version-bump-message")]
[JsonPropertyDescription($"The regular expression to match commit messages with to perform a patch version increment. Defaults to '{RegexPatterns.VersionCalculation.DefaultPatchPattern}'")]
[JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultPatchPattern)]
[JsonPropertyFormat(Format.Regex)]
- public string? PatchVersionBumpMessage { get; internal set; }
+ public string? PatchVersionBumpMessage { get; internal init; }
[JsonPropertyName("no-bump-message")]
[JsonPropertyDescription($"Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '{RegexPatterns.VersionCalculation.DefaultNoBumpPattern}'")]
[JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultNoBumpPattern)]
[JsonPropertyFormat(Format.Regex)]
- public string? NoBumpMessage { get; internal set; }
+ public string? NoBumpMessage { get; internal init; }
[JsonPropertyName("tag-pre-release-weight")]
[JsonPropertyDescription($"The pre-release weight in case of tagged commits. Defaults to {StringDefaultTagPreReleaseWeight}.")]
- public int? TagPreReleaseWeight { get; internal set; }
+ public int? TagPreReleaseWeight { get; internal init; }
[JsonPropertyName("commit-date-format")]
[JsonPropertyDescription($"The format to use when calculating the commit date. Defaults to '{DefaultCommitDateFormat}'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).")]
[JsonPropertyDefault(DefaultCommitDateFormat)]
[System.Diagnostics.CodeAnalysis.StringSyntax("DateTimeFormat")]
- public string? CommitDateFormat { get; internal set; }
+ public string? CommitDateFormat { get; internal init; }
[JsonPropertyName("merge-message-formats")]
[JsonPropertyDescription("Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.")]
- public Dictionary MergeMessageFormats { get; internal set; } = [];
+ public Dictionary MergeMessageFormats { get; internal init; } = [];
[JsonIgnore]
IReadOnlyDictionary IGitVersionConfiguration.MergeMessageFormats => MergeMessageFormats;
@@ -103,35 +103,35 @@ public string? NextVersion
[JsonPropertyName("update-build-number")]
[JsonPropertyDescription($"Whether to update the build number in the project file. Defaults to {StringDefaultUpdateBuildNumber}.")]
[JsonPropertyDefault(DefaultUpdateBuildNumber)]
- public bool UpdateBuildNumber { get; internal set; } = DefaultUpdateBuildNumber;
+ public bool UpdateBuildNumber { get; internal init; } = DefaultUpdateBuildNumber;
[JsonPropertyName("semantic-version-format")]
[JsonPropertyDescription($"Specifies the semantic version format that is used when parsing the string. Can be 'Strict' or 'Loose'. Defaults to '{StringDefaultSemanticVersionFormat}'.")]
[JsonPropertyDefault(DefaultSemanticVersionFormat)]
- public SemanticVersionFormat SemanticVersionFormat { get; internal set; }
+ public SemanticVersionFormat SemanticVersionFormat { get; internal init; }
[JsonIgnore]
VersionStrategies IGitVersionConfiguration.VersionStrategy => VersionStrategies.Length == 0
? VersionCalculation.VersionStrategies.None : VersionStrategies.Aggregate((one, another) => one | another);
[JsonPropertyName("strategies")]
- [JsonPropertyDescription($"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.")]
- public VersionStrategies[] VersionStrategies { get; internal set; } = [];
+ [JsonPropertyDescription($"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: '{nameof(VersionCalculation.VersionStrategies.ConfiguredNextVersion)}', '{nameof(VersionCalculation.VersionStrategies.MergeMessage)}', '{nameof(VersionCalculation.VersionStrategies.TaggedCommit)}', '{nameof(VersionCalculation.VersionStrategies.TrackReleaseBranches)}', '{nameof(VersionCalculation.VersionStrategies.VersionInBranchName)}' and '{nameof(VersionCalculation.VersionStrategies.Mainline)}'.")]
+ public VersionStrategies[] VersionStrategies { get; internal init; } = [];
[JsonIgnore]
IReadOnlyDictionary IGitVersionConfiguration.Branches
- => Branches.ToDictionary(element => element.Key, element => (IBranchConfiguration)element.Value);
+ => Branches.ToDictionary(element => element.Key, IBranchConfiguration (element) => element.Value);
[JsonPropertyName("branches")]
[JsonPropertyDescription("The header for all the individual branch configuration.")]
- public Dictionary Branches { get; internal set; } = [];
+ public Dictionary Branches { get; internal init; } = [];
[JsonIgnore]
IIgnoreConfiguration IGitVersionConfiguration.Ignore => Ignore;
[JsonPropertyName("ignore")]
[JsonPropertyDescription("The header property for the ignore configuration.")]
- public IgnoreConfiguration Ignore { get; internal set; } = new();
+ public IgnoreConfiguration Ignore { get; internal init; } = new();
public override IBranchConfiguration Inherit(IBranchConfiguration configuration) => throw new NotSupportedException();
diff --git a/src/GitVersion.Configuration/PreventIncrementConfiguration.cs b/src/GitVersion.Configuration/PreventIncrementConfiguration.cs
index 37661d9762..757647293b 100644
--- a/src/GitVersion.Configuration/PreventIncrementConfiguration.cs
+++ b/src/GitVersion.Configuration/PreventIncrementConfiguration.cs
@@ -6,13 +6,13 @@ internal class PreventIncrementConfiguration : IPreventIncrementConfiguration
{
[JsonPropertyName("of-merged-branch")]
[JsonPropertyDescription("Prevent increment when branch merged.")]
- public bool? OfMergedBranch { get; set; }
+ public bool? OfMergedBranch { get; internal init; }
[JsonPropertyName("when-branch-merged")]
[JsonPropertyDescription("Prevent increment when branch merged.")]
- public bool? WhenBranchMerged { get; set; }
+ public bool? WhenBranchMerged { get; internal init; }
[JsonPropertyName("when-current-commit-tagged")]
[JsonPropertyDescription("This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.")]
- public bool? WhenCurrentCommitTagged { get; set; }
+ public bool? WhenCurrentCommitTagged { get; internal init; }
}
diff --git a/src/GitVersion.Configuration/VersionStrategiesConverter.cs b/src/GitVersion.Configuration/VersionStrategiesConverter.cs
index b4144464d4..9f82f82c70 100644
--- a/src/GitVersion.Configuration/VersionStrategiesConverter.cs
+++ b/src/GitVersion.Configuration/VersionStrategiesConverter.cs
@@ -16,11 +16,11 @@ public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeseria
{
List strategies = [];
- if (parser.TryConsume(out var _))
+ if (parser.TryConsume(out _))
{
- while (!parser.TryConsume(out var _))
+ while (!parser.TryConsume(out _))
{
- string data = parser.Consume().Value;
+ var data = parser.Consume().Value;
var strategy = Enum.Parse(data);
strategies.Add(strategy);
@@ -28,7 +28,7 @@ public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeseria
}
else
{
- string data = parser.Consume().Value;
+ var data = parser.Consume().Value;
var deserializer = new DeserializerBuilder()
.WithNamingConvention(UnderscoredNamingConvention.Instance)
@@ -42,7 +42,7 @@ public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeseria
public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer)
{
- VersionStrategies[] strategies = (VersionStrategies[])value!;
+ var strategies = (VersionStrategies[])value!;
var s = new SerializerBuilder()
.JsonCompatible()
diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
index d4dbf79950..77521b0fcf 100644
--- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
+++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
@@ -130,7 +130,6 @@ public void CacheFileExistsOnDisk()
""";
var stringBuilder = new StringBuilder();
- void Action(string s) => stringBuilder.AppendLine(s);
var logAppender = new TestLogAppender(Action);
this.log = new Log(logAppender);
@@ -156,6 +155,9 @@ public void CacheFileExistsOnDisk()
var logsMessages = stringBuilder.ToString();
logsMessages.ShouldContain("Loading version variables from disk cache file", Case.Insensitive, logsMessages);
+ return;
+
+ void Action(string s) => stringBuilder.AppendLine(s);
}
[Test]
@@ -225,7 +227,6 @@ public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDyn
public void CacheFileIsMissing()
{
var stringBuilder = new StringBuilder();
- void Action(string s) => stringBuilder.AppendLine(s);
var logAppender = new TestLogAppender(Action);
this.log = new Log(logAppender);
@@ -241,6 +242,9 @@ public void CacheFileIsMissing()
var logsMessages = stringBuilder.ToString();
logsMessages.ShouldMatch("(?s).*Cache file.*(?-s) not found.*");
+ return;
+
+ void Action(string s) => stringBuilder.AppendLine(s);
}
[TestCase(ConfigurationFileLocator.DefaultFileName)]
diff --git a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs
index 67e861aad0..9e58ad8bcb 100644
--- a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs
+++ b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs
@@ -227,7 +227,7 @@ public void FindCommitBranchWasBranchedFromShouldReturnNullIfTheRemoteIsTheOnlyS
branch.ShouldNotBeNull();
var configuration = GitFlowConfigurationBuilder.New.Build();
- var branchedCommit = gitRepoMetadataProvider.FindCommitBranchBranchedFrom(branch, configuration, []);
+ var branchedCommit = gitRepoMetadataProvider.FindCommitBranchBranchedFrom(branch, configuration);
branchedCommit.ShouldBe(BranchCommit.Empty);
var branchedCommits = gitRepoMetadataProvider.FindCommitBranchesBranchedFrom(branch, configuration).ToArray();
diff --git a/src/GitVersion.Core.Tests/DocumentationTests.cs b/src/GitVersion.Core.Tests/DocumentationTests.cs
index cc77fe446b..247af1aacd 100644
--- a/src/GitVersion.Core.Tests/DocumentationTests.cs
+++ b/src/GitVersion.Core.Tests/DocumentationTests.cs
@@ -9,7 +9,7 @@ namespace GitVersion.Core.Tests;
[TestFixture]
public class DocumentationTests : TestBase
{
- private IFileSystem fileSystem;
+ private FileSystem fileSystem;
private IDirectoryInfo docsDirectory;
[OneTimeSetUp]
diff --git a/src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs
index 01cb2f7808..b9982f9d47 100644
--- a/src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs
+++ b/src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs
@@ -165,7 +165,7 @@ internal static IGitRepository ToGitRepository(this IRepository repository)
return gitRepository;
}
- private static IServiceProvider ConfigureServices(Action? servicesOverrides = null)
+ private static ServiceProvider ConfigureServices(Action? servicesOverrides = null)
{
var services = new ServiceCollection()
.AddModule(new GitVersionCoreTestModule());
diff --git a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs
index 045c930d87..250d382308 100644
--- a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs
+++ b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs
@@ -84,7 +84,7 @@ private static IGitRepository CreateRepository()
return mockRepository;
}
- private static IServiceProvider ConfigureServices(Action? overrideServices = null)
+ private static ServiceProvider ConfigureServices(Action? overrideServices = null)
{
var services = new ServiceCollection()
.AddModule(new GitVersionCoreTestModule());
diff --git a/src/GitVersion.Core.Tests/Helpers/TestConsole.cs b/src/GitVersion.Core.Tests/Helpers/TestConsole.cs
deleted file mode 100644
index 7e48006020..0000000000
--- a/src/GitVersion.Core.Tests/Helpers/TestConsole.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using GitVersion.Extensions;
-using GitVersion.Helpers;
-using GitVersion.Logging;
-
-namespace GitVersion.Core.Tests.Helpers;
-
-public class TestConsole(params string[] responses) : IConsole
-{
- private readonly Queue responses = new(responses);
- private readonly ILog log = new NullLog();
-
- public void WriteLine(string? msg) => this.log.Info(msg + FileSystemHelper.Path.NewLine);
-
- public void WriteLine() => this.log.Info(FileSystemHelper.Path.NewLine);
-
- public void Write(string? msg) => this.log.Info(msg.NotNull());
-
- public string ReadLine() => this.responses.Dequeue();
-
- public IDisposable UseColor(ConsoleColor consoleColor) => new NoOpDisposable();
-
- private class NoOpDisposable : IDisposable
- {
- public void Dispose() { }
- }
-}
diff --git a/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs b/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs
index cf136b9934..3ae5935b28 100644
--- a/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs
+++ b/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs
@@ -7,8 +7,6 @@ public class TestConsoleAdapter(StringBuilder sb) : IConsole
{
public void WriteLine(string? msg) => sb.AppendLine(msg);
- public void WriteLine() => sb.AppendLine();
-
public void Write(string? msg) => sb.Append(msg);
public override string ToString() => sb.ToString();
diff --git a/src/GitVersion.Core.Tests/Helpers/TestEnvironment.cs b/src/GitVersion.Core.Tests/Helpers/TestEnvironment.cs
index b5f6b22e76..99eb6b2090 100644
--- a/src/GitVersion.Core.Tests/Helpers/TestEnvironment.cs
+++ b/src/GitVersion.Core.Tests/Helpers/TestEnvironment.cs
@@ -2,9 +2,9 @@ namespace GitVersion.Core.Tests.Helpers;
public class TestEnvironment : IEnvironment
{
- private readonly IDictionary map = new Dictionary();
+ private readonly Dictionary map = [];
- public string? GetEnvironmentVariable(string variableName) => this.map.TryGetValue(variableName, out var val) ? val : null;
+ public string? GetEnvironmentVariable(string variableName) => this.map.GetValueOrDefault(variableName);
public void SetEnvironmentVariable(string variableName, string? value) => this.map[variableName] = value;
}
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs
index 704d7fbcec..5b7484c6b1 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs
@@ -1,5 +1,6 @@
using GitVersion.Configuration;
using GitVersion.VersionCalculation;
+// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
namespace GitVersion.Core.Tests.IntegrationTests;
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs
index 9bbf031f12..3a9aae8822 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs
@@ -1,5 +1,6 @@
using GitVersion.Configuration;
using GitVersion.VersionCalculation;
+// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
namespace GitVersion.Core.Tests.IntegrationTests;
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs
index 26ee975616..a466855b43 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs
@@ -1,83 +1,82 @@
using GitVersion.Core.Tests.Helpers;
-namespace GitVersion.Core.Tests.IntegrationTests
+namespace GitVersion.Core.Tests.IntegrationTests;
+
+[TestFixture]
+public class GitflowScenarios : TestBase
{
- [TestFixture]
- public class GitflowScenarios : TestBase
+ [Test]
+ public void GitflowComplexExample()
{
- [Test]
- public void GitflowComplexExample()
- {
- const string developBranch = "develop";
- const string feature1Branch = "feature/f1";
- const string feature2Branch = "feature/f2";
- const string release1Branch = "release/1.1.0";
- const string release2Branch = "release/1.2.0";
- const string hotfixBranch = "hotfix/hf";
+ const string developBranch = "develop";
+ const string feature1Branch = "feature/f1";
+ const string feature2Branch = "feature/f2";
+ const string release1Branch = "release/1.1.0";
+ const string release2Branch = "release/1.2.0";
+ const string hotfixBranch = "hotfix/hf";
- using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
- fixture.AssertFullSemver("1.1.0-alpha.1");
+ using var fixture = new BaseGitFlowRepositoryFixture("1.0.0");
+ fixture.AssertFullSemver("1.1.0-alpha.1");
- // Feature 1
- fixture.BranchTo(feature1Branch);
- fixture.MakeACommit("added feature 1");
- fixture.AssertFullSemver("1.1.0-f1.1+2");
- fixture.Checkout(developBranch);
- fixture.MergeNoFF(feature1Branch);
- fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature1Branch]);
- fixture.AssertFullSemver("1.1.0-alpha.3");
+ // Feature 1
+ fixture.BranchTo(feature1Branch);
+ fixture.MakeACommit("added feature 1");
+ fixture.AssertFullSemver("1.1.0-f1.1+2");
+ fixture.Checkout(developBranch);
+ fixture.MergeNoFF(feature1Branch);
+ fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature1Branch]);
+ fixture.AssertFullSemver("1.1.0-alpha.3");
- // Release 1.1.0
- fixture.BranchTo(release1Branch);
- fixture.MakeACommit("release stabilization");
- fixture.AssertFullSemver("1.1.0-beta.1+4");
- fixture.Checkout(MainBranch);
- fixture.MergeNoFF(release1Branch);
- fixture.AssertFullSemver("1.1.0-5");
- fixture.ApplyTag("1.1.0");
- fixture.AssertFullSemver("1.1.0");
- fixture.Checkout(developBranch);
- fixture.MergeNoFF(release1Branch);
- fixture.Repository.Branches.Remove(fixture.Repository.Branches[release1Branch]);
- fixture.AssertFullSemver("1.2.0-alpha.1");
+ // Release 1.1.0
+ fixture.BranchTo(release1Branch);
+ fixture.MakeACommit("release stabilization");
+ fixture.AssertFullSemver("1.1.0-beta.1+4");
+ fixture.Checkout(MainBranch);
+ fixture.MergeNoFF(release1Branch);
+ fixture.AssertFullSemver("1.1.0-5");
+ fixture.ApplyTag("1.1.0");
+ fixture.AssertFullSemver("1.1.0");
+ fixture.Checkout(developBranch);
+ fixture.MergeNoFF(release1Branch);
+ fixture.Repository.Branches.Remove(fixture.Repository.Branches[release1Branch]);
+ fixture.AssertFullSemver("1.2.0-alpha.1");
- // Feature 2
- fixture.BranchTo(feature2Branch);
- fixture.MakeACommit("added feature 2");
- fixture.AssertFullSemver("1.2.0-f2.1+2");
- fixture.Checkout(developBranch);
- fixture.MergeNoFF(feature2Branch);
- fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature2Branch]);
- fixture.AssertFullSemver("1.2.0-alpha.3");
+ // Feature 2
+ fixture.BranchTo(feature2Branch);
+ fixture.MakeACommit("added feature 2");
+ fixture.AssertFullSemver("1.2.0-f2.1+2");
+ fixture.Checkout(developBranch);
+ fixture.MergeNoFF(feature2Branch);
+ fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature2Branch]);
+ fixture.AssertFullSemver("1.2.0-alpha.3");
- // Release 1.2.0
- fixture.BranchTo(release2Branch);
- fixture.MakeACommit("release stabilization");
- fixture.AssertFullSemver("1.2.0-beta.1+8");
- fixture.Checkout(MainBranch);
- fixture.MergeNoFF(release2Branch);
- fixture.AssertFullSemver("1.2.0-5");
- fixture.ApplyTag("1.2.0");
- fixture.AssertFullSemver("1.2.0");
- fixture.Checkout(developBranch);
- fixture.MergeNoFF(release2Branch);
- fixture.Repository.Branches.Remove(fixture.Repository.Branches[release2Branch]);
- fixture.AssertFullSemver("1.3.0-alpha.1");
+ // Release 1.2.0
+ fixture.BranchTo(release2Branch);
+ fixture.MakeACommit("release stabilization");
+ fixture.AssertFullSemver("1.2.0-beta.1+8");
+ fixture.Checkout(MainBranch);
+ fixture.MergeNoFF(release2Branch);
+ fixture.AssertFullSemver("1.2.0-5");
+ fixture.ApplyTag("1.2.0");
+ fixture.AssertFullSemver("1.2.0");
+ fixture.Checkout(developBranch);
+ fixture.MergeNoFF(release2Branch);
+ fixture.Repository.Branches.Remove(fixture.Repository.Branches[release2Branch]);
+ fixture.AssertFullSemver("1.3.0-alpha.1");
- // Hotfix
- fixture.Checkout(MainBranch);
- fixture.BranchTo(hotfixBranch);
- fixture.MakeACommit("added hotfix");
- fixture.AssertFullSemver("1.2.1-beta.1+1");
- fixture.Checkout(MainBranch);
- fixture.MergeNoFF(hotfixBranch);
- fixture.AssertFullSemver("1.2.1-2");
- fixture.ApplyTag("1.2.1");
- fixture.AssertFullSemver("1.2.1");
- fixture.Checkout(developBranch);
- fixture.MergeNoFF(hotfixBranch);
- fixture.Repository.Branches.Remove(fixture.Repository.Branches[hotfixBranch]);
- fixture.AssertFullSemver("1.3.0-alpha.2");
- }
+ // Hotfix
+ fixture.Checkout(MainBranch);
+ fixture.BranchTo(hotfixBranch);
+ fixture.MakeACommit("added hotfix");
+ fixture.AssertFullSemver("1.2.1-beta.1+1");
+ fixture.Checkout(MainBranch);
+ fixture.MergeNoFF(hotfixBranch);
+ fixture.AssertFullSemver("1.2.1-2");
+ fixture.ApplyTag("1.2.1");
+ fixture.AssertFullSemver("1.2.1");
+ fixture.Checkout(developBranch);
+ fixture.MergeNoFF(hotfixBranch);
+ fixture.Repository.Branches.Remove(fixture.Repository.Branches[hotfixBranch]);
+ fixture.AssertFullSemver("1.3.0-alpha.2");
}
}
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs
index dfd3574819..2ac097c7c9 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs
@@ -542,9 +542,9 @@ public void NoBumpMessageTakesPrecedenceOverBumpMessage(string commitMessage)
{
// Same configuration as found here: https://gitversion.net/docs/reference/version-increments#conventional-commit-messages
var conventionalCommitsConfig = GetConfigurationBuilder()
- .WithMajorVersionBumpMessage("^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?(!:|:.*\\n\\n((.+\\n)+\\n)?BREAKING CHANGE:\\s.+)")
- .WithMinorVersionBumpMessage("^(feat)(\\([\\w\\s-]*\\))?:")
- .WithPatchVersionBumpMessage("^(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?:")
+ .WithMajorVersionBumpMessage(@"^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([\w\s-]*\))?(!:|:.*\n\n((.+\n)+\n)?BREAKING CHANGE:\s.+)")
+ .WithMinorVersionBumpMessage(@"^(feat)(\([\w\s-]*\))?:")
+ .WithPatchVersionBumpMessage(@"^(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\([\w\s-]*\))?:")
.Build();
using var fixture = new EmptyRepositoryFixture();
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs
index 5784d9472e..39c2c3ba45 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs
@@ -109,7 +109,7 @@ public void HasDirtyFlagWhenUncommittedChangesAreInRepository(bool stageFile, in
using var fixture = new EmptyRepositoryFixture();
fixture.MakeACommit();
- for (int i = 0; i < numberOfFiles; i++)
+ for (var i = 0; i < numberOfFiles; i++)
{
var tempFile = FileSystemHelper.Path.GetRandomFileName();
var repoFile = FileSystemHelper.Path.Combine(fixture.RepositoryPath, FileSystemHelper.Path.GetFileNameWithoutExtension(tempFile) + ".txt");
@@ -1050,7 +1050,7 @@ public void EnsureThePreReleaseTagIsCorrectlyGeneratedWhenPreReleaseLabelIsEmpty
using var fixture = new EmptyRepositoryFixture();
fixture.Repository.MakeCommits(5);
- var _ = fixture.GetVersion(configuration);
+ _ = fixture.GetVersion(configuration);
fixture.AssertFullSemver("0.0.1-5", configuration);
}
@@ -1217,7 +1217,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnReleaseBranchAndIncre
if (tags is not null)
{
- foreach (string tag in tags)
+ foreach (var tag in tags)
{
fixture.ApplyTag(tag);
}
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs
index aad4244caf..cb92616ac8 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs
@@ -13,10 +13,10 @@ public void RepositoryWithALotOfTags()
using var fixture = new EmptyRepositoryFixture();
Random random = new(4711);
- SemanticVersion semanticVersion = SemanticVersion.Empty;
- for (int i = 0; i < 500; i++)
+ var semanticVersion = SemanticVersion.Empty;
+ for (var i = 0; i < 500; i++)
{
- VersionField versionField = (VersionField)random.Next(1, 4);
+ var versionField = (VersionField)random.Next(1, 4);
semanticVersion = semanticVersion.Increment(versionField, string.Empty, forceIncrement: true);
fixture.MakeATaggedCommit(semanticVersion.ToString("j"));
}
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs
index 4dd41a02d2..e2720e37da 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs
@@ -123,17 +123,15 @@ public void GivenARemoteGitRepositoryTheLocalAndRemoteBranchAreTreatedAsSamePare
local.AssertFullSemver("1.0.2-bug-hotfix.1+1");
}
- private static void CopyRemoteBranchesToHeads(IRepository repository)
+ private static void CopyRemoteBranchesToHeads(Repository repository)
{
foreach (var branch in repository.Branches)
{
- if (branch.IsRemote)
+ if (!branch.IsRemote) continue;
+ var localName = branch.FriendlyName.Replace($"{branch.RemoteName}/", "");
+ if (repository.Branches[localName] == null)
{
- var localName = branch.FriendlyName.Replace($"{branch.RemoteName}/", "");
- if (repository.Branches[localName] == null)
- {
- repository.CreateBranch(localName, branch.FriendlyName);
- }
+ repository.CreateBranch(localName, branch.FriendlyName);
}
}
}
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/RepositoryFixtureExtensions.cs b/src/GitVersion.Core.Tests/IntegrationTests/RepositoryFixtureExtensions.cs
index ec4b304788..bf89eda3b8 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/RepositoryFixtureExtensions.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/RepositoryFixtureExtensions.cs
@@ -11,15 +11,16 @@ public static void MakeACommit(this RepositoryFixtureBase fixture, string commit
.GetField("diagramBuilder", BindingFlags.Instance | BindingFlags.NonPublic)
?.GetValue(fixture.SequenceDiagram);
- string? GetParticipant(string participant) =>
+ var participant = GetParticipant(fixture.Repository.Head.FriendlyName);
+ if (participant != null)
+ diagramBuilder?.AppendLineFormat("{0} -> {0}: Commit '{1}'", participant, commitMsg);
+ return;
+
+ string? GetParticipant(string participantName) =>
(string?)typeof(SequenceDiagram).GetMethod("GetParticipant", BindingFlags.Instance | BindingFlags.NonPublic)
?.Invoke(fixture.SequenceDiagram,
[
- participant
+ participantName
]);
-
- var participant = GetParticipant(fixture.Repository.Head.FriendlyName);
- if (participant != null)
- diagramBuilder?.AppendLineFormat("{0} -> {0}: Commit '{1}'", participant, commitMsg);
}
}
diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs
index 5279dbaaf6..459fc5ef80 100644
--- a/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs
+++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs
@@ -81,11 +81,11 @@ public void CanUseConventionalCommitsToBumpVersion(string commitMessage, string
{
var configuration = GitFlowConfigurationBuilder.New
// For future debugging of this regex: https://regex101.com/r/CRoBol/2
- .WithMajorVersionBumpMessage("^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?(!:|:.*\\n\\n((.+\\n)+\\n)?BREAKING CHANGE:\\s.+)")
+ .WithMajorVersionBumpMessage(@"^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([\w\s-]*\))?(!:|:.*\n\n((.+\n)+\n)?BREAKING CHANGE:\s.+)")
// For future debugging of this regex: https://regex101.com/r/9ccNam/3
- .WithMinorVersionBumpMessage("^(feat)(\\([\\w\\s-]*\\))?:")
+ .WithMinorVersionBumpMessage(@"^(feat)(\([\w\s-]*\))?:")
// For future debugging of this regex: https://regex101.com/r/oFpqxA/2
- .WithPatchVersionBumpMessage("^(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?:")
+ .WithPatchVersionBumpMessage(@"^(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\([\w\s-]*\))?:")
.WithVersionStrategy(VersionStrategies.Mainline)
.WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.ContinuousDeployment))
.Build();
diff --git a/src/GitVersion.Core.Tests/Logging/LoggerTest.cs b/src/GitVersion.Core.Tests/Logging/LoggerTest.cs
index e0e1ccdeaa..25fd83ab0a 100644
--- a/src/GitVersion.Core.Tests/Logging/LoggerTest.cs
+++ b/src/GitVersion.Core.Tests/Logging/LoggerTest.cs
@@ -15,14 +15,15 @@ public void LoggerObscuresPassword(string protocol)
const string password = "password";
var s = string.Empty;
- void Action(string info) => s = info;
-
var logAppender = new TestLogAppender(Action);
var log = new Log(logAppender);
log.Info($"{protocol}://{username}:{password}@workspace.visualstudio.com/DefaultCollection/_git/CAS");
s.Contains(password).ShouldBe(false);
+ return;
+
+ void Action(string info) => s = info;
}
[Test]
@@ -30,8 +31,6 @@ public void UsernameWithoutPassword()
{
var s = string.Empty;
- void Action(string info) => s = info;
-
var logAppender = new TestLogAppender(Action);
var log = new Log(logAppender);
@@ -40,5 +39,8 @@ public void UsernameWithoutPassword()
log.Info(repoUrl);
s.Contains(repoUrl).ShouldBe(true);
+ return;
+
+ void Action(string info) => s = info;
}
}
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs
index b6b96cd061..dd9618f778 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs
@@ -58,7 +58,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+2")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("develop", b => b.WithIncrement(increment))
.Build();
@@ -87,7 +87,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-1+2")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("develop", b => b.WithIncrement(increment))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs
index 648d69ddba..6e560d4fcd 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs
@@ -60,7 +60,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+0")]
public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("develop", b => b.WithIncrement(increment).WithTrackMergeTarget(true))
.Build();
@@ -89,7 +89,7 @@ public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incremen
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+1")]
public string GetVersionWithNoTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("develop", b => b.WithIncrement(increment).WithTrackMergeTarget(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs
index 87d626b6a4..94aa15cd6d 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs
@@ -133,7 +133,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "bar", ExpectedResult = "3.0.0-bar.1+3")]
public string GetVersion(IncrementStrategy increment, IncrementStrategy incrementOnFeature, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.WithBranch("feature", b => b.WithIncrement(incrementOnFeature))
.Build();
@@ -227,7 +227,7 @@ public string GetVersion(IncrementStrategy increment, IncrementStrategy incremen
public string GetVersionWithPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy increment, IncrementStrategy incrementOnFeature, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(incrementOnFeature))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs
index a223f6f1be..40cd7b368e 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs
@@ -67,7 +67,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment))
.Build();
@@ -100,7 +100,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment))
.Build();
@@ -133,7 +133,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment))
.Build();
@@ -166,7 +166,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs
index b621263a0e..1e04bf98ff 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -366,7 +366,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -479,7 +479,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs
index e316d139ac..d50c5f70c7 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -369,7 +369,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -484,7 +484,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -598,7 +598,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -713,7 +713,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -827,7 +827,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -941,7 +941,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1056,7 +1056,7 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1170,7 +1170,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1284,7 +1284,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1399,7 +1399,7 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs
index 726d511f00..a00d17cd06 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -369,7 +369,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -484,7 +484,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -598,7 +598,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -713,7 +713,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -827,7 +827,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -941,7 +941,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1056,7 +1056,7 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1170,7 +1170,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1284,7 +1284,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1399,7 +1399,7 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs
index ac28a234eb..0ad6e69527 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -369,7 +369,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -483,7 +483,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -597,7 +597,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -712,7 +712,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -826,7 +826,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1055,7 +1055,7 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1169,7 +1169,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1283,7 +1283,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1398,7 +1398,7 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs
index 826cdde4c8..219be0a0d1 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs
index efd75ff410..0a5374d23d 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs
index 6014f1af71..7bf83c189f 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs
index 4de1d77ae9..97efbbf7ce 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs
@@ -142,7 +142,7 @@ public void OneTimeSetUp()
public string GetVersionWithNoLabelOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -256,7 +256,7 @@ public string GetVersionWithNoLabelOnMain(
public string GetVersionWithEmptyLabelOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -370,7 +370,7 @@ public string GetVersionWithEmptyLabelOnMain(
public string GetVersionWithLabelFooOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -484,7 +484,7 @@ public string GetVersionWithLabelFooOnMain(
public string GetVersionWithLabelBarOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs
index 4d72b021d5..8ebc1e8f73 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -370,7 +370,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -485,7 +485,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -599,7 +599,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -715,7 +715,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -830,7 +830,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -944,7 +944,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1060,7 +1060,7 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1175,7 +1175,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1289,7 +1289,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1405,7 +1405,7 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs
index ee1731cda9..2e640520c0 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -370,7 +370,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -485,7 +485,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -599,7 +599,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -715,7 +715,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -830,7 +830,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -944,7 +944,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1060,7 +1060,7 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1175,7 +1175,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1289,7 +1289,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1405,7 +1405,7 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs
index fd31f2d6e8..3b71db21b8 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -370,7 +370,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -485,7 +485,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -599,7 +599,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -715,7 +715,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -830,7 +830,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -944,7 +944,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1060,7 +1060,7 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1175,7 +1175,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1289,7 +1289,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
@@ -1405,7 +1405,7 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b
.WithIncrement(increment).WithLabel(label)
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs
index 05502b86f9..b249171f7b 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs
index 2e90aa8889..eca7cd7cf8 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs
index ef0054c150..e039a08a3b 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs
index 3ab135df63..2c8e51e591 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs
@@ -142,7 +142,7 @@ public void OneTimeSetUp()
public string GetVersionWithNoLabelOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -236,7 +236,7 @@ public string GetVersionWithNoLabelOnMain(
public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -350,7 +350,7 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag
public string GetVersionWithEmptyLabelOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -444,7 +444,7 @@ public string GetVersionWithEmptyLabelOnMain(
public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -558,7 +558,7 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit
public string GetVersionWithLabelFooOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -652,7 +652,7 @@ public string GetVersionWithLabelFooOnMain(
public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -766,7 +766,7 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa
public string GetVersionWithLabelBarOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -860,7 +860,7 @@ public string GetVersionWithLabelBarOnMain(
public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs
index 01d13e03f9..0d4c52125e 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs
@@ -145,7 +145,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -260,7 +260,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -374,7 +374,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+2")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -489,7 +489,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -603,7 +603,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -718,7 +718,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -832,7 +832,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+2")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -947,7 +947,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs
index b19f8c64a8..d2b9587ce7 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs
@@ -145,7 +145,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -259,7 +259,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -372,7 +372,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-5+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -487,7 +487,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -600,7 +600,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -714,7 +714,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -827,7 +827,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+2")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -941,7 +941,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs
index a11ab72d0a..36d496fc6b 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs
@@ -145,7 +145,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -259,7 +259,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -372,7 +372,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+2")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -486,7 +486,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -599,7 +599,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -713,7 +713,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -826,7 +826,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-bar+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs
index 300eb4e00c..e3a96954a6 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs
@@ -145,7 +145,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.5+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -259,7 +259,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -372,7 +372,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+2")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -486,7 +486,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -599,7 +599,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.5+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -713,7 +713,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -826,7 +826,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+2")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs
index 5ceace138e..854811f409 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs
@@ -145,7 +145,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -259,7 +259,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -372,7 +372,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-1+1")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -486,7 +486,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -599,7 +599,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -713,7 +713,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -826,7 +826,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs
index a00b118d9a..28c9ea8f94 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs
@@ -150,7 +150,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")]
public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -265,7 +265,7 @@ public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, I
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -379,7 +379,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -494,7 +494,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -608,7 +608,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -723,7 +723,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -837,7 +837,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -952,7 +952,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs
index cdd2e25d5a..76c4839581 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs
index 7ee8bc6e68..25f500873d 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -78,7 +78,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -107,7 +107,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs
index 75e2ae6018..aa346a999a 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -78,7 +78,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -107,7 +107,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs
index e8dbb2d8ea..ccdf753b23 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -78,7 +78,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -107,7 +107,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs
index c65189358f..17c7fddc99 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs
index 7eab4b4550..0ef713c59c 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar+0")]
public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs
index 94a7919769..1765d86cad 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs
index 2a364c6117..b9f5b03937 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+0")]
public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs
index bbf25713ae..7883bb8bd2 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs
@@ -124,7 +124,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -217,7 +217,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -310,7 +310,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs
index 1e60798ead..2b190b7282 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs
@@ -149,7 +149,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+4")]
public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -264,7 +264,7 @@ public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, I
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -378,7 +378,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+4")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -493,7 +493,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -607,7 +607,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+4")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -722,7 +722,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -836,7 +836,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+4")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -951,7 +951,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs
index 68e261655a..540bde6834 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs
@@ -56,7 +56,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+3")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs
index ca166148b5..d7887d9be8 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs
@@ -122,7 +122,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -215,7 +215,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -308,7 +308,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs
index 8d53b23842..18458da0f6 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs
@@ -147,7 +147,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")]
public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -262,7 +262,7 @@ public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, I
public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -376,7 +376,7 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+3")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -491,7 +491,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -605,7 +605,7 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -720,7 +720,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -834,7 +834,7 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+3")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -949,7 +949,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs
index c46eeb186f..e1b1807167 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs
@@ -55,7 +55,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+2")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs
index ede3f8afe4..d83467f733 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs
@@ -55,7 +55,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.3-bar+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs
index fc3663c8dc..29ddbb46a8 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs
@@ -55,7 +55,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+2")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs
index 5562d917d9..812e314d6d 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs
@@ -138,7 +138,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -252,7 +252,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -365,7 +365,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -478,7 +478,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs
index 0c215481b9..fbc2b8d54d 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs
@@ -138,7 +138,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -252,7 +252,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -367,7 +367,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -482,7 +482,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -596,7 +596,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -711,7 +711,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -825,7 +825,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -939,7 +939,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1054,7 +1054,7 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1168,7 +1168,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1282,7 +1282,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1397,7 +1397,7 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs
index 5cedf59ec5..f8fa228bd1 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs
@@ -138,7 +138,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -252,7 +252,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -367,7 +367,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -482,7 +482,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -596,7 +596,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -711,7 +711,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -825,7 +825,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -939,7 +939,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1054,7 +1054,7 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1168,7 +1168,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1282,7 +1282,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1397,7 +1397,7 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs
index b66b8ffb39..a174d7294b 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs
@@ -138,7 +138,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -252,7 +252,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -367,7 +367,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -481,7 +481,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -595,7 +595,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -710,7 +710,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -824,7 +824,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -938,7 +938,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1053,7 +1053,7 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1167,7 +1167,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1281,7 +1281,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1396,7 +1396,7 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs
index e254e99716..0007496360 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs
@@ -139,7 +139,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -366,7 +366,7 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -593,7 +593,7 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -707,7 +707,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -820,7 +820,7 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -934,7 +934,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs
index 6097fd0e09..2abdb7b357 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs
@@ -139,7 +139,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -366,7 +366,7 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -593,7 +593,7 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -707,7 +707,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -820,7 +820,7 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -934,7 +934,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs
index 2721e46e16..7ceb1328e3 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs
@@ -139,7 +139,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -366,7 +366,7 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -593,7 +593,7 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -707,7 +707,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -820,7 +820,7 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -934,7 +934,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs
index faa9aadc69..470c506735 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs
@@ -139,7 +139,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -366,7 +366,7 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -593,7 +593,7 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -707,7 +707,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
@@ -820,7 +820,7 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -934,7 +934,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs
index dbe3587af8..d9e4e761f9 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs
index f426dff437..fe2a983797 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -78,7 +78,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -107,7 +107,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs
index 93f5d04efa..c138a0a3e2 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -78,7 +78,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -107,7 +107,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs
index e0b6c322f8..ff12dbe0ef 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs
@@ -50,7 +50,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -78,7 +78,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -107,7 +107,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs
index 05e18236af..31fbbf6d25 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs
@@ -51,7 +51,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs
index dd1d0cb61c..293eee070a 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs
@@ -51,7 +51,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs
index ead26ad71c..34ac29009d 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs
@@ -51,7 +51,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs
index f6d1694476..15e889503c 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs
@@ -51,7 +51,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs
index 5b4f43cc40..a5d6560d08 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs
@@ -54,7 +54,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "3.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs
index 88b321480e..fdfc174ffe 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -366,7 +366,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -479,7 +479,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs
index d5592d078b..c193e8470f 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -367,7 +367,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -481,7 +481,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -596,7 +596,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -712,7 +712,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -826,7 +826,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1055,7 +1055,7 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
)
@@ -1170,7 +1170,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1284,7 +1284,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1399,7 +1399,7 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs
index 117d580522..a657a8dfc3 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -367,7 +367,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -481,7 +481,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -596,7 +596,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -712,7 +712,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -826,7 +826,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1055,7 +1055,7 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
)
@@ -1170,7 +1170,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1284,7 +1284,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1399,7 +1399,7 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs
index 92669b7ab4..a5afd1e6aa 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs
@@ -140,7 +140,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -253,7 +253,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -367,7 +367,7 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -481,7 +481,7 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -596,7 +596,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -712,7 +712,7 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain(
public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -826,7 +826,7 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -940,7 +940,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1055,7 +1055,7 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain(
public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
)
@@ -1170,7 +1170,7 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain(
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -1284,7 +1284,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In
public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
@@ -1399,7 +1399,7 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain(
public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain(
IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs
index 5caadaeb23..c72d4ad348 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs
index 54058188ef..81acd1b342 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs
index 44ddb5faa0..40dafb7ea0 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs
index b84caf36fc..54cb6d6552 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs
@@ -141,7 +141,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -254,7 +254,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -367,7 +367,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain,
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -480,7 +480,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In
[TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")]
public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar"))
.WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs
index 5ab2e54ec2..f4966a63cb 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs
index 37abd564e6..11e2e54c8e 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -80,7 +80,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -109,7 +109,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs
index c8066c87ef..9227937fae 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -80,7 +80,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -109,7 +109,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs
index df68d760c6..fcc8754ec1 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -80,7 +80,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -109,7 +109,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs
index faf3b55295..d0e8154163 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs
index 5a55b2ee16..54e2b24c67 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs
index 89e4c715aa..55cb336422 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs
index 05b4a99d93..086d5638ec 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs
index 333dc9c0e8..6e0626b22c 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -80,7 +80,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -109,7 +109,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs
index 5e94901177..b3f51bfa51 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -80,7 +80,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -109,7 +109,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs
index 540b8fce7e..1406795ae2 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs
@@ -52,7 +52,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
@@ -80,7 +80,7 @@ public string GetVersion(IncrementStrategy increment, string? label)
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled)
).Build();
@@ -109,7 +109,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)
.WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly)
).Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs
index ad884f4653..e1cea97f72 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs
index 3f72569f57..c07bcc22e4 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.2.0-bar")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs
index 97d8d78a1c..c64ad215be 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs
index 2072e5f8c6..3be1bc7ecc 100644
--- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs
+++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs
@@ -53,7 +53,7 @@ public void OneTimeSetUp()
[TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.2.0")]
public string GetVersion(IncrementStrategy increment, string? label)
{
- IGitVersionConfiguration mainline = MainlineBuilder
+ var mainline = MainlineBuilder
.WithBranch("main", b => b.WithIncrement(increment).WithLabel(label))
.Build();
diff --git a/src/GitVersion.Core.Tests/MergeMessageTests.cs b/src/GitVersion.Core.Tests/MergeMessageTests.cs
index 79d7590f39..7cf016e0be 100644
--- a/src/GitVersion.Core.Tests/MergeMessageTests.cs
+++ b/src/GitVersion.Core.Tests/MergeMessageTests.cs
@@ -146,11 +146,13 @@ public void ParsesBitBucketPullMergeMessage(
private static readonly object[] BitBucketPullMergeMessages_v7 =
[
- new object[] { $@"Pull request #68: Release/2.2.0
+ new object[] { $"""
+ Pull request #68: Release/2.2.0
-Merge in aaa/777 from release/2.2.0 to {MainBranch}
+ Merge in aaa/777 from release/2.2.0 to {MainBranch}
-* commit '750aa37753dec1a85b22cc16db851187649d9e97':", "release/2.2.0", MainBranch, new SemanticVersion(2, 2), 68 }
+ * commit '750aa37753dec1a85b22cc16db851187649d9e97':
+ """, "release/2.2.0", MainBranch, new SemanticVersion(2, 2), 68 }
];
[TestCaseSource(nameof(BitBucketPullMergeMessages_v7))]
@@ -176,11 +178,13 @@ public void ParsesBitBucketPullMergeMessage_v7(
private static readonly object?[] BitBucketCloudPullMergeMessages =
[
- new object?[] { @"Merged in release/2.301.0 (pull request #1789)
+ new object?[] { """
+ Merged in release/2.301.0 (pull request #1789)
-Release/2.301.0
+ Release/2.301.0
-Approved-by: John Doe", "release/2.301.0", null, new SemanticVersion(2, 301), 1789 }
+ Approved-by: John Doe
+ """, "release/2.301.0", null, new SemanticVersion(2, 301), 1789 }
];
[TestCaseSource(nameof(BitBucketCloudPullMergeMessages))]
@@ -349,15 +353,14 @@ public void MatchesCaptureGroupsFromCustomMessages()
[definition] = format
});
const int pr = 1234;
- const string target = MainBranch;
const string source = "feature/2.0.0/example";
// Act
- var sut = new MergeMessage($"Merged PR #{pr} into {target} from {source}", this.configurationBuilder.Build());
+ var sut = new MergeMessage($"Merged PR #{pr} into {MainBranch} from {source}", this.configurationBuilder.Build());
// Assert
sut.FormatName.ShouldBe(definition);
- sut.TargetBranch.ShouldBe(target);
+ sut.TargetBranch.ShouldBe(MainBranch);
sut.MergedBranch.ShouldNotBeNull();
sut.MergedBranch.Friendly.ShouldBe(source);
sut.IsMergedPullRequest.ShouldBeTrue();
diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs
index fccd3fcd36..eb80a02e3a 100644
--- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs
+++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs
@@ -116,14 +116,18 @@ public void ShouldNotTakeVersionFromMergeOfReleaseBranchWithRemoteOtherThanOrigi
AssertMergeMessage(message + "\n ", null, parents);
}
- [TestCase(@"Merge pull request #1 in FOO/bar from feature/ISSUE-1 to develop
-* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':
- Updated jQuery to v2.1.3")]
- [TestCase(@"Merge pull request #45 in BRIKKS/brikks from feature/NOX-68 to develop
-* commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':
- Another commit message
- Commit message including a IP-number https://10.50.1.1
- A commit message")]
+ [TestCase("""
+ Merge pull request #1 in FOO/bar from feature/ISSUE-1 to develop
+ * commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':
+ Updated jQuery to v2.1.3
+ """)]
+ [TestCase("""
+ Merge pull request #45 in BRIKKS/brikks from feature/NOX-68 to develop
+ * commit '38560a7eed06e8d3f3f1aaf091befcdf8bf50fea':
+ Another commit message
+ Commit message including a IP-number https://10.50.1.1
+ A commit message
+ """)]
[TestCase("Merge branch 'release/Sprint_2.0_Holdings_Computed_Balances'")]
[TestCase("Merge branch 'develop' of http://10.0.6.3/gitblit/r/... into develop")]
[TestCase("Merge branch " + MainBranch + " of http://172.16.3.10:8082/r/asu_tk/p_sd")]
diff --git a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs
index fecaa15065..dc96e7c4f7 100644
--- a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs
+++ b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs
@@ -48,7 +48,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForPreRelease()
};
var configuration = GitFlowConfigurationBuilder.New.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("unstable")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("unstable")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -74,7 +74,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForPreRelease()
};
var configuration = GitFlowConfigurationBuilder.New.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("unstable")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("unstable")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -98,7 +98,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForStable()
};
var configuration = GitFlowConfigurationBuilder.New.WithTagPreReleaseWeight(0).Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -124,7 +124,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForStable()
};
var configuration = GitFlowConfigurationBuilder.New.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -150,7 +150,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommi
};
var configuration = GitFlowConfigurationBuilder.New.WithTagPreReleaseWeight(0).Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -175,7 +175,7 @@ public void ProvidesVariablesInContinuousDeploymentModeWithTagNamePattern()
};
var configuration = GitFlowConfigurationBuilder.New.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("pull-request")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("pull-request")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.FullSemVer.ShouldBe("1.2.3-PullRequest2.5");
@@ -200,7 +200,7 @@ public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToBranchName()
};
var configuration = GitFlowConfigurationBuilder.New.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.FullSemVer.ShouldBe("1.2.3-feature.5");
@@ -225,7 +225,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranch()
};
var configuration = GitFlowConfigurationBuilder.New.WithTagPreReleaseWeight(0).Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -252,7 +252,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomA
var configuration = GitFlowConfigurationBuilder.New.WithTagPreReleaseWeight(0)
.WithAssemblyInformationalFormat("{Major}.{Minor}.{Patch}+{CommitsSinceVersionSource}.Branch.{BranchName}.Sha.{ShortSha}")
.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
@@ -279,7 +279,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLab
};
var configuration = GitFlowConfigurationBuilder.New.Build();
- int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("main")).PreReleaseWeight;
+ var preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("main")).PreReleaseWeight;
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight);
variables.ToJson().ShouldMatchApproved(x => x.SubFolder("Approved"));
diff --git a/src/GitVersion.Core/Agents/BuildAgentResolver.cs b/src/GitVersion.Core/Agents/BuildAgentResolver.cs
index 25cbbedcac..3858e805c9 100644
--- a/src/GitVersion.Core/Agents/BuildAgentResolver.cs
+++ b/src/GitVersion.Core/Agents/BuildAgentResolver.cs
@@ -11,7 +11,7 @@ internal class BuildAgentResolver(IEnumerable buildAgents, ILog log
private ICurrentBuildAgent ResolveInternal()
{
- ICurrentBuildAgent instance = (ICurrentBuildAgent)buildAgents.Single(x => x.IsDefault);
+ var instance = (ICurrentBuildAgent)buildAgents.Single(x => x.IsDefault);
foreach (var buildAgent in buildAgents.Where(x => !x.IsDefault))
{
diff --git a/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs b/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs
index abb3d744b3..b290f254bc 100644
--- a/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs
+++ b/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs
@@ -4,5 +4,4 @@ internal interface IConfigurationSerializer
{
T Deserialize(string input);
string Serialize(object graph);
- IGitVersionConfiguration? ReadConfiguration(string input);
}
diff --git a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs
index 630d637746..214b42d7f1 100644
--- a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs
+++ b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs
@@ -20,7 +20,7 @@ private static bool TryGetSemanticVersion(this ReferenceName referenceName, out
var versionPatternRegex = RegexPatterns.Cache.GetOrAdd(GetVersionInBranchPattern(versionPatternPattern));
result = default;
- int length = 0;
+ var length = 0;
foreach (var branchPart in referenceName.WithoutOrigin.Split(GetBranchSeparator()))
{
if (string.IsNullOrEmpty(branchPart)) return false;
diff --git a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs
index 042cb37c1a..e3a2f260af 100644
--- a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs
+++ b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs
@@ -30,12 +30,6 @@ public interface IRepositoryStore
IEnumerable ExcludingBranches(IEnumerable branchesToExclude);
IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false);
- ///
- /// Find the commit where the given branch was branched from another branch.
- /// If there are multiple such commits and branches, tries to guess based on commit histories.
- ///
- BranchCommit FindCommitBranchBranchedFrom(IBranch? branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches);
-
IEnumerable FindCommitBranchesBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches);
IEnumerable GetSourceBranches(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches);
diff --git a/src/GitVersion.Core/Core/BranchRepository.cs b/src/GitVersion.Core/Core/BranchRepository.cs
index a92236d3e1..6d54eafe53 100644
--- a/src/GitVersion.Core/Core/BranchRepository.cs
+++ b/src/GitVersion.Core/Core/BranchRepository.cs
@@ -22,13 +22,11 @@ private IEnumerable GetBranches(
foreach (var branch in this.repositoryStore.Branches)
{
- if (!excludeBranches.Contains(branch))
+ if (excludeBranches.Contains(branch)) continue;
+ var branchConfiguration = configuration.GetBranchConfiguration(branch.Name);
+ if (predicate(branchConfiguration))
{
- var branchConfiguration = configuration.GetBranchConfiguration(branch.Name);
- if (predicate(branchConfiguration))
- {
- yield return branch;
- }
+ yield return branch;
}
}
}
diff --git a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs
index 973a20060c..fb5f8b6d68 100644
--- a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs
+++ b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs
@@ -28,7 +28,7 @@ private IEnumerable InnerGetBranchesContainingCommit(IGitObject commit,
var directBranchHasBeenFound = false;
log.Info("Trying to find direct branches.");
// TODO: It looks wasteful looping through the branches twice. Can't these loops be merged somehow? @asbjornu
- List branchList = branches.ToList();
+ var branchList = branches.ToList();
foreach (var branch in branchList.Where(branch => BranchTipIsNullOrCommit(branch, commit) && !IncludeTrackedBranches(branch, onlyTrackedBranches)))
{
directBranchHasBeenFound = true;
@@ -42,7 +42,7 @@ private IEnumerable InnerGetBranchesContainingCommit(IGitObject commit,
}
log.Info($"No direct branches found, searching through {(onlyTrackedBranches ? "tracked" : "all")} branches.");
- foreach (IBranch branch in branchList.Where(b => IncludeTrackedBranches(b, onlyTrackedBranches)))
+ foreach (var branch in branchList.Where(b => IncludeTrackedBranches(b, onlyTrackedBranches)))
{
log.Info($"Searching for commits reachable from '{branch}'.");
diff --git a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs
index c6a7efb553..0916dc11d3 100644
--- a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs
+++ b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs
@@ -9,7 +9,7 @@ public static TaggedSemanticVersions GetTaggedSemanticVersion(this EffectiveConf
{
effectiveConfiguration.NotNull();
- TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch;
+ var taggedSemanticVersion = TaggedSemanticVersions.OfBranch;
if (effectiveConfiguration.TrackMergeTarget)
{
@@ -21,7 +21,7 @@ public static TaggedSemanticVersions GetTaggedSemanticVersion(this EffectiveConf
taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches;
}
- if (!effectiveConfiguration.IsMainBranch && !effectiveConfiguration.IsReleaseBranch)
+ if (effectiveConfiguration is { IsMainBranch: false, IsReleaseBranch: false })
{
taggedSemanticVersion |= TaggedSemanticVersions.OfMainBranches;
}
diff --git a/src/GitVersion.Core/Core/GitPreparer.cs b/src/GitVersion.Core/Core/GitPreparer.cs
index 166dc8c600..adcad5de05 100644
--- a/src/GitVersion.Core/Core/GitPreparer.cs
+++ b/src/GitVersion.Core/Core/GitPreparer.cs
@@ -204,10 +204,11 @@ private void EnsureRepositoryHeadDuringNormalisation(string occasion, string? ex
return;
// Whoa, HEAD has moved, it shouldn't have. We need to blow up because there is a bug in normalisation
- throw new BugException($@"
-GitVersion has a bug, your HEAD has moved after repo normalisation after step '{occasion}'
-To disable this error set an environmental variable called IGNORE_NORMALISATION_GIT_HEAD_MOVE to 1
-Please run `git {GitExtensions.CreateGitLogArgs(100)}` and submit it along with your build log (with personal info removed) in a new issue at https://github.com/GitTools/GitVersion");
+ throw new BugException($"""
+ GitVersion has a bug, your HEAD has moved after repo normalisation after step '{occasion}'
+ To disable this error set an environmental variable called IGNORE_NORMALISATION_GIT_HEAD_MOVE to 1
+ Please run `git {GitExtensions.CreateGitLogArgs(100)}` and submit it along with your build log (with personal info removed) in a new issue at https://github.com/GitTools/GitVersion
+ """);
}
private void EnsureHeadIsAttachedToBranch(string? currentBranchName, AuthenticationInfo authentication)
@@ -372,7 +373,7 @@ public void EnsureLocalBranchExistsForCurrentBranch(IRemote remote, string? curr
if (currentBranch.IsNullOrEmpty()) return;
- var referencePrefix = "refs/";
+ const string referencePrefix = "refs/";
var isLocalBranch = currentBranch.StartsWith(ReferenceName.LocalBranchPrefix);
var localCanonicalName = !currentBranch.StartsWith(referencePrefix)
? ReferenceName.LocalBranchPrefix + currentBranch
diff --git a/src/GitVersion.Core/Core/GitVersionCalculateTool.cs b/src/GitVersion.Core/Core/GitVersionCalculateTool.cs
index ade7499fae..72703484ec 100644
--- a/src/GitVersion.Core/Core/GitVersionCalculateTool.cs
+++ b/src/GitVersion.Core/Core/GitVersionCalculateTool.cs
@@ -38,7 +38,7 @@ public GitVersionVariables CalculateVersionVariables()
var versionVariables = !gitVersionOptions.Settings.NoCache
? this.gitVersionCacheProvider.LoadVersionVariablesFromDiskCache()
- : default;
+ : null;
if (versionVariables != null) return versionVariables;
diff --git a/src/GitVersion.Core/Core/GitVersionContextFactory.cs b/src/GitVersion.Core/Core/GitVersionContextFactory.cs
index a306e5c045..ffb36e69ba 100644
--- a/src/GitVersion.Core/Core/GitVersionContextFactory.cs
+++ b/src/GitVersion.Core/Core/GitVersionContextFactory.cs
@@ -36,7 +36,7 @@ public GitVersionContext Create(GitVersionOptions gitVersionOptions)
currentBranch = branchForCommit ?? currentBranch;
}
- bool isCurrentCommitTagged = this.taggedSemanticVersionRepository.GetTaggedSemanticVersions(
+ var isCurrentCommitTagged = this.taggedSemanticVersionRepository.GetTaggedSemanticVersions(
tagPrefix: configuration.TagPrefixPattern,
format: configuration.SemanticVersionFormat,
ignore: configuration.Ignore
diff --git a/src/GitVersion.Core/Core/MergeBaseFinder.cs b/src/GitVersion.Core/Core/MergeBaseFinder.cs
index f4ec183efe..a281a01ce7 100644
--- a/src/GitVersion.Core/Core/MergeBaseFinder.cs
+++ b/src/GitVersion.Core/Core/MergeBaseFinder.cs
@@ -35,7 +35,7 @@ internal class MergeBaseFinder(IRepositoryStore repositoryStore, ILog log)
if (commitToFindCommonBase?.Parents.Contains(commit) == true)
{
- commitToFindCommonBase = commitToFindCommonBase.Parents.First();
+ commitToFindCommonBase = commitToFindCommonBase.Parents[0];
}
if (commitToFindCommonBase == null)
diff --git a/src/GitVersion.Core/Core/RegexPatterns.cs b/src/GitVersion.Core/Core/RegexPatterns.cs
index 4e13455b95..2a41378836 100644
--- a/src/GitVersion.Core/Core/RegexPatterns.cs
+++ b/src/GitVersion.Core/Core/RegexPatterns.cs
@@ -4,6 +4,7 @@
namespace GitVersion.Core;
+[SuppressMessage("Performance", "SYSLIB1045:Convert to \'GeneratedRegexAttribute\'.")]
internal static class RegexPatterns
{
private const RegexOptions Options = RegexOptions.IgnoreCase | RegexOptions.Compiled;
@@ -64,14 +65,22 @@ static RegexPatterns()
internal static class Common
{
- public static Regex SwitchArgumentRegex { get; } = new(@"/\w+:", Options);
- public static Regex ObscurePasswordRegex { get; } = new("(https?://)(.+)(:.+@)", Options);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string SwitchArgumentRegexPattern = @"/\w+:";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string ObscurePasswordRegexPattern = "(https?://)(.+)(:.+@)";
- // This regex matches an expression to replace.
+ // this regex matches an expression to replace.
// - env:ENV name OR a member name
// - optional fallback value after " ?? "
// - the fallback value should be a quoted string, but simple unquoted text is allowed for back compat
- public static Regex ExpandTokensRegex { get; } = new("""{((env:(?\w+))|(?\w+))(\s+(\?\?)??\s+((?\w+)|"(?.*)"))??}""", Options);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string ExpandTokensRegexPattern = """{((env:(?\w+))|(?\w+))(\s+(\?\?)??\s+((?\w+)|"(?.*)"))??}""";
+
+ public static Regex SwitchArgumentRegex { get; } = new(SwitchArgumentRegexPattern, Options);
+ public static Regex ObscurePasswordRegex { get; } = new(ObscurePasswordRegexPattern, Options);
+ public static Regex ExpandTokensRegex { get; } = new(ExpandTokensRegexPattern, Options);
}
internal static class Configuration
@@ -120,24 +129,66 @@ internal static class Configuration
internal static class MergeMessage
{
- public static Regex DefaultMergeMessageRegex { get; } = new(@"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*", Options);
- public static Regex SmartGitMergeMessageRegex { get; } = new(@"^Finish (?[^\s]*)(?: into (?[^\s]*))*", Options);
- public static Regex BitBucketPullMergeMessageRegex { get; } = new(@"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)", Options);
- public static Regex BitBucketPullv7MergeMessageRegex { get; } = new(@"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)", Options);
- public static Regex BitBucketCloudPullMergeMessageRegex { get; } = new(@"^Merged in (?[^\s]*) \(pull request #(?\d+)\)", Options);
- public static Regex GitHubPullMergeMessageRegex { get; } = new(@"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*", Options);
- public static Regex RemoteTrackingMergeMessageRegex { get; } = new(@"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*", Options);
- public static Regex AzureDevOpsPullMergeMessageRegex { get; } = new(@"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)", Options);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string DefaultMergeMessageRegexPattern = @"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string SmartGitMergeMessageRegexPattern = @"^Finish (?[^\s]*)(?: into (?[^\s]*))*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string BitBucketPullMergeMessageRegexPattern = @"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string BitBucketPullv7MergeMessageRegexPattern = @"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string BitBucketCloudPullMergeMessageRegexPattern = @"^Merged in (?[^\s]*) \(pull request #(?\d+)\)";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string GitHubPullMergeMessageRegexPattern = @"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string RemoteTrackingMergeMessageRegexPattern = @"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AzureDevOpsPullMergeMessageRegexPattern = @"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)";
+
+ public static Regex DefaultMergeMessageRegex { get; } = new(DefaultMergeMessageRegexPattern, Options);
+ public static Regex SmartGitMergeMessageRegex { get; } = new(SmartGitMergeMessageRegexPattern, Options);
+ public static Regex BitBucketPullMergeMessageRegex { get; } = new(BitBucketPullMergeMessageRegexPattern, Options);
+ public static Regex BitBucketPullv7MergeMessageRegex { get; } = new(BitBucketPullv7MergeMessageRegexPattern, Options);
+ public static Regex BitBucketCloudPullMergeMessageRegex { get; } = new(BitBucketCloudPullMergeMessageRegexPattern, Options);
+ public static Regex GitHubPullMergeMessageRegex { get; } = new(GitHubPullMergeMessageRegexPattern, Options);
+ public static Regex RemoteTrackingMergeMessageRegex { get; } = new(RemoteTrackingMergeMessageRegexPattern, Options);
+ public static Regex AzureDevOpsPullMergeMessageRegex { get; } = new(AzureDevOpsPullMergeMessageRegexPattern, Options);
}
internal static class Output
{
- public static Regex AssemblyVersionRegex { get; } = new(@"AssemblyVersion(Attribute)?\s*\(.*\)\s*", Options);
- public static Regex AssemblyInfoVersionRegex { get; } = new(@"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*", Options);
- public static Regex AssemblyFileVersionRegex { get; } = new(@"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*", Options);
- public static Regex CsharpAssemblyAttributeRegex { get; } = new(@"(\s*\[\s*assembly:\s*(?:.*)\s*\]\s*$(\r?\n)?)", Options | RegexOptions.Multiline);
- public static Regex FsharpAssemblyAttributeRegex { get; } = new(@"(\s*\[\s*\\s*\]\s*$(\r?\n)?)", Options | RegexOptions.Multiline);
- public static Regex VisualBasicAssemblyAttributeRegex { get; } = new(@"(\s*\\s*$(\r?\n)?)", Options | RegexOptions.Multiline);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AssemblyVersionRegexPattern = @"AssemblyVersion(Attribute)?\s*\(.*\)\s*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AssemblyInfoVersionRegexPattern = @"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AssemblyFileVersionRegexPattern = @"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string CsharpAssemblyAttributeRegexPattern = @"(\s*\[\s*assembly:\s*(?:.*)\s*\]\s*$(\r?\n)?)";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string FsharpAssemblyAttributeRegexPattern = @"(\s*\[\s*\\s*\]\s*$(\r?\n)?)";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string VisualBasicAssemblyAttributeRegexPattern = @"(\s*\\s*$(\r?\n)?)";
+
+ public static Regex AssemblyVersionRegex { get; } = new(AssemblyVersionRegexPattern, Options);
+ public static Regex AssemblyInfoVersionRegex { get; } = new(AssemblyInfoVersionRegexPattern, Options);
+ public static Regex AssemblyFileVersionRegex { get; } = new(AssemblyFileVersionRegexPattern, Options);
+ public static Regex CsharpAssemblyAttributeRegex { get; } = new(CsharpAssemblyAttributeRegexPattern, Options | RegexOptions.Multiline);
+ public static Regex FsharpAssemblyAttributeRegex { get; } = new(FsharpAssemblyAttributeRegexPattern, Options | RegexOptions.Multiline);
+ public static Regex VisualBasicAssemblyAttributeRegex { get; } = new(VisualBasicAssemblyAttributeRegexPattern, Options | RegexOptions.Multiline);
}
internal static class VersionCalculation
@@ -162,74 +213,104 @@ internal static class VersionCalculation
internal static class SemanticVersion
{
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string ParseStrictRegexPattern = @"^(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string ParseLooseRegexPattern = @"^(?(?\d+)(\.(?\d+))?(\.(?\d+))?)(\.(?\d+))?(-(?[^\+]*))?(\+(?.*))?$";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string ParseBuildMetaDataRegexPattern = @"(?\d+)?(\.?Branch(Name)?\.(?[^\.]+))?(\.?Sha?\.(?[^\.]+))?(?.*)";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string FormatBuildMetaDataRegexPattern = "[^0-9A-Za-z-.]";
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string ParsePreReleaseTagRegexPattern = @"(?.*?)\.?(?\d+)?$";
+
// uses the git-semver spec https://github.com/semver/semver/blob/master/semver.md
- public static Regex ParseStrictRegex { get; } = new(
- @"^(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$",
- Options);
+ public static Regex ParseStrictRegex { get; } = new(ParseStrictRegexPattern, Options);
- public static Regex ParseLooseRegex { get; } = new(
- @"^(?(?\d+)(\.(?\d+))?(\.(?\d+))?)(\.(?\d+))?(-(?[^\+]*))?(\+(?.*))?$",
- Options);
+ public static Regex ParseLooseRegex { get; } = new(ParseLooseRegexPattern, Options);
- public static Regex ParseBuildMetaDataRegex { get; } = new(
- @"(?\d+)?(\.?Branch(Name)?\.(?[^\.]+))?(\.?Sha?\.(?[^\.]+))?(?.*)",
- Options);
+ public static Regex ParseBuildMetaDataRegex { get; } = new(ParseBuildMetaDataRegexPattern, Options);
- public static Regex FormatBuildMetaDataRegex { get; } = new("[^0-9A-Za-z-.]",
- Options);
+ public static Regex FormatBuildMetaDataRegex { get; } = new(FormatBuildMetaDataRegexPattern, Options);
- public static Regex ParsePreReleaseTagRegex { get; } = new(
- @"(?.*?)\.?(?\d+)?$",
- Options);
+ public static Regex ParsePreReleaseTagRegex { get; } = new(ParsePreReleaseTagRegexPattern, Options);
}
internal static class AssemblyVersion
{
internal static class CSharp
{
- public static Regex TriviaRegex { get; } = new(@"
- /\*(.*?)\*/ # Block comments: matches /* ... */
- |//(.*?)\r?\n # Line comments: matches // ... followed by a newline
- |""((\\[^\n]|[^""\n])*)"" # Strings: matches "" ... "" including escaped quotes",
- RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | Options);
-
- public static Regex AttributeRegex { get; } = new(@"(?x) # IgnorePatternWhitespace
-\[\s*assembly\s*:\s* # The [assembly: part
-(System\s*\.\s*Reflection\s*\.\s*)? # The System.Reflection. part (optional)
-Assembly(File|Informational)?Version # The attribute AssemblyVersion, AssemblyFileVersion, or AssemblyInformationalVersion
-\s*\(\s*\)\s*\] # End brackets ()]",
- RegexOptions.IgnorePatternWhitespace | Options);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string TriviaRegexPattern =
+ """
+ /\*(.*?)\*/ # Block comments: matches /* ... */
+ |//(.*?)\r?\n # Line comments: matches // ... followed by a newline
+ |"((\\[^\n]|[^"\n])*)" # Strings: matches " ... " including escaped quotes
+ """;
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AttributeRegexPattern =
+ """
+ (?x) # IgnorePatternWhitespace
+ \[\s*assembly\s*:\s* # The [assembly: part
+ (System\s*\.\s*Reflection\s*\.\s*)? # The System.Reflection. part (optional)
+ Assembly(File|Informational)?Version # The attribute AssemblyVersion, AssemblyFileVersion, or AssemblyInformationalVersion
+ \s*\(\s*\)\s*\] # End brackets ()]
+ """;
+
+ public static Regex TriviaRegex { get; } = new(TriviaRegexPattern, RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | Options);
+ public static Regex AttributeRegex { get; } = new(AttributeRegexPattern, RegexOptions.IgnorePatternWhitespace | Options);
}
internal static class FSharp
{
- public static Regex TriviaRegex { get; } = new(@"
- /\*(.*?)\*/ # Block comments: matches /* ... */
- |//(.*?)\r?\n # Line comments: matches // ... followed by a newline
- |""((\\[^\n]|[^""\n])*)"" # Strings: matches "" ... "" including escaped quotes",
- RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | Options);
-
- public static Regex AttributeRegex { get; } = new(@"(?x) # IgnorePatternWhitespace
-\[\s*<\s*assembly\s*:\s* # The [\s*\] # End brackets ()>]",
- RegexOptions.IgnorePatternWhitespace | Options);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string TriviaRegexPattern =
+ """
+ /\*(.*?)\*/ # Block comments: matches /* ... */
+ |//(.*?)\r?\n # Line comments: matches // ... followed by a newline
+ |"((\\[^\n]|[^"\n])*)" # Strings: matches " ... " including escaped quotes
+ """;
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AttributeRegexPattern =
+ """
+ (?x) # IgnorePatternWhitespace
+ \[\s*<\s*assembly\s*:\s* # The [\s*\] # End brackets ()>]
+ """;
+
+ public static Regex TriviaRegex { get; } = new(TriviaRegexPattern, RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | Options);
+ public static Regex AttributeRegex { get; } = new(AttributeRegexPattern, RegexOptions.IgnorePatternWhitespace | Options);
}
internal static class VisualBasic
{
- public static Regex TriviaRegex { get; } = new(@"
- '(.*?)\r?\n # Line comments: matches // ... followed by a newline
- |""((\\[^\n]|[^""\n])*)"" # Strings: matches "" ... "" including escaped quotes",
- RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | Options);
-
- public static Regex AttributeRegex { get; } = new(@"(?x) # IgnorePatternWhitespace
-\<\s*Assembly\s*:\s* # The # End brackets ()>",
- RegexOptions.IgnorePatternWhitespace | Options);
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string TriviaRegexPattern =
+ """
+ '(.*?)\r?\n # Line comments: matches // ... followed by a newline
+ |"((\\[^\n]|[^"\n])*)" # Strings: matches " ... " including escaped quotes
+ """;
+
+ [StringSyntax(StringSyntaxAttribute.Regex)]
+ private const string AttributeRegexPattern =
+ """
+ (?x) # IgnorePatternWhitespace
+ \<\s*Assembly\s*:\s* # The # End brackets ()>
+ """;
+
+ public static Regex TriviaRegex { get; } = new(TriviaRegexPattern, RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace | Options);
+ public static Regex AttributeRegex { get; } = new(AttributeRegexPattern, RegexOptions.IgnorePatternWhitespace | Options);
}
}
}
diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs
index d02f3d767d..ee018444fb 100644
--- a/src/GitVersion.Core/Core/RepositoryStore.cs
+++ b/src/GitVersion.Core/Core/RepositoryStore.cs
@@ -148,24 +148,20 @@ public IEnumerable GetSourceBranches(
foreach (var branchGrouping in commitBranches.GroupBy(element => element.Commit, element => element.Branch))
{
- bool referenceMatchFound = false;
+ var referenceMatchFound = false;
var referenceNames = referenceLookup[branchGrouping.Key.Sha].Select(element => element.Name).ToHashSet();
foreach (var item in branchGrouping)
{
- if (referenceNames.Contains(item.Name))
- {
- if (returnedBranches.Add(item)) yield return item;
- referenceMatchFound = true;
- }
+ if (!referenceNames.Contains(item.Name)) continue;
+ if (returnedBranches.Add(item)) yield return item;
+ referenceMatchFound = true;
}
- if (!referenceMatchFound)
+ if (referenceMatchFound) continue;
+ foreach (var item in branchGrouping)
{
- foreach (var item in branchGrouping)
- {
- if (returnedBranches.Add(item)) yield return item;
- }
+ if (returnedBranches.Add(item)) yield return item;
}
}
}
@@ -220,7 +216,7 @@ public IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit c
};
var commits = FilterCommits(filter).ToArray();
- return ignore.Filter(commits).ToList();
+ return [.. ignore.Filter(commits)];
}
public IReadOnlyList GetCommitsReacheableFromHead(ICommit? headCommit, IIgnoreConfiguration ignore)
@@ -232,7 +228,7 @@ public IReadOnlyList GetCommitsReacheableFromHead(ICommit? headCommit,
};
var commits = FilterCommits(filter).ToArray();
- return ignore.Filter(commits).ToList();
+ return [.. ignore.Filter(commits)];
}
public IReadOnlyList GetCommitsReacheableFrom(IGitObject commit, IBranch branch)
@@ -240,7 +236,7 @@ public IReadOnlyList GetCommitsReacheableFrom(IGitObject commit, IBranc
var filter = new CommitFilter { IncludeReachableFrom = branch };
var commits = FilterCommits(filter);
- return commits.Where(c => c.Sha == commit.Sha).ToList();
+ return [.. commits.Where(c => c.Sha == commit.Sha)];
}
public ICommit? GetForwardMerge(ICommit? commitToFindCommonBase, ICommit? findMergeBase)
@@ -268,18 +264,14 @@ public bool IsCommitOnBranch(ICommit? baseVersionSource, IBranch branch, ICommit
private IBranch? FindBranch(string branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.EquivalentTo(branchName));
- private IEnumerable FindCommitBranchesBranchedFrom(
+ private List FindCommitBranchesBranchedFrom(
IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches)
{
using (this.log.IndentLog($"Finding branches source of '{branch}'"))
{
- if (branch.Tip == null)
- {
- this.log.Warning($"{branch} has no tip.");
- return [];
- }
-
- return new MergeCommitFinder(this, configuration, excludedBranches, this.log).FindMergeCommitsFor(branch).ToList();
+ if (branch.Tip != null) return [.. new MergeCommitFinder(this, configuration, excludedBranches, this.log).FindMergeCommitsFor(branch)];
+ this.log.Warning($"{branch} has no tip.");
+ return [];
}
}
}
diff --git a/src/GitVersion.Core/Core/SourceBranchFinder.cs b/src/GitVersion.Core/Core/SourceBranchFinder.cs
index 5eccba40bf..5d8b4095d3 100644
--- a/src/GitVersion.Core/Core/SourceBranchFinder.cs
+++ b/src/GitVersion.Core/Core/SourceBranchFinder.cs
@@ -34,7 +34,7 @@ public bool IsSourceBranch(INamedReference sourceBranchCandidate)
private static IEnumerable GetSourceBranchRegexes(INamedReference branch, IGitVersionConfiguration configuration)
{
var currentBranchConfig = configuration.GetBranchConfiguration(branch.Name);
- if (currentBranchConfig.SourceBranches == null)
+ if (currentBranchConfig is { SourceBranches: null })
{
yield return RegexPatterns.Cache.GetOrAdd(".*");
}
diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs
index f6f0de0459..60bf291f6b 100644
--- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs
+++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs
@@ -25,7 +25,7 @@ public ILookup GetTaggedSemanticVersionsOfBranc
branch.NotNull();
tagPrefix ??= string.Empty;
- bool isCached = true;
+ var isCached = true;
var result = taggedSemanticVersionsOfBranchCache.GetOrAdd(new(branch, tagPrefix, format), _ =>
{
isCached = false;
@@ -66,11 +66,11 @@ public ILookup GetTaggedSemanticVersionsOfMerge
branch.NotNull();
tagPrefix ??= string.Empty;
- bool isCached = true;
+ var isCached = true;
var result = taggedSemanticVersionsOfMergeTargetCache.GetOrAdd(new(branch, tagPrefix, format), _ =>
{
isCached = false;
- return GetElements().Distinct().OrderByDescending(element => element.Key.When).ToList();
+ return [.. GetElements().Distinct().OrderByDescending(element => element.Key.When)];
});
if (isCached)
@@ -106,11 +106,11 @@ public ILookup