From fd392f51feee0b06e64f613097e44eea115067d4 Mon Sep 17 00:00:00 2001 From: tiulpin Date: Mon, 5 Dec 2022 17:08:30 +0100 Subject: [PATCH] Set up baseline --- .github/workflows/code_quality.yml | 2 + qodana.sarif.json | 14799 +++++++++++++++++++++++++++ 2 files changed, 14801 insertions(+) create mode 100644 qodana.sarif.json diff --git a/.github/workflows/code_quality.yml b/.github/workflows/code_quality.yml index c47418a1..18a95745 100644 --- a/.github/workflows/code_quality.yml +++ b/.github/workflows/code_quality.yml @@ -16,5 +16,7 @@ jobs: fetch-depth: 0 - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2022.2.4 + with: + args: --baseline,qodana.sarif.json env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} diff --git a/qodana.sarif.json b/qodana.sarif.json new file mode 100644 index 00000000..8d31a95a --- /dev/null +++ b/qodana.sarif.json @@ -0,0 +1,14799 @@ +{ + "$schema": "https://raw.githubusercontent.com/schemastore/schemastore/master/src/schemas/json/sarif-2.1.0-rtm.5.json", + "version": "2.1.0", + "runs": [ + { + "tool": { + "driver": { + "name": "QDGO", + "fullName": "Qodana for Go", + "version": "223.7255.10", + "rules": [], + "taxa": [ + { + "id": "EditorConfig", + "name": "EditorConfig" + }, + { + "id": "Go", + "name": "Go" + }, + { + "id": "Go/Probable bugs", + "name": "Probable bugs", + "relationships": [ + { + "target": { + "id": "Go", + "index": 1, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Go/General", + "name": "General", + "relationships": [ + { + "target": { + "id": "Go", + "index": 1, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Go/Declaration redundancy", + "name": "Declaration redundancy", + "relationships": [ + { + "target": { + "id": "Go", + "index": 1, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XML", + "name": "XML" + }, + { + "id": "YAML", + "name": "YAML" + }, + { + "id": "JSON and JSON5", + "name": "JSON and JSON5" + }, + { + "id": "RegExp", + "name": "RegExp" + }, + { + "id": "CSS", + "name": "CSS" + }, + { + "id": "HTML", + "name": "HTML" + }, + { + "id": "CSS/Probable bugs", + "name": "Probable bugs", + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "General", + "name": "General" + }, + { + "id": "HTML/Accessibility", + "name": "Accessibility", + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CSS/Invalid elements", + "name": "Invalid elements", + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Structural search", + "name": "Structural search" + }, + { + "id": "Go/Code style issues", + "name": "Code style issues", + "relationships": [ + { + "target": { + "id": "Go", + "index": 1, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Go modules", + "name": "Go modules" + }, + { + "id": "Go modules/General", + "name": "General", + "relationships": [ + { + "target": { + "id": "Go modules", + "index": 17, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CSS/Code style issues", + "name": "Code style issues", + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Go Template", + "name": "Go Template" + }, + { + "id": "Go Template/General", + "name": "General", + "relationships": [ + { + "target": { + "id": "Go Template", + "index": 20, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RELAX NG", + "name": "RELAX NG" + }, + { + "id": "Go/Control flow issues", + "name": "Control flow issues", + "relationships": [ + { + "target": { + "id": "Go", + "index": 1, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Proofreading", + "name": "Proofreading" + }, + { + "id": "Internationalization", + "name": "Internationalization" + }, + { + "id": "Go modules/Declaration redundancy", + "name": "Declaration redundancy", + "relationships": [ + { + "target": { + "id": "Go modules", + "index": 17, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Version control", + "name": "Version control" + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + "extensions": [ + { + "name": "org.editorconfig.editorconfigjetbrains", + "version": "223.7255", + "rules": [ + { + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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}'. The braces are needed only if there are two and more, for example: '{foo,bar}'", + "markdown": "Reports pattern lists that are either empty `{}` or contain just one pattern, for example `{foo}`. The braces are needed only if there are two and more, for example: `{foo,bar}`" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEncoding", + "shortDescription": { + "text": "File encoding doesn't match EditorConfig charset" + }, + "fullDescription": { + "text": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file.", + "markdown": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 0, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.jetbrains.plugins.go", + "version": "223.7255", + "rules": [ + { + "id": "GoVetCopyLock", + "shortDescription": { + "text": "Locks mistakenly passed by value" + }, + "fullDescription": { + "text": "Reports locks that are mistakenly passed by values. Accidentally copying a value containing a lock may cause both copies to work incorrectly. Generally, such values should be referred to through a pointer. A lock here means a type implementing 'sync.Locker', such as 'sync.Mutex' or 'sync.WaitGroup'. Example: 'type SafeInt struct {\n m sync.Mutex\n i int\n}\n\nfunc (s SafeInt) Inc() { // mutex is copied\n s.m.Lock()\n s.i++\n s.m.Unlock()\n}' After the Add pointer quick-fix is applied: 'type SafeInt struct {\n m sync.Mutex\n i int\n}\n\nfunc (s *SafeInt) Inc() {\n s.m.Lock()\n s.i++\n s.m.Unlock()\n}'", + "markdown": "Reports locks that are mistakenly passed by values.\n\nAccidentally copying a value containing a lock may cause both copies to work incorrectly. Generally, such values should be\nreferred to through a pointer. A lock here means a type implementing `sync.Locker`, such as `sync.Mutex`\nor `sync.WaitGroup`.\n\nExample:\n\n type SafeInt struct {\n m sync.Mutex\n i int\n }\n\n func (s SafeInt) Inc() { // mutex is copied\n s.m.Lock()\n s.i++\n s.m.Unlock()\n }\n\nAfter the **Add pointer** quick-fix is applied:\n\n type SafeInt struct {\n m sync.Mutex\n i int\n }\n\n func (s *SafeInt) Inc() {\n s.m.Lock()\n s.i++\n s.m.Unlock()\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnnecessarilyExportedIdentifiers", + "shortDescription": { + "text": "Unnecessarily exported identifier" + }, + "fullDescription": { + "text": "Reports exported identifiers that are used only in the package where they are defined but are not used in other packages. Making them exported is redundant and may clutter the API of the package.", + "markdown": "Reports exported identifiers that are used only in the package where they are defined but are not used in other packages.\n\nMaking them exported is redundant and may clutter the API of the package." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetImpossibleInterfaceToInterfaceAssertion", + "shortDescription": { + "text": "Impossible interface type assertion" + }, + "fullDescription": { + "text": "Reports impossible interface-to-interface type assertions. Checks for type assertions 'v.(T)' and corresponding type-switch cases in which the static type 'V' of 'v' is the interface that cannot possibly implement the target interface 'T'. This occurs when 'V' and 'T' contain methods with the same name but different signatures. Example: 'var v interface {\n Read()\n}\n_ = v.(io.Reader)' The 'Read' method in 'v' has a different signature than the 'Read' method in 'io.Reader', so this assertion cannot succeed. This inspection only reports if the language version is 1.15 or higher.", + "markdown": "Reports impossible interface-to-interface type assertions.\n\nChecks for type assertions `v.(T)` and corresponding type-switch cases\nin which the static type `V` of `v` is the interface that\ncannot possibly implement the target interface `T`. This occurs when\n`V` and `T` contain methods with the same name but\ndifferent signatures.\n\nExample:\n\n var v interface {\n Read()\n }\n _ = v.(io.Reader)\n\nThe `Read` method in `v` has a different signature than\nthe `Read` method in `io.Reader`, so this assertion\ncannot succeed.\n\nThis inspection only reports if the language version is 1.15 or higher." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoIrregularIota", + "shortDescription": { + "text": "Irregular usage of 'iota'" + }, + "fullDescription": { + "text": "Reports irregular usage of 'iota' within a constant declaration. The 'iota' identifier is reset for every constant declaration and automatically incremented for every constant specification. Within one constant specification, the identifier keeps its value. Explicitly referring to 'iota' does not reset the counter. For details, see Iota in the Go specification. This inspection is triggered if two constant specifications have a textually identical expression list containing at least one reference to 'iota' and there are exclusively constant specifications without an expression list in between them. Consider omitting the redundant expression list or writing out the expression list every time. Example: 'const (\n a = iota // 0\n b // 1\n c = iota // 2\n)' Triggers the inspection as the 'iota' in the definition of 'c' is redundant. Example: 'const (\n a, aa = iota, iota // 0, 0\n b, bb // 1, 1\n c, cc = iota + 40, iota // 42, 2\n)' Does not trigger the inspection as none of the expression lists is redundant.", + "markdown": "Reports irregular usage of `iota` within a constant declaration.\n\nThe `iota` identifier is reset for every constant declaration and automatically incremented for every constant specification.\nWithin one constant specification, the identifier keeps its value. Explicitly referring to `iota` does not reset the counter.\n\nFor details, see [Iota](https://go.dev/ref/spec#Iota) in the Go specification.\n\nThis inspection is triggered if two constant specifications have a textually identical expression list containing at least one reference to `iota`\nand there are exclusively constant specifications without an expression list in between them.\n\nConsider omitting the redundant expression list or writing out the expression list every time.\n\nExample:\n\n const (\n a = iota // 0\n b // 1\n c = iota // 2\n )\n\nTriggers the inspection as the `iota` in the definition of `c` is redundant.\n\nExample:\n\n const (\n a, aa = iota, iota // 0, 0\n b, bb // 1, 1\n c, cc = iota + 40, iota // 42, 2\n )\n\nDoes not trigger the inspection as none of the expression lists is redundant." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedTypeParameter", + "shortDescription": { + "text": "Unused type parameter" + }, + "fullDescription": { + "text": "Reports unused type parameters. 'func main() {\n printAll(\n 42,\n \"bird\",\n )\n}\n\nfunc printAll[I int, S string](\n i I,\n s string,\n) {\n fmt.Println(i)\n fmt.Println(s)\n}' The printAll function has two type parameters 'I' and 'S' but uses only the first of them. Therefore, the 'S string' is grayed out.", + "markdown": "Reports unused type parameters.\n\n func main() {\n printAll(\n 42,\n \"bird\",\n )\n }\n\n func printAll[I int, S string](\n i I,\n s string,\n ) {\n fmt.Println(i)\n fmt.Println(s)\n }\n\nThe **printAll** function has two type parameters `I` and `S` but uses only the first of them.\nTherefore, the `S string` is grayed out." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetStructTag", + "shortDescription": { + "text": "Malformed struct tag" + }, + "fullDescription": { + "text": "Reports struct tags that do not conform to Go conventions for struct tags. According to these conventions, tag strings are a concatenation of optionally space-separated 'key:\"value\"' pairs. Each key is a non-empty string consisting of non-control characters other than 'space (U+0020 ' ')', 'quote (U+0022 '\"')', and 'colon (U+003A ':')'. Each value is quoted using 'U+0022 '\"'' characters and Go string literal syntax. Also, the inspection checks that fields with tags are exported. Example of a valid tag: 'type Example struct {\n Field int `json:\"field\" xml:\"demo\"`\n}'", + "markdown": "Reports struct tags that do not conform to [Go conventions for struct tags](https://golang.org/pkg/reflect/#StructTag).\n\nAccording to these conventions, tag strings are a concatenation of optionally space-separated `key:\"value\"` pairs. Each\nkey is a non-empty string consisting of non-control characters other than `space (U+0020 ' ')`, `quote (U+0022 '\"')`,\nand\n`colon (U+003A ':')`. Each value is quoted using `U+0022 '\"'` characters and Go string literal syntax.\n\nAlso, the inspection checks that fields with tags are exported.\n\nExample of a valid tag:\n\n type Example struct {\n Field int `json:\"field\" xml:\"demo\"`\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantTypeDeclInCompositeLit", + "shortDescription": { + "text": "Redundant types in composite literals" + }, + "fullDescription": { + "text": "Reports redundant type declarations in composite literals. Example: 'nums := [][]int{[]int{1}, []int{2}}' We have a slice of slices of the 'int' type. In this case, you can use a shorter definition. You can fix this code manually or use the Delete redundant type quick-fix. After the quick-fix is applied, the code looks as follows: 'nums := [][]int{{1},{2}}' For more information about composite literals, see Go Language Specification: Composite Literals at golang.org.", + "markdown": "Reports redundant type declarations in composite literals.\n\nExample:\n\n nums := [][]int{[]int{1}, []int{2}}\n\nWe have a slice of slices of the `int` type. In this case, you can use a shorter definition. You can fix this code manually or\nuse the **Delete redundant type** quick-fix. After the quick-fix is applied, the code looks as follows:\n\n nums := [][]int{{1},{2}}\n\nFor more information about composite literals, see [Go Language Specification:\nComposite Literals at golang.org](https://golang.org/ref/spec#Composite_literals)." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoShadowedVar", + "shortDescription": { + "text": "Shadowing variable" + }, + "fullDescription": { + "text": "Reports declarations of variables that overlap with the declarations in the outer scope. As the meaning of the variable depends on the scope in that case, it may create confusion and lead to unintended consequences. Example: 'for i := 0; i < len(nums); i++ {\n for i := 0; i < len(nums); i++ {\n }\n }' The 'i' variable in the embedded loop is shadowed. To get rid of shadowing, consider renaming the variable in the embedded loop. 'for i := 0; i < len(nums); i++ {\n for j := 0; j < len(nums); j++ {\n }\n }'", + "markdown": "Reports declarations of variables that overlap with the declarations in the outer scope.\n\nAs the meaning of the variable depends on the scope in that case, it may create confusion and lead to unintended consequences.\n\nExample:\n\n for i := 0; i < len(nums); i++ {\n for i := 0; i < len(nums); i++ {\n }\n }\n\nThe `i` variable in the embedded loop is shadowed. To get rid of shadowing, consider renaming the variable\nin the embedded loop.\n\n for i := 0; i < len(nums); i++ {\n for j := 0; j < len(nums); j++ {\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetFailNowInNotTestGoroutine", + "shortDescription": { + "text": "'FailNow' in a non-test goroutine" + }, + "fullDescription": { + "text": "Reports calls to 'testing.T.FailNow' and similar methods located in goroutines in test files. Methods like 'FailNow' call 'runtime.Goexit' and stop the calling goroutine, not the test. Therefore, they must only be called from the goroutine that runs the test or benchmark. For more information about 'FailNow', see func (*T) FailNow at golang.org. Example: 'func TestFoo(t *testing.T) {\n go func() {\n t.Fatal(\"oops\") //exits goroutine, not TestFoo\n }()\n}' After the Replace with 'Error' and 'return' quick-fix is applied: 'func TestFoo(t *testing.T) {\n go func() {\n t.Error(\"oops\")\n return\n }()\n}'", + "markdown": "Reports calls to `testing.T.FailNow` and similar methods located in goroutines in test files.\n\nMethods like `FailNow` call `runtime.Goexit` and stop the calling goroutine, not the test.\nTherefore, they must only be called from the goroutine that runs the test or benchmark.\n\nFor more information about `FailNow`, see [func (\\*T) FailNow at\ngolang.org](https://golang.org/pkg/testing/#T.FailNow).\n\nExample:\n\n func TestFoo(t *testing.T) {\n go func() {\n t.Fatal(\"oops\") //exits goroutine, not TestFoo\n }()\n }\n\nAfter the **Replace with 'Error' and 'return'** quick-fix is applied:\n\n func TestFoo(t *testing.T) {\n go func() {\n t.Error(\"oops\")\n return\n }()\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantImportAlias", + "shortDescription": { + "text": "Redundant import alias" + }, + "fullDescription": { + "text": "Reports aliases of imported packages that may be omitted. Usually, such aliases equal to the names of the imported packages, so aliases have no effect and one can use package names directly. Example: 'import fmt \"fmt\"' The 'fmt' alias duplicates the package name that is also named '\"fmt\"'. To delete the alias, use the Delete import alias quick-fix. After the quick-fix is applied: 'import \"fmt\"'", + "markdown": "Reports aliases of imported packages that may be omitted.\n\nUsually, such aliases equal to the names of the imported packages,\nso aliases have no effect and one can use package names directly.\n\nExample:\n\n import fmt \"fmt\"\n\nThe `fmt` alias duplicates the package name that is also named `\"fmt\"`. To delete the alias,\nuse the **Delete import alias** quick-fix.\n\nAfter the quick-fix is applied:\n\n import \"fmt\"\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantParens", + "shortDescription": { + "text": "Redundant parentheses" + }, + "fullDescription": { + "text": "Reports redundant parentheses in expressions and types. Example: 'func _(x (int), y ((string))) {\n}\nfunc _() {\n _ = (1 + 1)\n _ = (((1 + 1)))\n _ = (((1 + 1))) + (((2 + 2)))\n}' After the Unwrap parentheses quick-fix is applied: 'func _(x int, y string) {\n}\nfunc _() {\n _ = 1 + 1\n _ = 1 + 1\n _ = (1 + 1) + (2 + 2)\n}'", + "markdown": "Reports redundant parentheses in expressions and types.\n\nExample:\n\n func _(x (int), y ((string))) {\n }\n func _() {\n _ = (1 + 1)\n _ = (((1 + 1)))\n _ = (((1 + 1))) + (((2 + 2)))\n }\n\nAfter the **Unwrap parentheses** quick-fix is applied:\n\n func _(x int, y string) {\n }\n func _() {\n _ = 1 + 1\n _ = 1 + 1\n _ = (1 + 1) + (2 + 2)\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedParameter", + "shortDescription": { + "text": "Unused parameter" + }, + "fullDescription": { + "text": "Reports unused function parameters. 'func main() {\n printAll(\n 42,\n \"bird\",\n )\n}\n\nfunc printAll(\n i int,\n s string,\n) {\n fmt.Println(i)\n}' We call the printAll function passing '42' and 'bird' as arguments. The printAll function accepts two parameters 'int' and 'string' but uses only the first of them. Therefore, the 's string' is grayed out.", + "markdown": "Reports unused function parameters.\n\n func main() {\n printAll(\n 42,\n \"bird\",\n )\n }\n\n func printAll(\n i int,\n s string,\n ) {\n fmt.Println(i)\n }\n\nWe call the **printAll** function passing `42` and `bird` as arguments. The **printAll** function accepts two\nparameters `int` and `string` but uses only the first of them. Therefore, the `s string` is grayed out." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoDisabledGopathIndexing", + "shortDescription": { + "text": "Disabled GOPATH indexing" + }, + "fullDescription": { + "text": "Reports disabled GOPATH indexing that might prevent proper resolution of code references. GOPATH stores your code base and all the files that are necessary for your development. Also, it includes packages that you download and install. If you disabled GOPATH indexing, only project and vendored packages are indexed. It might improve the overall performance but makes it impossible to use packages from GOPATH.", + "markdown": "Reports disabled GOPATH indexing that might prevent proper resolution of code references.\n\nGOPATH stores your code base and all the files that are necessary for your development. Also, it includes packages that you download and\ninstall. If you disabled GOPATH indexing, only project and vendored packages are indexed. It might improve the overall performance but\nmakes it impossible to use packages from GOPATH." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoPreferNilSlice", + "shortDescription": { + "text": "Empty slice declared using a literal" + }, + "fullDescription": { + "text": "Reports slice declarations with empty literal initializers used instead of 'nil'. An empty slice can be represented by 'nil' or an empty slice literal. The first approach is preferred as it does not lead to memory allocation. For more information about empty slices, see Declaring Empty Slices at golang.org. Example: 's := []string{}' To change the declaration, use the Replace with nil slice declaration (changes semantics) quick-fix. After the quick-fix is applied: 'var s []string'", + "markdown": "Reports slice declarations with empty literal initializers used instead of `nil`.\n\nAn empty slice can be represented by `nil` or an empty slice literal. The first approach is\npreferred as it does not lead to memory allocation. For more information about empty slices, see\n[Declaring Empty Slices at golang.org](https://golang.org/wiki/CodeReviewComments#declaring-empty-slices).\n\nExample:\n\n s := []string{}\n\nTo change the declaration, use the **Replace with nil slice declaration (changes semantics)** quick-fix.\nAfter the quick-fix is applied:\n\n var s []string\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoShift", + "shortDescription": { + "text": "Exceeded shift expression" + }, + "fullDescription": { + "text": "Reports shift expressions that equal or exceed the width of the integer. All the bits of the left operand are shifted in such expression resulting in a constant value. The constant value indicates that either the shift offset is incorrect or the shift expression is redundant. Example: 'func shift(i int8) {\n fmt.Println(i << 8) // always prints 0\n }'", + "markdown": "Reports shift expressions that equal or exceed the width of the integer.\n\nAll the bits of the left operand are shifted in such expression resulting in a constant value. The constant value\nindicates that either the shift offset is incorrect or the shift expression is redundant.\n\nExample:\n\n\n func shift(i int8) {\n fmt.Println(i << 8) // always prints 0\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoSelfAssignment", + "shortDescription": { + "text": "Self assignment" + }, + "fullDescription": { + "text": "Reports expressions that are assigned to themselves. Such assignments have no effect, removing them might improve code readability. Example: 'func importedVarSelfAssignment() {\n http.ErrNotSupported = http.ErrNotSupported\n}'", + "markdown": "Reports expressions that are assigned to themselves.\n\nSuch assignments have no effect, removing them might improve code readability.\n\nExample:\n\n func importedVarSelfAssignment() {\n http.ErrNotSupported = http.ErrNotSupported\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoStructInitializationWithoutFieldNames", + "shortDescription": { + "text": "Struct initialization without field names" + }, + "fullDescription": { + "text": "Reports structures that are initialized without specifying their field names. By default, the inspection is available only when you use the type that is defined in a different package. When initializing a structure, it is better to explicitly state field names in order to ensure that in case of changes in order of these fields or in names of the fields, they will correctly continue to be addressed. Example: '_ = io.LimitedReader{nil, 10}' The 'LimitedReader' initialization will be highlighted because explicit names for struct fields are missing. You can apply the Add keys and delete zero values quick-fix to the struct initialization. After the quick-fix is applied, the code looks as follows: '_ = io.LimitedReader{N: 10}' The inspection has the following options: Report types defined in current package: reports situations when you declare and initialize struct in the same package. Consider the following example. 'd := struct {\n c string\n }{ \"dsd \"}' Report struct literals without types: reports fields without names when the type (struct or interface) is omitted. Consider the following example when the type is omitted. '_ = []io.LimitedReader{\n {nil, 10},\n {nil, 20},\n }' In the following example, the type is present but is redundant. '_ = []io.LimitedReader{\n io.LimitedReader{nil, 10},\n io.LimitedReader{nil, 20},\n}'", + "markdown": "Reports structures that are initialized without specifying their field names. By default, the inspection is available only when you use the type that is defined in a different package.\n\nWhen initializing a structure, it is better to explicitly state field names in order\nto ensure that in case of changes in order of these fields or in names of the fields, they\nwill correctly continue to be addressed.\n\nExample:\n\n _ = io.LimitedReader{nil, 10}\n\nThe `LimitedReader` initialization will be highlighted because explicit names for struct fields are missing.\nYou can apply the **Add keys and delete zero values** quick-fix to the\nstruct initialization. After the quick-fix is applied, the code looks as follows:\n\n _ = io.LimitedReader{N: 10}\n\nThe inspection has the following options:\n\n* **Report types defined in current package**: reports situations when you declare and initialize struct in the same package.\n Consider the following example.\n\n d := struct {\n c string\n }{ \"dsd \"}\n\n* **Report struct literals without types**: reports fields without names when the type (struct or interface) is omitted.\n Consider the following example when the type is omitted.\n\n _ = []io.LimitedReader{\n {nil, 10},\n {nil, 20},\n }\n\n In the following example, the type is present but is redundant.\n\n _ = []io.LimitedReader{\n io.LimitedReader{nil, 10},\n io.LimitedReader{nil, 20},\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "VgoMigrateFromReplacesToWorkspace", + "shortDescription": { + "text": "Migration to Go workspace is possible" + }, + "fullDescription": { + "text": "Generates 'go.work' files using 'replace' directives. Go workspaces is a feature introduced in Go 1.18 that allows to work simultaneously on several modules. Workspaces are a modern alternative to 'replace' directives pointing to local directories. All modules in a workspace have the same set of dependencies, thus making the configuration simpler, more robust, and requiring fewer 'go list' calls to scan the project structure. The fix for this inspection generates a new 'go.work' file and does not change existing files. By default, warning severity is used. If a generated workspace would include Go modules that were not replaced in the original 'go.mod', no warning is shown due to possible side effects caused by migration, but the fix still can be run manually. See Go Modules Reference for more information about workspaces. See Tutorial: Getting started with multi-module workspaces for Go workspaces introduction.", + "markdown": "Generates 'go.work' files using 'replace' directives.\n\n\nGo workspaces is a feature introduced in Go 1.18 that allows to work simultaneously on several modules. \n\nWorkspaces are a modern alternative to 'replace' directives pointing to local directories. \n\nAll modules in a workspace have the same set of dependencies, thus making the configuration simpler, more robust,\nand requiring fewer 'go list' calls to scan the project structure. \n\nThe fix for this inspection generates a new 'go.work' file and does not change existing files.\n\n\nBy default, warning severity is used. If a generated workspace would include Go modules that were not replaced\nin the original 'go.mod', no warning is shown due to possible side effects caused by migration, but the fix still can be run manually.\n\n\nSee [Go Modules Reference](https://go.dev/ref/mod#workspaces) for more information about workspaces. \n\nSee [Tutorial: Getting started with multi-module workspaces](https://go.dev/doc/tutorial/workspaces) for Go workspaces introduction." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go modules/General", + "index": 18, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetIntToStringConversion", + "shortDescription": { + "text": "Integer to string type conversion" + }, + "fullDescription": { + "text": "Reports conversions of 'string(x)'-alike expressions where 'x' is an integer but not byte or rune. Such conversions are discouraged because they return the UTF-8 representation of the Unicode code point 'x', and not a decimal string representation of 'x' as one might expect. Furthermore, if 'x' denotes an invalid code point, the conversion cannot be statically rejected. For conversions that intend on using the code point, consider replacing them with 'string(rune(x))'. Otherwise, 'strconv.Itoa' and its equivalents return the string representation of the value in the desired base. Example: 'func main() {\n a := 1\n _ = string(a)\n}' After the Convert integer to rune quick-fix is applied: 'func main() {\n a := 1\n _ = string(rune(a))\n}'", + "markdown": "Reports conversions of `string(x)`-alike expressions where `x` is an integer but not byte or rune.\n\nSuch conversions are discouraged because they return the UTF-8 representation\nof the Unicode code point `x`, and not a decimal string representation\nof `x` as one might expect. Furthermore, if `x` denotes\nan invalid code point, the conversion cannot be statically rejected.\n\nFor conversions that intend on using the code point, consider replacing them\nwith `string(rune(x))`. Otherwise, `strconv.Itoa`\nand its equivalents return the string representation of the value in the desired\nbase.\n\nExample:\n\n func main() {\n a := 1\n _ = string(a)\n }\n\nAfter the **Convert integer to rune** quick-fix is applied:\n\n func main() {\n a := 1\n _ = string(rune(a))\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoSnakeCaseUsage", + "shortDescription": { + "text": "Usage of Snake_Case" + }, + "fullDescription": { + "text": "Reports usage of snake case instead of camelcase for naming variables, constants and functions. According to MixedCaps at golang.org, camelcase is a convention in Go. Example: 'func get_external_IP() (string, error) {}' The 'get_external_IP' is in snake case but should be in camelcase. You can apply a quick-fix to convert the function name to 'getExternalIp'.", + "markdown": "Reports usage of snake case instead of camelcase for naming variables, constants and functions. According to [MixedCaps at golang.org](https://golang.org/doc/effective_go.html#mixed-caps), camelcase is a convention in Go.\n\nExample:\n\n func get_external_IP() (string, error) {}\n\nThe `get_external_IP` is in snake case but should be in camelcase. You can apply a quick-fix to convert the function name to\n`getExternalIp`." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantComma", + "shortDescription": { + "text": "Redundant comma" + }, + "fullDescription": { + "text": "Reports commas that may be omitted in the end of argument lists and composite literals. The IDE suggests removing commas that are considered optional. Removing these commas might improve code readability. Example: 's := []int{1, 2,} // the last comma may be omitted'", + "markdown": "Reports commas that may be omitted in the end of argument lists and composite literals.\n\nThe IDE suggests removing commas that are considered optional. Removing these commas might improve\ncode readability.\n\nExample:\n\n s := []int{1, 2,} // the last comma may be omitted\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantSemicolon", + "shortDescription": { + "text": "Redundant semicolon" + }, + "fullDescription": { + "text": "Reports redundant semicolons. Idiomatic Go programs have semicolons only in places such as 'for' loop clauses, to separate the initializer, condition, and continuation elements. They are also necessary to separate multiple statements on a line. In other cases, you can omit them. For more information about semicolons in Go, see Semicolons at golang.org. Example: 'i := 1;'", + "markdown": "Reports redundant semicolons. Idiomatic Go programs have semicolons only in places such as `for` loop clauses, to separate the initializer, condition, and continuation elements. They are also necessary to separate multiple statements on a line. In other cases, you can omit them.\n\nFor more information about semicolons in Go, see [Semicolons at golang.org](https://golang.org/doc/effective_go#semicolons).\n\nExample:\n\n i := 1;\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantSecondIndexInSlices", + "shortDescription": { + "text": "Redundant second index in slices" + }, + "fullDescription": { + "text": "Reports a redundant second index (a high bound) in slice expressions. Usually, the second index is optional. If you remove it, you might improve code readability. Example: 'var a []int\na = a[0:len(a)] // `a[0:len(a)]` is the same as `a[0:]`'\n You can apply the Remove redundant index quick-fix to such cases. After the quick-fix is applied, this code looks as follows: 'var a []int\na = a[0:]'", + "markdown": "Reports a redundant second index (a high bound) in slice expressions.\n\nUsually, the second index is optional. If you remove it, you might improve code readability.\n\nExample:\n\n var a []int\n a = a[0:len(a)] // `a[0:len(a)]` is the same as `a[0:]`\n\nYou can apply the **Remove redundant index** quick-fix to such cases. After the quick-fix is applied, this\ncode looks as follows:\n\n var a []int\n a = a[0:]\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoImportUsedAsName", + "shortDescription": { + "text": "Imported package name as a name identifier" + }, + "fullDescription": { + "text": "Reports declarations of variables, arguments or functions that overlap with the used import. While legal, such declarations will make using the package exported identifiers impossible after the declaration or create confusion when reading the code. Example: 'import \"fmt\"\nimport _ \"fmt\"\nimport iio \"io\"\n\nfunc _() {\n fmt.Println(\"demo\")\n demo := true\n _, _ = iio.EOF, demo\n}\n\nfunc demo() (int, int) {\n return 1, 2\n}\n\nfunc _() {\n _, _ = iio.EOF, demo\n fmt := \"demo\"\n iio := 1\n _, _ = iio, fmt\n a, _ := demo()\n _ = a\n}' Variable names 'fmt' and 'iio' clash with names of import packages. Not to confuse them later in code, it is better to rename these variables.", + "markdown": "Reports declarations of variables, arguments or functions that overlap with the used import.\n\nWhile legal, such declarations will make using the package exported identifiers impossible after the declaration or create\nconfusion when reading the code.\n\nExample:\n\n import \"fmt\"\n import _ \"fmt\"\n import iio \"io\"\n\n func _() {\n fmt.Println(\"demo\")\n demo := true\n _, _ = iio.EOF, demo\n }\n\n func demo() (int, int) {\n return 1, 2\n }\n\n func _() {\n _, _ = iio.EOF, demo\n fmt := \"demo\"\n iio := 1\n _, _ = iio, fmt\n a, _ := demo()\n _ = a\n }\n\nVariable names `fmt` and `iio` clash with names of import packages. Not to confuse them later in code, it is better\nto rename these variables." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnitSpecificDurationSuffix", + "shortDescription": { + "text": "Unit-specific suffix for 'time.Duration'" + }, + "fullDescription": { + "text": "Reports unit-specific suffixes in constant and variable names of 'time.Duration' type. The inspection comes from 'go lint'. A list of suffixes that imply a time unit is available in the golang repository at github.com. 'time.Duration' represents a value in nanoseconds, so adding a time unit suffix might make the meaning of the variable confusing, or even indicate a misuse of the 'time.Duration' API. Example: 'var timeoutSeconds = 5 * time.Second'", + "markdown": "Reports unit-specific suffixes in constant and variable names of `time.Duration` type.\n\nThe inspection comes from `go lint`. A list of suffixes that imply a time unit is available\nin [the golang repository at\ngithub.com](https://github.com/golang/lint/blob/c5fb716d6688a859aae56d26d3e6070808df29f7/lint.go#L1365-L1373).\n\n`time.Duration` represents a value in nanoseconds, so adding a time unit suffix\nmight make the meaning of the variable confusing, or even indicate a misuse of the `time.Duration` API.\n\nExample:\n\n var timeoutSeconds = 5 * time.Second\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedExportedType", + "shortDescription": { + "text": "Unused exported type" + }, + "fullDescription": { + "text": "Reports unused exported types in the 'main' package and in tests. For more information about exported identifiers, see Exported identifiers at golang.org. 'type User struct {}\n\nfunc main() {}' The 'User' struct type is declared but never used in the code. This type will be grayed out.", + "markdown": "Reports unused exported types in the `main` package and in tests. For more information about exported identifiers, see [Exported identifiers at golang.org](https://golang.org/ref/spec#Exported_identifiers).\n\n type User struct {}\n\n func main() {}\n\nThe `User` struct type is declared but never used in the code. This type will be grayed out." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoDeprecation", + "shortDescription": { + "text": "Deprecated element" + }, + "fullDescription": { + "text": "Reports usages of deprecated elements. Example: '// Deprecated: Use io.SeekStart, io.SeekCurrent, and io.SeekEnd.\nconst (\n SEEK_SET int = 0 // seek relative to the origin of the file\n SEEK_CUR int = 1 // seek relative to the current offset\n SEEK_END int = 2 // seek relative to the end\n)' According to Constants at golang.org, 'SEEK_SET', 'SEEK_CUR', and 'SEEK_END' are deprecated.", + "markdown": "Reports usages of deprecated elements.\n\nExample:\n\n // Deprecated: Use io.SeekStart, io.SeekCurrent, and io.SeekEnd.\n const (\n SEEK_SET int = 0 // seek relative to the origin of the file\n SEEK_CUR int = 1 // seek relative to the current offset\n SEEK_END int = 2 // seek relative to the end\n )\n\nAccording to [Constants at golang.org](https://golang.org/pkg/os/#pkg-constants), `SEEK_SET`, `SEEK_CUR`,\nand `SEEK_END` are deprecated." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoNilness", + "shortDescription": { + "text": "Nilness analyzer" + }, + "fullDescription": { + "text": "Reports problems caused by incorrect usage of the 'nil' value. The IDE analyses data flow to determine if variables could have 'nil' or not 'nil' values. Based on this, the IDE reports potential issues in code. Consider the following list of situations that might lead to unintended consequences: Method calls with the 'nil' receiver might lead to 'nil pointer dereference'. The 'nil' slice indexing might cause panics. Comparisons like 'v == nil' might be meaningless if 'v' is known to be always 'nil' or not 'nil'. Variables with corresponding errors are not checked on not to be 'nil'. An error corresponds to a variable when they are defined or assigned together in statements like 'v, err := foo()'.", + "markdown": "Reports problems caused by incorrect usage of the `nil` value.\n\nThe IDE analyses data flow to determine if variables could have `nil` or not `nil` values.\nBased on this, the IDE reports potential issues in code. Consider the following list of situations that might lead to unintended\nconsequences:\n\n* Method calls with the `nil` receiver might lead to 'nil pointer dereference'.\n* The `nil` slice indexing might cause panics.\n* Comparisons like `v == nil` might be meaningless if `v` is known to be always `nil` or not `nil`.\n* Variables with corresponding errors are not checked on not to be `nil`. An error corresponds to a variable when they are defined or assigned together in statements like `v, err := foo()`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoTestName", + "shortDescription": { + "text": "Malformed test function name" + }, + "fullDescription": { + "text": "Reports malformed names of tests, benchmarks, and examples. According to Package testing at golang.org, names must follow a special convention in order to make the go tool process them correctly. Example: 'func Testfoo(*testing.T) {} // the 'go' tool will not run this test' After the Rename to quick-fix is applied: 'func TestFoo(*testing.T) {}'", + "markdown": "Reports malformed names of tests, benchmarks, and examples.\n\nAccording to [Package testing at golang.org](https://golang.org/pkg/testing/), names must follow a special convention\nin order to make the go tool process them correctly.\n\nExample:\n\n func Testfoo(*testing.T) {} // the 'go' tool will not run this test\n\nAfter the **Rename to** quick-fix is applied:\n\n func TestFoo(*testing.T) {}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoErrorStringFormat", + "shortDescription": { + "text": "Error string should not be capitalized or end with punctuation" + }, + "fullDescription": { + "text": "Reports format issues in error strings. Example: 'err := fmt.Errorf(\"Cannot read the file!\")\nlog.Printf(\"Reading %s: %v\", file, err)' According to Error Strings at golang.org, error strings should not be capitalized or end with punctuation because they might appear among other context. To fix the format, you can apply the Fix error string format quick-fix. After the quick-fix is applied, the error string will look like this: 'err := fmt.Errorf(\"cannot read the file\")\nlog.Printf(\"Reading %s: %v\", file, err)'", + "markdown": "Reports format issues in error strings.\n\nExample:\n\n err := fmt.Errorf(\"Cannot read the file!\")\n log.Printf(\"Reading %s: %v\", file, err)\n\nAccording to\n[Error Strings at golang.org](https://golang.org/wiki/CodeReviewComments#error-strings),\nerror strings should not be capitalized or end with punctuation because they might appear among other context.\n\nTo fix the format, you can apply the **Fix error string format** quick-fix. After the quick-fix is applied,\nthe error string will look like this:\n\n err := fmt.Errorf(\"cannot read the file\")\n log.Printf(\"Reading %s: %v\", file, err)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVarAndConstTypeMayBeOmitted", + "shortDescription": { + "text": "Type can be omitted" + }, + "fullDescription": { + "text": "Reports types in variable and constant declarations that can be omitted since they can be inferred by the compiler. Such types are redundant, omitting them may improve readability of the code. Example: 'var s string = fmt.Sprintln(\"hi\")' The 'string' type in the variable declaration may be omitted. To remove the type, use the Delete type quick-fix. After the quick-fix is applied: 'var s = fmt.Sprintln(\"hi\")'", + "markdown": "Reports types in variable and constant declarations that can be omitted since they can be inferred by the compiler. Such types are redundant, omitting them may improve readability of the code.\n\nExample:\n\n var s string = fmt.Sprintln(\"hi\")\n\nThe `string` type in the variable declaration may be omitted. To remove the type, use the **Delete type** quick-fix.\nAfter the quick-fix is applied:\n\n var s = fmt.Sprintln(\"hi\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoCommentLeadingSpace", + "shortDescription": { + "text": "Comment has no leading space" + }, + "fullDescription": { + "text": "Reports comments without a leading space. Note that the inspection works only if you select the Add a leading space to comments in Editor | Code Style | Go on the Other tab. Comments with a leading space can be easier to read since the first word is separated from the comment by a space. Example: '//Prints JSON received from the createJSON function\nfunc printJSON(output []byte) {\n\tfmt.Println(string(output))\n}'", + "markdown": "Reports comments without a leading space.\n\nNote that the inspection works only if you select the **Add a leading space to comments** in **Editor \\| Code Style \\| Go** on the\n**Other** tab.\n\nComments with a leading space can be easier to read since the first word is separated from the comment by a space.\n\nExample:\n\n //Prints JSON received from the createJSON function\n func printJSON(output []byte) {\n \tfmt.Println(string(output))\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoPrintFunctions", + "shortDescription": { + "text": "Incorrect usage of 'fmt.Printf' and 'fmt.Println' functions" + }, + "fullDescription": { + "text": "Reports incorrect usages of 'fmt.Printf', 'fmt.Println', and similar formatting and printing functions. In their format strings, formatting functions use formatting verbs, like '%s', '%d', '%v', and others. If formatting verbs are used incorrectly, the result of a formatting function will contain an error. For more information about formatting verbs, see Package fmt at golang.org. Example: 'fmt.Printf(\"id: %s\", 42)' The output of this function is 'id: %!s(int=42)'. It might be not what you really want. The following function uses the '%d' formatting verb. The output with the '%d' formatting verb will be 'id: 42'. 'fmt.Printf(\"id: %d\", 42)'", + "markdown": "Reports incorrect usages of `fmt.Printf`, `fmt.Println`, and similar formatting and printing functions.\n\nIn their format strings, formatting functions use formatting verbs, like `%s`, `%d`, `%v`, and others.\nIf formatting verbs are used incorrectly, the result of a formatting function will contain an error.\nFor more information about formatting verbs, see [Package fmt at golang.org](https://golang.org/pkg/fmt/).\n\nExample:\n\n fmt.Printf(\"id: %s\", 42)\n\nThe output of this function is `id: %!s(int=42)`. It might be not what you really want.\nThe following function uses the `%d` formatting verb.\nThe output with the `%d` formatting verb will be `id: 42`.\n\n fmt.Printf(\"id: %d\", 42)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoDeferInLoop", + "shortDescription": { + "text": "'defer' in the loop" + }, + "fullDescription": { + "text": "Reports 'defer' statements inside loops. Using 'defer' in loops can lead to resource leaks or unpredictable execution order of statements. Example: 'func main() {\n for {\n field, err := db.Query(\"SELECT 1\")\n if err != nil {\n // ...\n }\n defer field.Close()\n // ...\n }\n}' Calls of 'defer row.Close()' inside the loop are not executed until the function completes its execution. Not at the end of each step of the 'for' loop. Such implementation might lead to overflow of the function's stack and other issues.", + "markdown": "Reports `defer` statements inside loops.\n\nUsing `defer` in loops can lead to resource leaks or unpredictable execution order of statements.\n\nExample:\n\n func main() {\n for {\n field, err := db.Query(\"SELECT 1\")\n if err != nil {\n // ...\n }\n defer field.Close()\n // ...\n }\n }\n\nCalls of `defer row.Close()` inside the loop are not executed until the function completes its execution.\nNot at the end of each step of the `for` loop. Such implementation might lead to overflow of the function's stack and\nother issues." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Control flow issues", + "index": 23, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoDeferGo", + "shortDescription": { + "text": "Defer/go statement calls 'recover' or 'panic' directly" + }, + "fullDescription": { + "text": "Reports 'defer' and 'go' statements that call 'panic()' or 'recover()' directly. Such statements are rarely useful and might indicate a misuse of the 'panic()' and 'recover()' mechanism. In particular: 'go panic()': a newly-started goroutine will panic immediately. 'defer panic()': a function with this statement will always panic on exit. 'go recover()': has no effect as newly-started goroutine cannot panic. 'defer recover()': function with this statement will silently stop panicking. This could be a valid usage, but an idiomatic way is to inspect the value returned by 'recover()': 'defer func() {\n if r := recover(); r != nil {\n fmt.Println(\"Recovered from: \", r)\n }\n}()' For more information about go statements and panics handling, see Handling panics and Go statements in the Go Language Specification.", + "markdown": "Reports `defer` and `go` statements that call `panic()` or `recover()` directly.\n\nSuch statements are rarely useful and might indicate a misuse of the `panic()` and `recover()` mechanism.\nIn particular:\n\n* `go panic()`: a newly-started goroutine will panic immediately.\n* `defer panic()`: a function with this statement will always panic on exit.\n* `go recover()`: has no effect as newly-started goroutine cannot panic.\n* `defer recover()`: function with this statement will silently stop panicking. This could be a valid usage, but an idiomatic way is to inspect the value returned by `recover()`:\n\n defer func() {\n if r := recover(); r != nil {\n fmt.Println(\"Recovered from: \", r)\n }\n }()\n\nFor more information about go statements and panics handling, see [Handling\npanics](https://golang.org/ref/spec#Handling_panics) and\n[Go statements](https://golang.org/ref/spec#Go_statements) in the Go Language Specification." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoErrorsAs", + "shortDescription": { + "text": "Incorrect usage of the 'errors.As' function" + }, + "fullDescription": { + "text": "Reports calls of the 'errors.As' function when the second argument is not a pointer to an interface or to a type that implements an error. Such calls panic at runtime. For more information about the 'As' function, see func As at golang.org. Example: '_, err := os.Open(\"non-existing\")\nvar pathError *fs.PathError\nif errors.As(err, pathError) { // a pointer to *fs.PathError is required\n}' After the Prepend '&' quick-fix is applied: '_, err := os.Open(\"non-existing\")\nvar pathError *fs.PathError\nif errors.As(err, &pathError) {\n}' This inspection only reports if the language version is 1.13 or higher.", + "markdown": "Reports calls of the `errors.As` function when the second argument is not a pointer to an interface or to a type that implements an error.\n\nSuch calls panic at runtime.\n\nFor more information about the `As` function, see [func As at golang.org](https://golang.org/pkg/errors/#As).\n\nExample:\n\n _, err := os.Open(\"non-existing\")\n var pathError *fs.PathError\n if errors.As(err, pathError) { // a pointer to *fs.PathError is required\n }\n\nAfter the **Prepend '\\&'** quick-fix is applied:\n\n _, err := os.Open(\"non-existing\")\n var pathError *fs.PathError\n if errors.As(err, &pathError) {\n }\n\nThis inspection only reports if the language version is 1.13 or higher." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetUnsafePointer", + "shortDescription": { + "text": "Invalid conversions of 'uintptr' to 'unsafe.Pointer'" + }, + "fullDescription": { + "text": "Reports possibly incorrect conversions of 'uintptr' to 'unsafe.Pointer'. A conversion from 'uintptr' to 'unsafe.Pointer' is invalid if it implies that there is a 'uintptr'-typed word in memory that holds a pointer value, because that word will be invisible to stack copying and to the garbage collector. Example of invalid usage: 'nums := []int8{42, 24}\nptr := unsafe.Pointer(&nums[0])\naddr := uintptr(ptr) // address is stored to a local variable\nptr = unsafe.Pointer(addr + uintptr(1))' Example of valid usage: 'nums := []int8{42, 24}\nptr := unsafe.Pointer(&nums[0])\nptr = unsafe.Pointer(uintptr(ptr) + uintptr(1))'", + "markdown": "Reports possibly incorrect conversions of `uintptr` to `unsafe.Pointer`.\n\nA conversion from\n`uintptr` to `unsafe.Pointer` is invalid if it implies that there is a `uintptr`-typed word\nin memory that holds a pointer value, because that word will be invisible to stack copying and to the garbage collector.\n\nExample of invalid usage:\n\n nums := []int8{42, 24}\n ptr := unsafe.Pointer(&nums[0])\n addr := uintptr(ptr) // address is stored to a local variable\n ptr = unsafe.Pointer(addr + uintptr(1))\n\nExample of valid usage:\n\n nums := []int8{42, 24}\n ptr := unsafe.Pointer(&nums[0])\n ptr = unsafe.Pointer(uintptr(ptr) + uintptr(1))\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoReceiverNames", + "shortDescription": { + "text": "Receiver has a generic name" + }, + "fullDescription": { + "text": "Reports receiver names like 'me', 'this', 'self', or names that differ from other receiver names for this type. Example: 'func (self *MeterSnapshot) Rate5() float64 { return math.Float64frombits(self.rate5) }' According to Receiver Names at golang.org, you should not use generic names such as \"me\", \"this\", or \"self\". These identifiers are typical for object-oriented languages and might give the method a special meaning.", + "markdown": "Reports receiver names like `me`, `this`, `self`, or names that differ from other receiver names for this type.\n\nExample:\n\n func (self *MeterSnapshot) Rate5() float64 { return math.Float64frombits(self.rate5) }\n\nAccording to [Receiver Names at golang.org](https://golang.org/wiki/CodeReviewComments#receiver-names),\nyou should not use generic names such as \"me\", \"this\", or \"self\". These identifiers are typical for object-oriented languages and might\ngive the method a special meaning." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoExportedElementShouldHaveComment", + "shortDescription": { + "text": "Exported element should have a comment" + }, + "fullDescription": { + "text": "Reports exported declarations without a documentation comment. According to Doc Comments at golang.org, all top-level exported names should have doc comments. Also, for more information about comment sentences, see Comment Sentences at golang.org. To add a comment, you can apply the Add comment quick-fix.", + "markdown": "Reports exported declarations without a documentation comment. According to [Doc Comments at golang.org](https://golang.org/wiki/CodeReviewComments#doc-comments), all top-level exported names should have doc comments.\n\nAlso, for more information about comment sentences, see [Comment\nSentences at golang.org](https://golang.org/wiki/CodeReviewComments#comment-sentences).\n\nTo add a comment, you can apply the **Add comment** quick-fix." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnhandledErrorResult", + "shortDescription": { + "text": "Unhandled error" + }, + "fullDescription": { + "text": "Reports calls to functions and methods that do not handle the call result of the 'error' type. An API of such functions imply that their execution might finish unsuccessfully and they would return an error. Calls that do not handle the error result could be an indication of the API misuse. Example: 'os.Remove(\"non-existing\") // error is ignored' After the Handle error quick-fix is applied: 'err := os.Remove(\"non-existing\") // error is handled\nif err != nil {\n return err\n}'", + "markdown": "Reports calls to functions and methods that do not handle the call result of the `error` type.\n\nAn API of such functions imply that their execution might finish unsuccessfully and they would return an error.\nCalls that do not handle the error result could be an indication of the API misuse.\n\nExample:\n\n\n os.Remove(\"non-existing\") // error is ignored\n\nAfter the **Handle error** quick-fix is applied:\n\n err := os.Remove(\"non-existing\") // error is handled\n if err != nil {\n return err\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantConversion", + "shortDescription": { + "text": "Redundant type conversion" + }, + "fullDescription": { + "text": "Reports type conversions that may be omitted. Example: 'var s = string(\"hello\")' The '\"hello\"' value is the 'string' type already, the additional conversion to 'string' is redundant. To remove the conversion, consider using the Delete conversion quick-fix. After the quick-fix is applied: 'var s = \"hello\"' Sometimes conversion of a floating expression to a floating type can be intentional (see this issue as an example). In such cases, the IDE issues a warning about a possibly redundant conversion.", + "markdown": "Reports type conversions that may be omitted.\n\nExample:\n\n var s = string(\"hello\")\n\nThe `\"hello\"` value is the `string` type already, the additional conversion to `string` is redundant.\nTo remove the conversion, consider using the **Delete conversion** quick-fix.\n\nAfter the quick-fix is applied:\n\n var s = \"hello\"\n\nSometimes conversion of a floating expression to a floating type can be intentional\n(see [this issue](https://github.com/mdempsky/unconvert/issues/40) as an example). In such cases, the IDE issues\na warning about a *possibly* redundant conversion." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoReservedWordUsedAsName", + "shortDescription": { + "text": "Reserved word used as name" + }, + "fullDescription": { + "text": "Reports declarations of variables, arguments or functions that overlap with the built-in or reserved keyword. If you receive this error then your code might not be as explicit as possible and might confuse other users. Example: 'type byte struct{}\ntype string interface{}' Types 'byte' and 'string' collide with the built-in type aliases. Therefore, they will be highlighted. Consider renaming such declarations.", + "markdown": "Reports declarations of variables, arguments or functions that overlap with the built-in or reserved keyword.\n\nIf you receive this error then your code might not be as explicit as possible and might confuse other users.\n\nExample:\n\n type byte struct{}\n type string interface{}\n\nTypes `byte` and `string` collide with the built-in type aliases. Therefore, they will be highlighted.\nConsider renaming such declarations." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedExportedFunction", + "shortDescription": { + "text": "Unused exported function" + }, + "fullDescription": { + "text": "Reports unused exported functions. In Go, a function is exported if it begins with a capital letter. Names of exported functions that were defined but never used are grayed out. '// Unused exported function\nfunc ExportedUnusedFunc() {\n\n}\n\nfunc main() {\n fmt.Println(\"Hello\")\n}'", + "markdown": "Reports unused exported functions.\n\nIn Go, a function is exported if it begins with a capital letter. Names of exported functions that were defined but never used are\ngrayed out.\n\n // Unused exported function\n func ExportedUnusedFunc() {\n\n }\n\n func main() {\n fmt.Println(\"Hello\")\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoExportedFuncWithUnexportedType", + "shortDescription": { + "text": "Unexported return type of the exported function" + }, + "fullDescription": { + "text": "Reports exported functions with unexported return types. Unexported types can be difficult to use when viewing documentation under go doc. Example: 'type hidden struct{}\n\nfunc Exported() hidden { // Exported function with the `hidden` unexported return type\n return hidden{}\n}' You can apply Export quick-fix to export the type. After the quick-fix is applied, type name will be capitalized: 'type Hidden struct{}\n\nfunc Exported() Hidden { // Fixed\n return Hidden{}\n}'", + "markdown": "Reports exported functions with unexported return types.\n\nUnexported types can be difficult to use when viewing documentation under **go doc**.\n\nExample:\n\n type hidden struct{}\n\n func Exported() hidden { // Exported function with the `hidden` unexported return type\n return hidden{}\n }\n\nYou can apply **Export** quick-fix to export the type. After the quick-fix is applied,\ntype name will be capitalized:\n\n type Hidden struct{}\n\n func Exported() Hidden { // Fixed\n return Hidden{}\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoInfiniteFor", + "shortDescription": { + "text": "Infinite 'for' loop" + }, + "fullDescription": { + "text": "Reports empty 'for' loops. Running this code will make the CPU usage stay at maximum and will make the machine nearly unusable. Example: 'func main() {\n for {\n }\n}'", + "markdown": "Reports empty `for` loops.\n\nRunning this code will make the CPU usage stay at maximum and will make the machine nearly unusable.\n\nExample:\n\n func main() {\n for {\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Control flow issues", + "index": 23, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnreachableCode", + "shortDescription": { + "text": "Unreachable code" + }, + "fullDescription": { + "text": "Reports code that can never be executed because there exists no control flow path to the code from the rest of the program. Example: 'func _() int {\n print(1)\n return 2\n println() // This code is unreachable \n return 0\n}'", + "markdown": "Reports code that can never be executed because there exists no control flow path to the code from the rest of the program.\n\nExample:\n\n func _() int {\n print(1)\n return 2\n println() // This code is unreachable \n return 0\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Control flow issues", + "index": 23, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetLostCancel", + "shortDescription": { + "text": "'context.CancelFunc' is not called" + }, + "fullDescription": { + "text": "Reports execution paths that do not call the 'cancel' function returned by 'context.WithCancel' and similar functions. The 'WithCancel', 'WithDeadline', and 'WithTimeout' functions take a 'Context' (the parent) and return a derived 'Context' (the child) and a 'CancelFunc'. Calling the 'CancelFunc' cancels the child and its children, removes the parent's reference to the child, and stops any associated timers. Failing to call the CancelFunc leaks the child and its children until the parent is canceled or the timer fires. For more information about the 'context' package, see Package context at golang.org. Example: 'func _(ctx context.Context, cancel func()) {\n var ctx2 context.Context\n ctx2, cancel = context.WithCancel(ctx)\n _ = ctx2\n}'", + "markdown": "Reports execution paths that do not call the `cancel` function returned by `context.WithCancel` and similar functions.\n\nThe `WithCancel`, `WithDeadline`, and `WithTimeout` functions take a `Context` (the parent)\nand return a\nderived `Context` (the child) and a `CancelFunc`.\nCalling the `CancelFunc` cancels the child and its children, removes the parent's reference to the child, and stops any\nassociated timers.\nFailing to call the CancelFunc leaks the child and its children until the parent is canceled or the timer fires.\n\nFor more information about the `context` package, see [Package context at\ngolang.org](https://golang.org/pkg/context/).\n\nExample:\n\n func _(ctx context.Context, cancel func()) {\n var ctx2 context.Context\n ctx2, cancel = context.WithCancel(ctx)\n _ = ctx2\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoCommentStart", + "shortDescription": { + "text": "Comment of exported element starts with the incorrect name" + }, + "fullDescription": { + "text": "Reports comments that do not start with the name of the exported element. According to Comment Sentences at golang.org, this is a convention to begin a comment with the name of the exported element. Example: '// represents a request to run a command.\ntype Request struct {}' The comment starts with the struct description, not with the struct name. To stick to the convention rules, you can apply the Add prefix to comment quick-fix. After the quick-fix is applied, the comment looks as follows: // Request represents a request to run a command.\ntype Request struct {} // better", + "markdown": "Reports comments that do not start with the name of the exported element.\n\nAccording to\n[Comment Sentences at golang.org](https://golang.org/wiki/CodeReviewComments#comment-sentences), this is a convention to begin\na comment with the name of the exported element.\n\nExample:\n\n // represents a request to run a command.\n type Request struct {}\n\nThe comment starts with the struct description, not with the struct name. To stick to the convention rules, you can apply the **Add\nprefix to comment** quick-fix. After the quick-fix is applied, the comment looks as follows:\n\n```\n// Request represents a request to run a command.\ntype Request struct {} // better\n```" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoRedundantBlankArgInRange", + "shortDescription": { + "text": "Redundant blank argument in range" + }, + "fullDescription": { + "text": "Reports optional blank variables in range loops. When you use the 'range' loop to iterate over a slice, two values are returned for each iteration. The first is the index number, and the second is a copy of the element at that index. If you do not need the second value, you can skip this element instead of using a blank identifier. Example: 'for a, _ = range v {} // `for a, _ =` is the same as `for a =`' To remove the blank identifier, you can use the Delete blank argument quick-fix. After the quick-fix is applied, the code will look as follows: 'for a = range v {}'", + "markdown": "Reports optional blank variables in range loops.\n\nWhen you use the `range` loop to iterate over a slice, two values are returned for each iteration. The first is the index\nnumber, and the second is a copy of the element at that index. If you do not need the second value, you can skip this element instead of\nusing a blank identifier.\n\nExample:\n\n for a, _ = range v {} // `for a, _ =` is the same as `for a =`\n\nTo remove the blank identifier, you can use the **Delete blank argument** quick-fix. After the quick-fix is applied, the code will\nlook as follows:\n\n for a = range v {}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedFunction", + "shortDescription": { + "text": "Unused function" + }, + "fullDescription": { + "text": "Reports unused unexported functions. In Go, a function is unexported if it begins with a small letter. Names of unexported functions that were defined but never used are grayed out. '// Unused unexported function\nfunc unExportedUnusedFunc() {\n\n}\n\nfunc main() {\n fmt.Println(\"Hello\")\n}'", + "markdown": "Reports unused unexported functions.\n\nIn Go, a function is unexported if it begins with a small letter. Names of unexported functions that were defined but never used are\ngrayed out.\n\n // Unused unexported function\n func unExportedUnusedFunc() {\n\n }\n\n func main() {\n fmt.Println(\"Hello\")\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedConst", + "shortDescription": { + "text": "Unused constant" + }, + "fullDescription": { + "text": "Reports constants that are defined but are never used in code. 'func main() {\n const i = 100\n}' Unlike unused variables and imports, this code will compile. Unused constants might increase your code base and slow down program compilation. To delete the unused constant, consider using the Delete constant quick-fix.", + "markdown": "Reports constants that are defined but are never used in code.\n\n func main() {\n const i = 100\n }\n\nUnlike unused variables and imports, this code will compile. Unused constants might increase your code base and\nslow down program compilation. To delete the unused constant, consider using the **Delete constant** quick-fix." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoEmptyDeclaration", + "shortDescription": { + "text": "Empty declaration" + }, + "fullDescription": { + "text": "Reports empty declarations. Empty declarations have no effect. If you remove them, you might improve code readability. Example: 'func main() {\n const () // empty declaration\n}' You can apply the Delete empty declaration quick-fix to remove this declaration.", + "markdown": "Reports empty declarations.\n\nEmpty declarations have no effect. If you remove them, you might improve code readability.\n\nExample:\n\n func main() {\n const () // empty declaration\n }\n\nYou can apply the **Delete empty declaration** quick-fix to remove this declaration." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoMissingTrailingComma", + "shortDescription": { + "text": "Missing trailing comma before a newline in a composite literal" + }, + "fullDescription": { + "text": "Reports a missing trailing comma before a newline in composite literals, function call arguments, and function parameter lists. Example: 'func f(f int) (\n int,\n bool // missing a trailing comma\n){\n println(1, 2 // missing a trailing comma\n )\n}'", + "markdown": "Reports a missing trailing comma before a newline in composite literals, function call arguments, and function parameter lists.\n\nExample:\n\n func f(f int) (\n int,\n bool // missing a trailing comma\n ){\n println(1, 2 // missing a trailing comma\n )\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "VgoUnusedDependency", + "shortDescription": { + "text": "Unused dependency" + }, + "fullDescription": { + "text": "Reports unused dependencies. For each dependency in the current go.mod file, this inspection searches for any import statement starting with the dependency name in all GO files. If no such imports found then the dependency is considered unused. This inspection is an equivalent of the 'go mod why' command. The inspection processes 'require' and 'replace' directives. The 'require' directives with '// indirect' comments are also processed. The inspection might not accurately determine that a replaced or indirectly-required dependency is unused in the following cases: Vendoring mode is enabled Some dependencies are not downloaded", + "markdown": "Reports unused dependencies.\n\nFor each dependency in the current *go.mod* file, this inspection searches for any import statement starting with the dependency\nname in\nall GO files.\nIf no such imports found then the dependency is considered unused.\nThis inspection is an equivalent of the [`go mod why` command](https://golang.org/ref/mod#go-mod-why).\n\nThe inspection processes `require` and `replace` directives.\nThe `require` directives with `// indirect` comments are also processed.\n\nThe inspection might not accurately determine that a replaced or indirectly-required dependency is unused in the following cases:\n\n* Vendoring mode is enabled\n* Some dependencies are not downloaded" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go modules/Declaration redundancy", + "index": 26, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoStandardMethods", + "shortDescription": { + "text": "Non-standard signature for well-known function names" + }, + "fullDescription": { + "text": "Reports methods with certain names in the following cases: the method's name matches the name of several well-known interface methods from the standard library the signature does not match the signature of the corresponding interface method Such methods might indicate that the receiver type is intended to satisfy an interface from the standard library, but fails to do so because of the mistake in the method's signature. Example: 'type MyReader []byte\n\nfunc (r MyReader) ReadByte(data []byte) (byte, error) {\n}' The usage is suspicious because it looks like an attempt to implement 'io.ByteReader' but the signature is wrong. More correct version will be as follows: 'type MyReader []byte\n\nfunc (r MyReader) ReadByte() (byte, error) {\n}'", + "markdown": "Reports methods with certain names in the following cases:\n\n* the method's name matches the name of several well-known interface methods from the standard library\n* the signature does not match the signature of the corresponding interface method\n\nSuch methods might indicate that the receiver type is intended to satisfy an interface from the standard library,\nbut fails to do so because of the mistake in the method's signature.\n\nExample:\n\n type MyReader []byte\n\n func (r MyReader) ReadByte(data []byte) (byte, error) {\n }\n\nThe usage is suspicious because it looks like an attempt to implement `io.ByteReader` but the signature is wrong.\nMore correct version will be as follows:\n\n type MyReader []byte\n\n func (r MyReader) ReadByte() (byte, error) {\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoTypeParameterInLowerCase", + "shortDescription": { + "text": "Type parameter declared in lower case" + }, + "fullDescription": { + "text": "Reports type parameters which are declared in lower case. According to official Go examples, that's a good form to use type parameters in upper case. This inspection helps make your code more readable. 'func PrintSlice[t any](s []t) {\n for _, v := range s{\n print(v)\n }\n}' The type parameter 't' declared in lower case.", + "markdown": "Reports type parameters which are declared in lower case.\n\nAccording to official Go examples, that's a good form to use type parameters in upper case.\nThis inspection helps make your code more readable.\n\n func PrintSlice[t any](s []t) {\n for _, v := range s{\n print(v)\n }\n }\n\nThe type parameter `t` declared in lower case." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoStringsReplaceCount", + "shortDescription": { + "text": "Incorrect 'strings.Replace' count argument" + }, + "fullDescription": { + "text": "Reports 'strings.Replace' calls with the replace count '0' instead of '-1'. The count argument for how many times a string should be replaced should not be '0' as it will not replace anything and make the function call redundant. Use '-1' instead. Example: 'a := strings.Replace(\"SSS\", \"S\", \"H\", 0) // replaces nothing\nb := strings.Replace(\"SSS\", \"S\", \"H\", -1) // replaces all S occurrences with H'", + "markdown": "Reports `strings.Replace` calls with the replace count `0` instead of `-1`.\n\nThe count argument for how many times a string should be replaced should not be `0`\nas it will not replace anything and make the function call redundant. Use `-1` instead.\n\nExample:\n\n a := strings.Replace(\"SSS\", \"S\", \"H\", 0) // replaces nothing\n b := strings.Replace(\"SSS\", \"S\", \"H\", -1) // replaces all S occurrences with H\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoNameStartsWithPackageName", + "shortDescription": { + "text": "Name starts with a package name" + }, + "fullDescription": { + "text": "Reports exported names that start with a package name. This inspection does not report such names in the 'main' package. Example: 'package myPackage\n\nfunc MyPackageGetIP() {\n\n}' The 'MyPackageGetIP' name will be highlighted as it starts with the package name. According to Package Names at golang.org, all references to names in a package will be done using the package name, so one can omit that name from the identifiers. For example, if you are in a package 'foo', you do not need a type 'FooFile', which clients will write as 'foo.FooFile'. Instead, we name the type 'File', which clients will write as 'foo.File'.", + "markdown": "Reports exported names that start with a package name. This inspection does not report such names in the `main` package.\n\nExample:\n\n package myPackage\n\n func MyPackageGetIP() {\n\n }\n\nThe `MyPackageGetIP` name will be highlighted as it starts with the package name.\n\nAccording to\n[Package Names at golang.org](https://golang.org/wiki/CodeReviewComments#package-names),\nall references to names in a package will be done using the package name, so one can omit that name from the identifiers.\nFor example, if you are in a package `foo`, you do not need a type `FooFile`,\nwhich clients will write as `foo.FooFile`. Instead, we name the type `File`,\nwhich clients will write as `foo.File`." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoInterfaceToAny", + "shortDescription": { + "text": "Usage of 'interface{}' as a type" + }, + "fullDescription": { + "text": "Reports usages of the empty interface as a type or type constraint. The empty interface denotes the set of all types. Go 1.18 introduced the more explicit alias 'any' for 'interface{}', which is equivalent to 'interface{}' in all ways. The inspection is triggered for any usage of an empty interface as a type or type constraint. Aliases of the empty interface and interfaces that exclusively embed other empty interfaces do not trigger the inspection. Consider using the more explicit alias 'any' instead.", + "markdown": "Reports usages of the empty interface as a type or type constraint.\n\n\nThe empty interface denotes the set of all types.\nGo 1.18 introduced the more explicit alias `any` for `interface{}`,\nwhich is equivalent to `interface{}` in all ways.\n\nThe inspection is triggered for any usage of an empty interface as a type or type constraint.\nAliases of the empty interface and interfaces that exclusively embed other empty interfaces do not trigger the inspection.\n\nConsider using the more explicit alias `any` instead." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnsortedImport", + "shortDescription": { + "text": "Unsorted imports" + }, + "fullDescription": { + "text": "Reports unsorted imports. All Go programs should be formatted in the same way, the formatting rules are fixed by the gofmt tool. Those rules require imports to be sorted. Example of a wrong sorting: 'import (\n \"net\"\n \"errors\"\n \"fmt\"\n)' You can apply the Sort imports quick-fix to fix the sorting. After the quick-fix is applied, the sorting looks as follows: 'import (\n \"errors\"\n \"fmt\"\n \"net\"\n)'", + "markdown": "Reports unsorted imports.\n\nAll Go programs should be formatted in the same way, the formatting rules are fixed by the\n[gofmt](https://golang.org/cmd/gofmt) tool. Those rules require imports to be sorted.\n\nExample of a wrong sorting:\n\n import (\n \"net\"\n \"errors\"\n \"fmt\"\n )\n\nYou can apply the **Sort imports** quick-fix to fix the sorting. After the quick-fix is applied, the sorting\nlooks as follows:\n\n import (\n \"errors\"\n \"fmt\"\n \"net\"\n )\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedCallResult", + "shortDescription": { + "text": "Unused function or method call result" + }, + "fullDescription": { + "text": "Reports calls to certain functions and methods that do not handle a call result. An API of such functions imply that users should call them mostly to get a return value and process it, not for side effects. Calls that do not handle the result could be an indication of a misuse of the API. Example: 'fmt.Errorf(\"error: %s\", reason) // constructed error is ignored' After the Introduce local variable quick-fix is applied: 'err := fmt.Errorf(\"error: %s\", reason)'", + "markdown": "Reports calls to certain functions and methods that do not handle a call result.\n\nAn API of such functions imply that users\nshould call them mostly to get a return value and process it, not for side effects. Calls that do not handle the result\ncould be an indication of a misuse of the API.\n\nExample:\n\n fmt.Errorf(\"error: %s\", reason) // constructed error is ignored\n\nAfter the **Introduce local variable** quick-fix is applied:\n\n err := fmt.Errorf(\"error: %s\", reason)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoContextTodo", + "shortDescription": { + "text": "Usage of context.TODO()" + }, + "fullDescription": { + "text": "Reports usages of 'context.TODO()'. According to the documentation at pkg.go.dev, you need to use 'context.TODO' when it is unclear what 'Context' to use, or 'Context' is not yet available. 'Context' might not be available because of the surrounding function that has not yet been extended to accept the 'Context' parameter. Note that it is a temporary placeholder, and you must change it in the future to a more meaningful context (for example, 'context.Background()').", + "markdown": "Reports usages of `context.TODO()`.\n\nAccording to the [documentation at pkg.go.dev](https://pkg.go.dev/context#TODO),\nyou need to use `context.TODO` when it is unclear what\n`Context` to use, or `Context` is not yet available.\n`Context` might not be available because of the surrounding function that\nhas not yet been extended to accept the `Context` parameter.\n\nNote that it is a temporary placeholder, and you must change it in the future to a more meaningful\ncontext (for example, `context.Background()`)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedType", + "shortDescription": { + "text": "Unused type" + }, + "fullDescription": { + "text": "Reports unused types. 'type user struct {\n FirstName string `json:\"firstname\"`\n LastName string `json:\"lastname\"`\n}\n\nfunc main() {\n \n}' The 'user' type will be grayed out because it is not used anywhere in code.", + "markdown": "Reports unused types.\n\n type user struct {\n FirstName string `json:\"firstname\"`\n LastName string `json:\"lastname\"`\n }\n\n func main() {\n \n }\n\nThe `user` type will be grayed out because it is not used anywhere in code." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoFuzzingSupport", + "shortDescription": { + "text": "Fuzzing is supported starting with Go 1.18" + }, + "fullDescription": { + "text": "Reports presence of fuzz tests when Go SDK version is less than 1.18 Fuzz testing is a method of automated testing that involves a directed search for input data that may cause a program crash or expose invalid behavior. Go supports fuzz testing starting from Go 1.18. Example of a fuzz test: 'func Div(a, b int) int {\n\treturn a / b\n}\n\nfunc FuzzDiv(f *testing.F) {\n\tf.Fuzz(func(t *testing.T, a, b int) {\n\t\tDiv(a, b) // reports runtime error: integer divide by zero\n\t})\n}' See Go Fuzzing for more information.", + "markdown": "Reports presence of fuzz tests when Go SDK version is less than 1.18\n\nFuzz testing is a method of automated testing that involves a directed search for input data that may cause a program crash\nor expose invalid behavior. Go supports fuzz testing starting from Go 1.18.\n\nExample of a fuzz test:\n\n\n func Div(a, b int) int {\n \treturn a / b\n }\n\n func FuzzDiv(f *testing.F) {\n \tf.Fuzz(func(t *testing.T, a, b int) {\n \t\tDiv(a, b) // reports runtime error: integer divide by zero\n \t})\n }\n\n\nSee [Go Fuzzing](https://go.dev/doc/fuzz/) for more information." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/General", + "index": 3, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoBoolExpressions", + "shortDescription": { + "text": "Bool condition" + }, + "fullDescription": { + "text": "Reports parts of boolean expressions that are either always 'true', always 'false', or redundant. Such boolean expressions can be simplified, which may improve a readability of the code. In some cases, this also indicates a presence of other issues. Example: 'func isNonZero(x, y int) bool {\n // the second comparison is either always true\n // or not executed at all\n return x > 0 && x > 0\n}' You can apply the Simplify expression quick-fix for the 'x > 0 && x > 0' part. After the quick-fix is applied, the expression looks as follows: 'x > 0'.", + "markdown": "Reports parts of boolean expressions that are either always `true`, always `false`, or redundant. Such boolean expressions can be simplified, which may improve a readability of the code. In some cases, this also indicates a presence of other issues.\n\nExample:\n\n func isNonZero(x, y int) bool {\n // the second comparison is either always true\n // or not executed at all\n return x > 0 && x > 0\n }\n\nYou can apply the **Simplify expression** quick-fix for the `x > 0 && x > 0` part. After the quick-fix\nis applied, the expression looks as follows: `x > 0`." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoExportedOwnDeclaration", + "shortDescription": { + "text": "Exported element should have its own declaration" + }, + "fullDescription": { + "text": "Reports exported variables or constants in comma-separated lists of declarations. Example: 'const C1, C3, C2, C44, C9, C11, C6 = 1, 2, 3, 1, 3, 2, 1' This declaration makes it hard to understand what value each constant has. You can apply the Extract to own declaration quick-fix to make this declaration more readable. After the quick-fix is applied to each constant, the declaration looks as follows: 'const (\n C3 = 2\n C2 = 3\n C44 = 1\n C9 = 3\n C11 = 2\n C6 = 1\n C1 = 1\n)'", + "markdown": "Reports exported variables or constants in comma-separated lists of declarations.\n\nExample:\n\n const C1, C3, C2, C44, C9, C11, C6 = 1, 2, 3, 1, 3, 2, 1\n\nThis declaration makes it hard to understand what value each constant has. You can apply the **Extract to own declaration** quick-fix\nto make this declaration more readable. After the quick-fix is applied to each constant, the declaration looks as follows:\n\n const (\n C3 = 2\n C2 = 3\n C44 = 1\n C9 = 3\n C11 = 2\n C6 = 1\n C1 = 1\n )\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Code style issues", + "index": 16, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoDivisionByZero", + "shortDescription": { + "text": "Division by zero" + }, + "fullDescription": { + "text": "Reports division by zero. Division by zero will lead to a runtime panic. Example: 's := 3 / 0'", + "markdown": "Reports division by zero.\n\nDivision by zero will lead to a runtime panic.\n\nExample:\n\n s := 3 / 0\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoMixedReceiverTypes", + "shortDescription": { + "text": "Mixed value and pointer receivers" + }, + "fullDescription": { + "text": "Reports structures with methods that use a mixture of types: value and pointer receivers. Such usage is not recommended by the Go Documentation. For details, see Should I define methods on values or pointers? in the Go FAQ. Example: 'type S struct{\n}\n\nfunc (s *S) fun() {}\nfunc (s S) fun2() {}'", + "markdown": "Reports structures with methods that use a mixture of types: value and pointer receivers. Such usage is not recommended by the Go Documentation.\n\nFor details, see [Should I define methods on values or pointers?](https://go.dev/doc/faq#methods_on_values_or_pointers) in the Go FAQ.\n\nExample:\n\n type S struct{\n }\n\n func (s *S) fun() {}\n func (s S) fun2() {}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoUnusedGlobalVariable", + "shortDescription": { + "text": "Unused global variable" + }, + "fullDescription": { + "text": "Reports global variables that are defined but are never used in code. If you have unused variables, the code will not compile. For more information about unused variables and imports, see Unused imports and variables at golang.org. 'func main() {\n a := 422\n}' Code in the example will not compile. Therefore, it is highlighted as an error. You can apply two quick-fixes for such cases: Delete variable and Rename _. The first quick-fix deletes the variable, the second one will convert the variable to a blank identifier. After the Rename _ quick-fix is applied: 'func main() {\n _ := 422\n}'", + "markdown": "Reports global variables that are defined but are never used in code.\n\nIf you have unused variables, the code will not compile.\nFor more information about unused variables and imports, see [Unused imports and\nvariables at golang.org](https://golang.org/doc/effective_go#blank_unused).\n\n func main() {\n a := 422\n }\n\nCode in the example will not compile. Therefore, it is highlighted as an error. You can apply two quick-fixes for such cases:\n**Delete variable** and **Rename _**. The first quick-fix deletes the variable, the second one will convert the variable to a blank\nidentifier.\n\nAfter the **Rename _** quick-fix is applied:\n\n func main() {\n _ := 422\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Declaration redundancy", + "index": 4, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoLoopClosure", + "shortDescription": { + "text": "Loop variables captured by the func literal" + }, + "fullDescription": { + "text": "Reports references to loop variables from within 'func' literals in 'defer' and 'go' statements. Such variables might have unexpected values because they are not copied to 'func' literals, and the 'func' literals in 'defer' and 'go' are not executed immediately. For more information about closures and goroutines, see What happens with closures running as goroutines? at golang.org. Example: 'for _, v := range []string{\"a\", \"b\", \"c\"} {\n go func() {\n fmt.Println(v) // output will likely be `c c c`, not `a b c`\n }()\n}' After the quick-fix is applied: 'for _, v := range []string{\"a\", \"b\", \"c\"} {\n v := v // `v` is copied now\n go func() {\n fmt.Println(v)\n }()\n}' Note the analyzer only checks 'defer' and 'go' statements when they are the last statement in the loop body. Otherwise, the analysis might produce false detections.", + "markdown": "Reports references to loop variables from within `func` literals in `defer` and `go` statements. Such variables might have unexpected values because they are not copied to `func` literals, and the `func` literals in `defer` and `go` are not executed immediately.\n\nFor more information about closures and goroutines, see [What happens\nwith closures running as goroutines? at golang.org](https://golang.org/doc/go_faq.html#closures_and_goroutines).\n\nExample:\n\n for _, v := range []string{\"a\", \"b\", \"c\"} {\n go func() {\n fmt.Println(v) // output will likely be `c c c`, not `a b c`\n }()\n }\n\nAfter the quick-fix is applied:\n\n for _, v := range []string{\"a\", \"b\", \"c\"} {\n v := v // `v` is copied now\n go func() {\n fmt.Println(v)\n }()\n }\n\nNote the analyzer only checks `defer` and `go` statements when they are the last statement in the loop body.\nOtherwise, the analysis might produce false detections." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoAssignmentToReceiver", + "shortDescription": { + "text": "Assignment to a receiver" + }, + "fullDescription": { + "text": "Reports assignments to method receivers. When you assign a value to the method receiver, the value will not be reflected outside of the method itself. Values will be reflected in subsequent calls from the same method. Example: 'package main\n\nimport \"fmt\"\n\ntype demo struct {\n Val int\n}\n\nfunc (d *demo) change() {\n d = nil // Assignment to the method receiver propagates only to callees but not to callers\n d.myVal()\n}\n\nfunc (d *demo) myVal() {\n fmt.Printf(\"my val: %#v\\n\", d)\n}\n\nfunc (d demo) change2() {\n d = demo{} // Assignment to the method receiver doesn't propagate to other calls\n d.myVal()\n}\n\nfunc (d *demo) change3() {\n d.Val = 3\n d.myVal()\n}\n\nfunc main() {\n d := &demo{}\n d.myVal()\n d.change()\n d.myVal()\n d.Val = 2\n d.change2()\n d.myVal()\n d.change3()\n d.myVal()\n}'", + "markdown": "Reports assignments to method receivers.\n\nWhen you assign a value to the method receiver, the value will not be reflected outside of the method itself.\nValues will be reflected in subsequent calls from the same method.\n\nExample:\n\n package main\n\n import \"fmt\"\n\n type demo struct {\n Val int\n }\n\n func (d *demo) change() {\n d = nil // Assignment to the method receiver propagates only to callees but not to callers\n d.myVal()\n }\n\n func (d *demo) myVal() {\n fmt.Printf(\"my val: %#v\\n\", d)\n }\n\n func (d demo) change2() {\n d = demo{} // Assignment to the method receiver doesn't propagate to other calls\n d.myVal()\n }\n\n func (d *demo) change3() {\n d.Val = 3\n d.myVal()\n }\n\n func main() {\n d := &demo{}\n d.myVal()\n d.change()\n d.myVal()\n d.Val = 2\n d.change2()\n d.myVal()\n d.change3()\n d.myVal()\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Control flow issues", + "index": 23, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetAtomic", + "shortDescription": { + "text": "Incorrect usage of the 'sync/atomic' package" + }, + "fullDescription": { + "text": "Reports assignment statements of the form 'x = atomic.AddUint64(&x, 1)'. Such operations are not atomic, and is a common misuse of the 'sync/atomic' API. To make them atomic, one need to remove the assignment to use a direct call: 'atomic.AddUint64(&x, 1)'. In that case, the value of 'x' will be updated atomically by address. Example: 'import (\n \"sync/atomic\"\n)\n\ntype Counter uint64\n\nfunc AtomicTests() {\n x := uint64(1)\n x = atomic.AddUint64(&x, 1) // ERROR \"direct assignment to atomic value\"\n _, x = 10, atomic.AddUint64(&x, 1) // ERROR \"direct assignment to atomic value\"\n x, _ = atomic.AddUint64(&x, 1), 10 // ERROR \"direct assignment to atomic value\"\n}'", + "markdown": "Reports assignment statements of the form `x = atomic.AddUint64(&x, 1)`.\n\nSuch operations are not atomic,\nand is a common misuse of the `sync/atomic` API. To make them atomic, one need to remove the assignment\nto use a direct call: `atomic.AddUint64(&x, 1)`. In that case, the value of `x` will be updated\natomically by address.\n\nExample:\n\n import (\n \"sync/atomic\"\n )\n\n type Counter uint64\n\n func AtomicTests() {\n x := uint64(1)\n x = atomic.AddUint64(&x, 1) // ERROR \"direct assignment to atomic value\"\n _, x = 10, atomic.AddUint64(&x, 1) // ERROR \"direct assignment to atomic value\"\n x, _ = atomic.AddUint64(&x, 1), 10 // ERROR \"direct assignment to atomic value\"\n }\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoBuildTag", + "shortDescription": { + "text": "Malformed build tag" + }, + "fullDescription": { + "text": "Reports malformed build tags and build tags in the incorrect location. The 'go' tool expects build tags to be located in particular places and follow a special syntax. If these requirements are not followed, build tags could either be ignored or the files could be incorrectly excluded from the build. See Build Constraints at golang.org. Example: 'package main\n\n// +build ignore\n\nfunc main() {}' The '// +build ignore' part should be before the package declaration. To fix that, you can apply the Place build tag before package quick-fix. After the quick-fix is applied: '// +build ignore\n\npackage main\n\nimport \"fmt\"'", + "markdown": "Reports malformed build tags and build tags in the incorrect location. The `go` tool expects build tags to be located in particular places and follow a special syntax. If these requirements are not followed, build tags could either be ignored or the files could be incorrectly excluded from the build.\n\nSee [Build Constraints at golang.org](https://golang.org/pkg/go/build/#hdr-Build_Constraints).\n\nExample:\n\n package main\n\n // +build ignore\n\n func main() {}\n\nThe `// +build ignore` part should be before the package declaration. To fix that, you can apply\nthe **Place build tag before package** quick-fix. After the quick-fix is applied:\n\n // +build ignore\n\n package main\n\n import \"fmt\"\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoVetUnmarshal", + "shortDescription": { + "text": "'Unmarshal' is called with the incorrect argument" + }, + "fullDescription": { + "text": "Reports calls to 'json.Unmarshal' and similar functions if the argument that is passed to store the result is not a pointer or an interface. These calls will fail and return an error. For more information about 'Unmarshal', see func Unmarshal at golang.org. Example: 'var animals []Animal\nerr := json.Unmarshal(jsonData, animals) // always returns an error' After the Prepend '&' quick-fix is applied: 'var animals []Animal\nerr := json.Unmarshal(jsonData, &animals)'", + "markdown": "Reports calls to `json.Unmarshal` and similar functions if the argument that is passed to store the result is not a pointer or an interface.\n\nThese calls will fail and return an error.\n\nFor more information about `Unmarshal`, see [func Unmarshal at\ngolang.org](https://golang.org/pkg/encoding/json/#Unmarshal).\n\nExample:\n\n var animals []Animal\n err := json.Unmarshal(jsonData, animals) // always returns an error\n\nAfter the **Prepend '\\&'** quick-fix is applied:\n\n var animals []Animal\n err := json.Unmarshal(jsonData, &animals)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go/Probable bugs", + "index": 2, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij", + "version": "223.7255.10", + "rules": [ + { + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownBooleanAttribute", + "shortDescription": { + "text": "Incorrect boolean attribute" + }, + "fullDescription": { + "text": "Reports an HTML non-boolean attribute without a value. Suggests configuring attributes that should not be reported.", + "markdown": "Reports an HTML non-boolean attribute without a value. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "DuplicatedCode", + "shortDescription": { + "text": "Duplicated code fragment" + }, + "fullDescription": { + "text": "Reports duplicated blocks of code from the selected scope: the same file or the entire project. The inspection features quick-fixes that help you to set the size of detected duplicates, navigate to repetitive code fragments, and compare them in a tool window. The inspection options allow you to select the scope of the reported duplicated fragments and set the initial size for the duplicated language constructs. You can also configure the constructs that you want to anonymize in File | Settings | Editor | Duplicates.", + "markdown": "Reports duplicated blocks of code from the selected scope: the same file or the entire project. The inspection features quick-fixes that help you to set the size of detected duplicates, navigate to repetitive code fragments, and compare them in a tool window. The inspection options allow you to select the scope of the reported duplicated fragments and set the initial size for the duplicated language constructs. You can also configure the constructs that you want to anonymize in [File \\| Settings \\| Editor \\| Duplicates](settings://duplicates.index)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReassignedToPlainText", + "shortDescription": { + "text": "Reassigned to plain text" + }, + "fullDescription": { + "text": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically. You can dismiss this warning by removing the file type association in Settings | Editor | File Types | Text.", + "markdown": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically.\n\nYou can dismiss this warning by removing the file type association\nin **Settings \\| Editor \\| File Types \\| Text**." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownTarget", + "shortDescription": { + "text": "Unresolved file in a link" + }, + "fullDescription": { + "text": "Reports an unresolved file in a link.", + "markdown": "Reports an unresolved file in a link." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SSBasedInspection", + "shortDescription": { + "text": "Structural search inspection" + }, + "fullDescription": { + "text": "Allows configuring Structural Search/Structural Replace templates that you can apply to the file you are editing. All matches will be highlighted and marked with the template name that you have configured. If you configure the Structural Replace pattern as well, the corresponding replace option will be available as a quick-fix.", + "markdown": "Allows configuring **Structural Search/Structural Replace** templates that you can apply to the file you are editing.\n\nAll matches will be highlighted and marked with the template name that you have configured.\nIf you configure the **Structural Replace** pattern as well, the corresponding replace option will be available as a quick-fix." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Structural search", + "index": 15, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlUnusedNamespaceDeclaration", + "shortDescription": { + "text": "Unused schema declaration" + }, + "fullDescription": { + "text": "Reports an unused namespace declaration or location hint in XML.", + "markdown": "Reports an unused namespace declaration or location hint in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSimplifiable", + "shortDescription": { + "text": "Regular expression can be simplified" + }, + "fullDescription": { + "text": "Reports regular expressions that can be simplified. Example: '[a] xx* [ah-hz]' After the quick-fix is applied: 'a x+ [ahz]' New in 2022.1", + "markdown": "Reports regular expressions that can be simplified.\n\n**Example:**\n\n\n [a] xx* [ah-hz]\n\nAfter the quick-fix is applied:\n\n\n a x+ [ahz]\n\nNew in 2022.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlWrongRootElement", + "shortDescription": { + "text": "Wrong root element" + }, + "fullDescription": { + "text": "Reports a root tag name different from the name specified in the '' tag.", + "markdown": "Reports a root tag name different from the name specified in the `` tag." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Annotator", + "shortDescription": { + "text": "Annotator" + }, + "fullDescription": { + "text": "Reports problems that are found by language annotators in the result of a batch code inspection run.", + "markdown": "Reports problems that are found by language annotators in the result of a batch code inspection run." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSuspiciousBackref", + "shortDescription": { + "text": "Suspicious back reference" + }, + "fullDescription": { + "text": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation. Example of a group defined after its back reference: '\\1(abc)' Example of a group and a back reference in different branches: 'a(b)c|(xy)\\1z' New in 2022.1", + "markdown": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation.\n\n**Example of a group defined after its back reference:**\n\n\n \\1(abc)\n\n**Example of a group and a back reference in different branches:**\n\n\n a(b)c|(xy)\\1z\n\nNew in 2022.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSingleCharAlternation", + "shortDescription": { + "text": "Single character alternation" + }, + "fullDescription": { + "text": "Reports single char alternation in a RegExp. It is simpler to use a character class instead. This may also provide better matching performance. Example: 'a|b|c|d' After the quick-fix is applied: '[abcd]' New in 2017.1", + "markdown": "Reports single char alternation in a RegExp. It is simpler to use a character class instead. This may also provide better matching performance.\n\n**Example:**\n\n\n a|b|c|d\n\nAfter the quick-fix is applied:\n\n\n [abcd]\n\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpUnnecessaryNonCapturingGroup", + "shortDescription": { + "text": "Unnecessary non-capturing group" + }, + "fullDescription": { + "text": "Reports unnecessary non-capturing groups, which have no influence on the match result. Example: 'Everybody be cool, (?:this) is a robbery!' After the quick-fix is applied: 'Everybody be cool, this is a robbery!' New in 2021.1", + "markdown": "Reports unnecessary non-capturing groups, which have no influence on the match result.\n\n**Example:**\n\n\n Everybody be cool, (?:this) is a robbery!\n\nAfter the quick-fix is applied:\n\n\n Everybody be cool, this is a robbery!\n\nNew in 2021.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckTagEmptyBody", + "shortDescription": { + "text": "Empty element content" + }, + "fullDescription": { + "text": "Reports XML elements without contents. Example: '\n \n ' After the quick-fix is applied: '\n \n '", + "markdown": "Reports XML elements without contents.\n\n**Example:**\n\n\n \n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RELAX NG", + "index": 22, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IncorrectFormatting", + "shortDescription": { + "text": "Incorrect formatting" + }, + "fullDescription": { + "text": "Reports formatting issues that appear if your code doesn't follow your project's code style settings. This inspection is not compatible with languages that require third-party formatters for code formatting, for example, Go or C with CLangFormat enabled.", + "markdown": "Reports formatting issues that appear if your code doesn't\nfollow your project's code style settings.\n\n\nThis inspection is not compatible with languages that require\nthird-party formatters for code formatting, for example, Go or\nC with CLangFormat enabled." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlWrongAttributeValue", + "shortDescription": { + "text": "Wrong attribute value" + }, + "fullDescription": { + "text": "Reports an incorrect HTML attribute value.", + "markdown": "Reports an incorrect HTML attribute value." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RELAX NG", + "index": 22, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EmptyDirectory", + "shortDescription": { + "text": "Empty directory" + }, + "fullDescription": { + "text": "Reports empty directories. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Only report empty directories located under a source folder option to have only directories under source roots reported.", + "markdown": "Reports empty directories.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor.\n\nUse the **Only report empty directories located under a source folder** option to have only directories under source\nroots reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SyntaxError", + "shortDescription": { + "text": "Syntax error" + }, + "fullDescription": { + "text": "Reports syntax errors that have been found in the result of a batch code inspection run.", + "markdown": "Reports syntax errors that have been found in the result of a batch code inspection run." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckDtdRefs", + "shortDescription": { + "text": "Unresolved DTD reference" + }, + "fullDescription": { + "text": "Reports inconsistency in a DTD-specific reference, for example, in a reference to an XML entity or to a DTD element declaration. Works in DTD an XML files.", + "markdown": "Reports inconsistency in a DTD-specific reference, for example, in a reference to an XML entity or to a DTD element declaration. Works in DTD an XML files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "TYPO", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 24, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckXmlFileWithXercesValidator", + "shortDescription": { + "text": "Failed external validation" + }, + "fullDescription": { + "text": "Reports a discrepancy in an XML file with the specified DTD or schema detected by the Xerces validator.", + "markdown": "Reports a discrepancy in an XML file with the specified DTD or schema detected by the Xerces validator." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 5, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Internationalization", + "index": 25, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpEscapedMetaCharacter", + "shortDescription": { + "text": "Escaped meta character" + }, + "fullDescription": { + "text": "Reports escaped meta characters. Some RegExp coding styles specify that meta characters should be placed inside a character class, to make the regular expression easier to understand. This inspection does not warn about the meta character '[', ']' and '^', because those would need additional escaping inside a character class. Example: '\\d+\\.\\d+' After the quick-fix is applied: '\\d+[.]\\d+' New in 2017.1", + "markdown": "Reports escaped meta characters. Some RegExp coding styles specify that meta characters should be placed inside a character class, to make the regular expression easier to understand. This inspection does not warn about the meta character `[`, `]` and `^`, because those would need additional escaping inside a character class.\n\n**Example:**\n\n\n \\d+\\.\\d+\n\nAfter the quick-fix is applied:\n\n\n \\d+[.]\\d+\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Internationalization", + "index": 25, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "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": true, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 8, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IgnoreFileDuplicateEntry", + "shortDescription": { + "text": "Ignore file duplicates" + }, + "fullDescription": { + "text": "Reports duplicate entries (patters) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed. Example: # Output directories\n /out/\n /target/\n /out/", + "markdown": "Reports duplicate entries (patters) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed.\n\nExample:\n\n```\n # Output directories\n /out/\n /target/\n /out/\n```" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Version control", + "index": 27, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckEmptyScriptTag", + "shortDescription": { + "text": "Empty tag" + }, + "fullDescription": { + "text": "Reports empty tags that do not work in some browsers. Example: '\n \n '", + "markdown": "Reports empty tags that do not work in some browsers.\n\n**Example:**\n\n\n \n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 7, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.jetbrains.plugins.yaml", + "version": "223.7255", + "rules": [ + { + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 6, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 6, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 6, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 6, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 6, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 6, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij.css", + "version": "223.7255", + "rules": [ + { + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Probable bugs", + "index": 11, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Code style issues", + "index": 19, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Code style issues", + "index": 19, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Probable bugs", + "index": 11, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Probable bugs", + "index": 11, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS/Invalid elements", + "index": 14, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "CSS", + "index": 9, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "HtmlTools", + "version": "223.7255", + "rules": [ + { + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML/Accessibility", + "index": 13, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML/Accessibility", + "index": 13, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "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": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML/Accessibility", + "index": 13, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML/Accessibility", + "index": 13, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "INFORMATION", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML/Accessibility", + "index": 13, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML/Accessibility", + "index": 13, + "toolComponent": { + "name": "QDGO" + } + }, + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "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": "warning", + "parameters": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 10, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.intellij.intelliLang", + "version": "223.7255", + "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": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.jetbrains.plugins.go-template", + "version": "223.7255", + "rules": [ + { + "id": "GoTemplateUnknownVariable", + "shortDescription": { + "text": "Unknown variable" + }, + "fullDescription": { + "text": "Reports usages of unknown variables in Go Templates. Parsing of such templates will cause panic because variables must be declared before usage. Example: '{{$v}} is zero. {{/* bad, $v is unknown */}}\n{{$v := 0}}{{$v}} is zero. {{/* good */}}'", + "markdown": "Reports usages of unknown variables in Go Templates.\n\nParsing of such templates will cause panic because variables must be declared before usage.\n\nExample:\n\n {{$v}} is zero. {{/* bad, $v is unknown */}}\n {{$v := 0}}{{$v}} is zero. {{/* good */}}\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go Template/General", + "index": 21, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GoTemplateDuplicateVariable", + "shortDescription": { + "text": "Duplicate variable" + }, + "fullDescription": { + "text": "Reports duplicate Go Template variables that are declared in the same scope. Duplicating a variable reassigns the existing variable with the same name. This operation might lead to different unpredicatable issues. Example: '{{$v := 0}}{{$v := 1}}{{$v}} is 0. {{/* evaluates to '1 is 0' */}}\n{{$v := 0}}{{$w := 1}}{{$v}} is 0. {{/* works as expected */}}'", + "markdown": "Reports duplicate Go Template variables that are declared in the same scope.\n\nDuplicating a variable reassigns the existing variable with the same name. This operation might lead to different\nunpredicatable issues.\n\nExample:\n\n {{$v := 0}}{{$v := 1}}{{$v}} is 0. {{/* evaluates to '1 is 0' */}}\n {{$v := 0}}{{$w := 1}}{{$v}} is 0. {{/* works as expected */}}\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Go Template/General", + "index": 21, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "tanvd.grazi", + "version": "223.7255", + "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": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 24, + "toolComponent": { + "name": "QDGO" + } + }, + "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.", + "markdown": "Reports grammar mistakes in your text. You can configure the inspection in [Settings \\| Editor \\| Natural Languages \\| Grammar](settings://reference.settingsdialog.project.grazie)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "ideaSeverity": "TYPO", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 24, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.intellij.qodana", + "version": "223.7255", + "rules": [ + { + "id": "QodanaServiceMessage", + "shortDescription": { + "text": "Qodana service message" + }, + "fullDescription": { + "text": "Reports the Qodana service messages such as suspending a particular inspection due to a large number of reported problems.", + "markdown": "Reports the Qodana service messages such as suspending a particular inspection due to a large number of reported problems." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "ideaSeverity": "ERROR", + "tags": [ + "ideaSeverity" + ] + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 12, + "toolComponent": { + "name": "QDGO" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + } + ] + }, + "invocations": [ + { + "exitCode": 0, + "toolExecutionNotifications": [], + "executionSuccessful": true + } + ], + "language": "en-US", + "versionControlProvenance": [ + { + "repositoryUri": "https://github.com/qodana/cobra", + "revisionId": "ee09e39af61d5fabe7af406df17d09d4758ef02c", + "branch": "main", + "properties": { + "repoUrl": "https://github.com/qodana/cobra", + "lastAuthorName": "Viktor", + "vcsType": "Git", + "lastAuthorEmail": "viktor@tiulp.in", + "tags": [ + "repoUrl", + "lastAuthorEmail", + "lastAuthorName", + "vcsType" + ] + } + } + ], + "results": [ + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported constant 'FlagSetByCobraAnnotation' should have a comment or be unexported", + "markdown": "Exported constant `FlagSetByCobraAnnotation` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 33, + "startColumn": 7, + "charOffset": 974, + "charLength": 24, + "snippet": { + "text": "FlagSetByCobraAnnotation" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 31, + "startColumn": 1, + "charOffset": 965, + "charLength": 138, + "snippet": { + "text": ")\n\nconst FlagSetByCobraAnnotation = \"cobra_annotation_flag_set_by_cobra\"\n\n// FParseErrWhitelist configures Flag parse errors to be ignored" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "331766107627bc5a5b39a222f53509567c9c2b4bfe3d51a88e47b537cacdabb3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'ValidateArgs' should have a comment or be unexported", + "markdown": "Exported method `ValidateArgs` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1064, + "startColumn": 19, + "charOffset": 30810, + "charLength": 12, + "snippet": { + "text": "ValidateArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1062, + "startColumn": 1, + "charOffset": 30789, + "charLength": 108, + "snippet": { + "text": "}\n\nfunc (c *Command) ValidateArgs(args []string) error {\n\tif c.Args == nil {\n\t\treturn ArbitraryArgs(c, args)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f93466390ad873e07560d6a65bd8bf5cb5debfdf68f50b4572a53fa767954dbc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'Len' should have a comment or be unexported", + "markdown": "Exported method `Len` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1200, + "startColumn": 30, + "charOffset": 34811, + "charLength": 3, + "snippet": { + "text": "Len" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1198, + "startColumn": 1, + "charOffset": 34745, + "charLength": 266, + "snippet": { + "text": "type commandSorterByName []*Command\n\nfunc (c commandSorterByName) Len() int { return len(c) }\nfunc (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] }\nfunc (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() }" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f3aa6134b022408ec4c9aea5d5a4c2f3c3f55e6f7ba1a2a47fa4597e4ecf0582" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'Swap' should have a comment or be unexported", + "markdown": "Exported method `Swap` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1201, + "startColumn": 30, + "charOffset": 34878, + "charLength": 4, + "snippet": { + "text": "Swap" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1199, + "startColumn": 1, + "charOffset": 34781, + "charLength": 231, + "snippet": { + "text": "\nfunc (c commandSorterByName) Len() int { return len(c) }\nfunc (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] }\nfunc (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() }\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a5e5e00f801cbdb64223befa5d155f8e3242e32b0b4d6d7b3975bd8add83d099" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'Less' should have a comment or be unexported", + "markdown": "Exported method `Less` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1202, + "startColumn": 30, + "charOffset": 34955, + "charLength": 4, + "snippet": { + "text": "Less" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1200, + "startColumn": 1, + "charOffset": 34782, + "charLength": 284, + "snippet": { + "text": "func (c commandSorterByName) Len() int { return len(c) }\nfunc (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] }\nfunc (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() }\n\n// Commands returns a sorted slice of child commands." + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "47e69feee521056cb0def5412f8d99f1cb7ea3971b66bb398f613c36e9323f58" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported type 'PositionalArgs' should have a comment or be unexported", + "markdown": "Exported type `PositionalArgs` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 6, + "charOffset": 651, + "charLength": 14, + "snippet": { + "text": "PositionalArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 643, + "charLength": 117, + "snippet": { + "text": ")\n\ntype PositionalArgs func(cmd *Command, args []string) error\n\n// Legacy arg validation has the following behaviour:" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4c1bbb8608f4e5abe9f1d077fc0e7e0753475f560ebec62bd23b5c98d18b96b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'Len' should have a comment or be unexported", + "markdown": "Exported method `Len` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/util.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 50, + "startColumn": 17, + "charOffset": 1381, + "charLength": 3, + "snippet": { + "text": "Len" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 48, + "startColumn": 1, + "charOffset": 1335, + "charLength": 220, + "snippet": { + "text": "type byName []*cobra.Command\n\nfunc (s byName) Len() int { return len(s) }\nfunc (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\nfunc (s byName) Less(i, j int) bool { return s[i].Name() < s[j].Name() }" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c0f739d6567c7e7ca1e69517342c99c273087aab2d756670a80ffa054314f4ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'Swap' should have a comment or be unexported", + "markdown": "Exported method `Swap` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/util.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 51, + "startColumn": 17, + "charOffset": 1435, + "charLength": 4, + "snippet": { + "text": "Swap" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 49, + "startColumn": 1, + "charOffset": 1364, + "charLength": 192, + "snippet": { + "text": "\nfunc (s byName) Len() int { return len(s) }\nfunc (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\nfunc (s byName) Less(i, j int) bool { return s[i].Name() < s[j].Name() }\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2112ed8c2a16bf25d4edb97a761d7da7a75b9912f7dd8d91bf8d10f7602a7898" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoExportedElementShouldHaveComment", + "kind": "fail", + "level": "note", + "message": { + "text": "Exported method 'Less' should have a comment or be unexported", + "markdown": "Exported method `Less` should have a comment or be unexported" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/util.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 52, + "startColumn": 17, + "charOffset": 1499, + "charLength": 4, + "snippet": { + "text": "Less" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 50, + "startColumn": 1, + "charOffset": 1365, + "charLength": 191, + "snippet": { + "text": "func (s byName) Len() int { return len(s) }\nfunc (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\nfunc (s byName) Less(i, j int) bool { return s[i].Name() < s[j].Name() }\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "026a788e1676c866cb99f6539c04ca0a4121249781b46a293f2a7a447433b5f4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoRedundantParens", + "kind": "fail", + "level": "note", + "message": { + "text": "Redundant parentheses", + "markdown": "Redundant parentheses" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 193, + "startColumn": 22, + "charOffset": 7747, + "charLength": 45, + "snippet": { + "text": "(cmd.CalledAs() == ShellCompNoDescRequestCmd)" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 191, + "startColumn": 1, + "charOffset": 7720, + "charLength": 176, + "snippet": { + "text": "\t\t\t}\n\n\t\t\tnoDescriptions := (cmd.CalledAs() == ShellCompNoDescRequestCmd)\n\t\t\tfor _, comp := range completions {\n\t\t\t\tif GetActiveHelpConfig(finalCmd) == activeHelpGlobalDisable {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "96a0a80bb53f9b242b7e36786f62e4181e1c2b190a0f64bb751429f5faa32910" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoRedundantParens", + "kind": "fail", + "level": "note", + "message": { + "text": "Redundant parentheses", + "markdown": "Redundant parentheses" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 671, + "startColumn": 9, + "charOffset": 21010, + "charLength": 89, + "snippet": { + "text": "((len(arg) >= 3 && arg[1] == '-') ||\n\t\t(len(arg) >= 2 && arg[0] == '-' && arg[1] != '-'))" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 669, + "startColumn": 1, + "charOffset": 20967, + "charLength": 135, + "snippet": { + "text": "\nfunc isFlagArg(arg string) bool {\n\treturn ((len(arg) >= 3 && arg[1] == '-') ||\n\t\t(len(arg) >= 2 && arg[0] == '-' && arg[1] != '-'))\n}\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aa14d6bd9c3a281dfaf028912a4e2ad44e0fa70bfc160614d97db6230f50fdbf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'cmd'", + "markdown": "Unused parameter `cmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 116, + "startColumn": 24, + "charOffset": 4528, + "charLength": 3, + "snippet": { + "text": "cmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 114, + "startColumn": 1, + "charOffset": 4387, + "charLength": 265, + "snippet": { + "text": "// NoFileCompletions can be used to disable file completion for commands that should\n// not trigger file completions.\nfunc NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\treturn nil, ShellCompDirectiveNoFileComp\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "710707148b5e3ab7e02eadf8fd4a51bdbb0010a26839e8ca43215f53fca55f4d" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'args'", + "markdown": "Unused parameter `args`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 116, + "startColumn": 38, + "charOffset": 4542, + "charLength": 4, + "snippet": { + "text": "args" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 114, + "startColumn": 1, + "charOffset": 4387, + "charLength": 265, + "snippet": { + "text": "// NoFileCompletions can be used to disable file completion for commands that should\n// not trigger file completions.\nfunc NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\treturn nil, ShellCompDirectiveNoFileComp\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e0543825d56a556e9b50ab53b3416004c663a787fe1efc819cfe21ff9ae118aa" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'toComplete'", + "markdown": "Unused parameter `toComplete`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 116, + "startColumn": 53, + "charOffset": 4557, + "charLength": 10, + "snippet": { + "text": "toComplete" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 114, + "startColumn": 1, + "charOffset": 4387, + "charLength": 265, + "snippet": { + "text": "// NoFileCompletions can be used to disable file completion for commands that should\n// not trigger file completions.\nfunc NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\treturn nil, ShellCompDirectiveNoFileComp\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8fb257e08341476839ad6c7cbacce52b6029dae56ce57ff5c489aa7ff1431bc0" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'argPosition int'", + "markdown": "Unused parameter `argPosition int`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "zsh_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 55, + "startColumn": 53, + "charOffset": 2034, + "charLength": 15, + "snippet": { + "text": "argPosition int" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 53, + "startColumn": 1, + "charOffset": 1965, + "charLength": 127, + "snippet": { + "text": "//\n// Deprecated\nfunc (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error {\n\treturn nil\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "29eb19a8fb9e6793ce19b3252cfce9ee32c2c7efccd8f1c4025b3ae8be5c5e92" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'patterns ...string'", + "markdown": "Unused parameter `patterns ...string`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "zsh_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 55, + "startColumn": 70, + "charOffset": 2051, + "charLength": 18, + "snippet": { + "text": "patterns ...string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 53, + "startColumn": 1, + "charOffset": 1965, + "charLength": 127, + "snippet": { + "text": "//\n// Deprecated\nfunc (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error {\n\treturn nil\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a6410cd1a3f70c07f3f4482211ec618dd29cf5f0ca5c34645f49df97b8458104" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'argPosition int'", + "markdown": "Unused parameter `argPosition int`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "zsh_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 66, + "startColumn": 54, + "charOffset": 2439, + "charLength": 15, + "snippet": { + "text": "argPosition int" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 64, + "startColumn": 1, + "charOffset": 2369, + "charLength": 125, + "snippet": { + "text": "//\n// Deprecated\nfunc (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error {\n\treturn nil\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "709e5af9683d18eae6681e30c3fe09f6a4954da7e827b709379067762507495f" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'words ...string'", + "markdown": "Unused parameter `words ...string`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "zsh_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 66, + "startColumn": 71, + "charOffset": 2456, + "charLength": 15, + "snippet": { + "text": "words ...string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 64, + "startColumn": 1, + "charOffset": 2369, + "charLength": 125, + "snippet": { + "text": "//\n// Deprecated\nfunc (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error {\n\treturn nil\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "28bd22a65291c0b4bcc11a7211b38cb1324a4dbb1385b7e5932f288389dd2701" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'cmd'", + "markdown": "Unused parameter `cmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 69, + "startColumn": 20, + "charOffset": 2235, + "charLength": 3, + "snippet": { + "text": "cmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 67, + "startColumn": 1, + "charOffset": 2174, + "charLength": 111, + "snippet": { + "text": "\n// ArbitraryArgs never returns an error.\nfunc ArbitraryArgs(cmd *Command, args []string) error {\n\treturn nil\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c320c050ba8ed7132762fde13783aaa258bc1c18c4b8ea2fe328a523dd157eef" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'args'", + "markdown": "Unused parameter `args`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 69, + "startColumn": 34, + "charOffset": 2249, + "charLength": 4, + "snippet": { + "text": "args" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 67, + "startColumn": 1, + "charOffset": 2174, + "charLength": 111, + "snippet": { + "text": "\n// ArbitraryArgs never returns an error.\nfunc ArbitraryArgs(cmd *Command, args []string) error {\n\treturn nil\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bd7d3c1d9a47e26088df29e5625459900e72dfbf4d84a13e04349c1af555edb" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'cmd'", + "markdown": "Unused parameter `cmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 24, + "startColumn": 20, + "charOffset": 689, + "charLength": 3, + "snippet": { + "text": "cmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 22, + "startColumn": 1, + "charOffset": 667, + "charLength": 166, + "snippet": { + "text": ")\n\nfunc validArgsFunc(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\tif len(args) != 0 {\n\t\treturn nil, ShellCompDirectiveNoFileComp" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cc8fdf4906ff6d5000f4591cf0a07a6635302ef42c8e008a8eaef576f0d80737" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'cmd'", + "markdown": "Unused parameter `cmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 21, + "charOffset": 1097, + "charLength": 3, + "snippet": { + "text": "cmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1074, + "charLength": 167, + "snippet": { + "text": "}\n\nfunc validArgsFunc2(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\tif len(args) != 0 {\n\t\treturn nil, ShellCompDirectiveNoFileComp" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "99519609583ea9aa3c278f78003bec491306b0fa202d0a13c1298961edbcd50a" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'name string'", + "markdown": "Unused parameter `name string`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 30, + "startColumn": 58, + "charOffset": 782, + "charLength": 11, + "snippet": { + "text": "name string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 28, + "startColumn": 1, + "charOffset": 722, + "charLength": 136, + "snippet": { + "text": ")\n\nfunc printOptions(buf *bytes.Buffer, cmd *cobra.Command, name string) error {\n\tflags := cmd.NonInheritedFlags()\n\tflags.SetOutput(buf)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2bb073a7db0cca5d3b23465825db405c04ba5aa445f36e72c69470bace40604f" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'name string'", + "markdown": "Unused parameter `name string`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/rest_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 30, + "startColumn": 62, + "charOffset": 786, + "charLength": 11, + "snippet": { + "text": "name string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 28, + "startColumn": 1, + "charOffset": 722, + "charLength": 140, + "snippet": { + "text": ")\n\nfunc printOptionsReST(buf *bytes.Buffer, cmd *cobra.Command, name string) error {\n\tflags := cmd.NonInheritedFlags()\n\tflags.SetOutput(buf)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "16fb1ef87de21b068e67df6c62780a42470e34303a29f08b0c1fcf3807d99bcd" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedParameter", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused parameter 'linkHandler func(string) string'", + "markdown": "Unused parameter `linkHandler func(string) string`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 53, + "charOffset": 2961, + "charLength": 31, + "snippet": { + "text": "linkHandler func(string) string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 2863, + "charLength": 191, + "snippet": { + "text": "\n// GenYamlCustom creates custom yaml output.\nfunc GenYamlCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error {\n\tcmd.InitDefaultHelpCmd()\n\tcmd.InitDefaultHelpFlag()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4724f21d351805ae9d47208c388d1c36887cfac36c9ad9a9db564f87b2c721ae" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoAssignmentToReceiver", + "kind": "fail", + "level": "note", + "message": { + "text": "Assignment to the method receiver propagates only to callees but not to callers", + "markdown": "Assignment to the method receiver propagates only to callees but not to callers" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1020, + "startColumn": 4, + "charOffset": 29792, + "charLength": 1, + "snippet": { + "text": "c" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1018, + "startColumn": 1, + "charOffset": 29692, + "charLength": 135, + "snippet": { + "text": "\t\t// If found parse to a subcommand and then failed, talk about the subcommand\n\t\tif cmd != nil {\n\t\t\tc = cmd\n\t\t}\n\t\tif !c.SilenceErrors {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "43e8dbe53cd3c4a6de67539cf6948756f39432ff8e01bacbe275d69d7e362364" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoImportUsedAsName", + "kind": "fail", + "level": "warning", + "message": { + "text": "Variable 'template' collides with imported package name", + "markdown": "Variable `template` collides with imported package name" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "cobra.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 170, + "startColumn": 2, + "charOffset": 5670, + "charLength": 8, + "snippet": { + "text": "template" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 168, + "startColumn": 1, + "charOffset": 5580, + "charLength": 167, + "snippet": { + "text": "// rpad adds padding to the right of a string.\nfunc rpad(s string, padding int) string {\n\ttemplate := fmt.Sprintf(\"%%-%ds\", padding)\n\treturn fmt.Sprintf(template, s)\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "367811dad628fa63aa7663ffd117fecbbfb3ad07556701d1fd344d42d7aaf522" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoImportUsedAsName", + "kind": "fail", + "level": "warning", + "message": { + "text": "Variable 'flag' collides with imported package name", + "markdown": "Variable `flag` collides with imported package name" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 599, + "startColumn": 2, + "charOffset": 19362, + "charLength": 4, + "snippet": { + "text": "flag" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 597, + "startColumn": 1, + "charOffset": 19302, + "charLength": 116, + "snippet": { + "text": "\nfunc hasNoOptDefVal(name string, fs *flag.FlagSet) bool {\n\tflag := fs.Lookup(name)\n\tif flag == nil {\n\t\treturn false" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3577e47ccd85ba1531940b3278e0aded76872ed55c854c0642a1a17e80cde165" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoImportUsedAsName", + "kind": "fail", + "level": "warning", + "message": { + "text": "Variable 'flag' collides with imported package name", + "markdown": "Variable `flag` collides with imported package name" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 611, + "startColumn": 2, + "charOffset": 19560, + "charLength": 4, + "snippet": { + "text": "flag" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 609, + "startColumn": 1, + "charOffset": 19555, + "charLength": 74, + "snippet": { + "text": "\t}\n\n\tflag := fs.ShorthandLookup(name[:1])\n\tif flag == nil {\n\t\treturn false" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "15cefc393dd5c4c4c16ec7e83d26576f355b1eba32db6ddc675e8912de241f59" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoImportUsedAsName", + "kind": "fail", + "level": "warning", + "message": { + "text": "Variable 'flag' collides with imported package name", + "markdown": "Variable `flag` collides with imported package name" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "flag_groups.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 217, + "startColumn": 7, + "charOffset": 7113, + "charLength": 4, + "snippet": { + "text": "flag" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 215, + "startColumn": 1, + "charOffset": 7022, + "charLength": 154, + "snippet": { + "text": "\t\t\t\tfor _, fName := range strings.Split(flagList, \" \") {\n\t\t\t\t\tif fName != flagName {\n\t\t\t\t\t\tflag := c.Flags().Lookup(fName)\n\t\t\t\t\t\tflag.Hidden = true\n\t\t\t\t\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d968a43979383bc13c2a4f226f20675d53930fc685cbb5f5a12b3b3ae2e1fefc" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoCommentStart", + "kind": "fail", + "level": "note", + "message": { + "text": "Comment should have the following format 'Group ...' (with an optional leading article)", + "markdown": "Comment should have the following format 'Group ...' (with an optional leading article)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 1, + "charOffset": 1155, + "charLength": 42, + "snippet": { + "text": "// Structure to manage groups for commands" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1104, + "charLength": 127, + "snippet": { + "text": "type FParseErrWhitelist flag.ParseErrorsWhitelist\n\n// Structure to manage groups for commands\ntype Group struct {\n\tID string" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ea51bb652f07432ad01d689c575347b1b8b9363e239de17d810a7f78a06fb0c1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoCommentStart", + "kind": "fail", + "level": "note", + "message": { + "text": "Comment should have the following format 'SetHelpCommandGroupID ...' (with an optional leading article)", + "markdown": "Comment should have the following format 'SetHelpCommandGroupID ...' (with an optional leading article)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 324, + "startColumn": 1, + "charOffset": 11738, + "charLength": 61, + "snippet": { + "text": "// SetHelpCommandGroup sets the group id of the help command." + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 322, + "startColumn": 1, + "charOffset": 11735, + "charLength": 149, + "snippet": { + "text": "}\n\n// SetHelpCommandGroup sets the group id of the help command.\nfunc (c *Command) SetHelpCommandGroupID(groupID string) {\n\tif c.helpCommand != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bc3a48023ad7d261e3a18fdcac7a18cd0c07b51b14b1a3fb836a96d68b5578c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoCommentStart", + "kind": "fail", + "level": "note", + "message": { + "text": "Comment should have the following format 'SetCompletionCommandGroupID ...' (with an optional leading article)", + "markdown": "Comment should have the following format 'SetCompletionCommandGroupID ...' (with an optional leading article)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 333, + "startColumn": 1, + "charOffset": 12029, + "charLength": 73, + "snippet": { + "text": "// SetCompletionCommandGroup sets the group id of the completion command." + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 331, + "startColumn": 1, + "charOffset": 12026, + "charLength": 225, + "snippet": { + "text": "}\n\n// SetCompletionCommandGroup sets the group id of the completion command.\nfunc (c *Command) SetCompletionCommandGroupID(groupID string) {\n\t// completionCommandGroupID is used if no completion command is defined by the user" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aca9a52209300724044bc4cf1041801c9f532e56f14138f9a96d2788dcda0868" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoCommentStart", + "kind": "fail", + "level": "note", + "message": { + "text": "Comment should have the following format 'ContainsGroup ...' (with an optional leading article)", + "markdown": "Comment should have the following format 'ContainsGroup ...' (with an optional leading article)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1262, + "startColumn": 1, + "charOffset": 36783, + "charLength": 72, + "snippet": { + "text": "// ContainGroups return if groupID exists in the list of command groups." + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1260, + "startColumn": 1, + "charOffset": 36780, + "charLength": 167, + "snippet": { + "text": "}\n\n// ContainGroups return if groupID exists in the list of command groups.\nfunc (c *Command) ContainsGroup(groupID string) bool {\n\tfor _, x := range c.commandgroups {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dba7bb49958eadd8b50bfb278364463c4de60568db3e5ee6bc326ba49809b883" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeferInLoop", + "kind": "fail", + "level": "note", + "message": { + "text": "Possible resource leak, 'defer' is called in the 'for' loop", + "markdown": "Possible resource leak, `defer` is called in the `for` loop" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/man_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 80, + "startColumn": 3, + "charOffset": 2246, + "charLength": 5, + "snippet": { + "text": "defer" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 78, + "startColumn": 1, + "charOffset": 2180, + "charLength": 130, + "snippet": { + "text": "\t\tf := rootCmd.PersistentFlags().Lookup(name)\n\t\tf.Hidden = true\n\t\tdefer func() { f.Hidden = false }()\n\t}\n\tbuf := new(bytes.Buffer)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "20372602394793342b0d0aaebe4e974b8ccabff35991bd30905dde85e2e41355" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeferInLoop", + "kind": "fail", + "level": "note", + "message": { + "text": "Possible resource leak, 'defer' is called in the 'for' loop", + "markdown": "Possible resource leak, `defer` is called in the `for` loop" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 3, + "charOffset": 2044, + "charLength": 5, + "snippet": { + "text": "defer" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 1978, + "charLength": 130, + "snippet": { + "text": "\t\tf := rootCmd.PersistentFlags().Lookup(name)\n\t\tf.Hidden = true\n\t\tdefer func() { f.Hidden = false }()\n\t}\n\tbuf := new(bytes.Buffer)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9b24869753a66dd33642980c2f4cb76036cd77004398e1d5fa31b49d7d198c5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeferInLoop", + "kind": "fail", + "level": "note", + "message": { + "text": "Possible resource leak, 'defer' is called in the 'for' loop", + "markdown": "Possible resource leak, `defer` is called in the `for` loop" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/rest_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 49, + "startColumn": 3, + "charOffset": 1504, + "charLength": 5, + "snippet": { + "text": "defer" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 47, + "startColumn": 1, + "charOffset": 1438, + "charLength": 130, + "snippet": { + "text": "\t\tf := rootCmd.PersistentFlags().Lookup(name)\n\t\tf.Hidden = true\n\t\tdefer func() { f.Hidden = false }()\n\t}\n\tbuf := new(bytes.Buffer)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eb88305d9d567928fde7dd2137a52139afdd7d53d8765a7d550322c07c9cc7c0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedExportedFunction", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused function 'OnInitialize'", + "markdown": "Unused function `OnInitialize`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "cobra.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 94, + "startColumn": 6, + "charOffset": 3099, + "charLength": 12, + "snippet": { + "text": "OnInitialize" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 92, + "startColumn": 1, + "charOffset": 2993, + "charLength": 178, + "snippet": { + "text": "// OnInitialize sets the passed functions to be run when each command's\n// Execute method is called.\nfunc OnInitialize(y ...func()) {\n\tinitializers = append(initializers, y...)\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1d9a104dbbf1ef0667c73c7ca1ebd45d43b3799cc565925beeba91289c1c6240" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedExportedFunction", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused function 'OnFinalize'", + "markdown": "Unused function `OnFinalize`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "cobra.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 100, + "startColumn": 6, + "charOffset": 3281, + "charLength": 10, + "snippet": { + "text": "OnFinalize" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 98, + "startColumn": 1, + "charOffset": 3173, + "charLength": 174, + "snippet": { + "text": "// OnFinalize sets the passed functions to be run when each command's\n// Execute method is terminated.\nfunc OnFinalize(y ...func()) {\n\tfinalizers = append(finalizers, y...)\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "30869fa6a0418d2550ccb0db40d4837f57d599a50b34c94d7ab7d3b1eddb2cb6" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnusedExportedFunction", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused function 'CompDebugln'", + "markdown": "Unused function `CompDebugln`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 858, + "startColumn": 6, + "charOffset": 32486, + "charLength": 11, + "snippet": { + "text": "CompDebugln" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 856, + "startColumn": 1, + "charOffset": 32343, + "charLength": 242, + "snippet": { + "text": "// Such logs are only printed when the user has set the environment\n// variable BASH_COMP_DEBUG_FILE to the path of some file to be used.\nfunc CompDebugln(msg string, printToStdErr bool) {\n\tCompDebug(fmt.Sprintf(\"%s\\n\", msg), printToStdErr)\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "27fb1ca168bb1bb606382c6591fff42a85257ee42f98d5d31e2811d5ad84cde0" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "'SetOutput' is deprecated", + "markdown": "`SetOutput` is deprecated" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1867, + "startColumn": 4, + "charOffset": 51092, + "charLength": 9, + "snippet": { + "text": "SetOutput" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1865, + "startColumn": 1, + "charOffset": 51037, + "charLength": 186, + "snippet": { + "text": "func TestSetOutput(t *testing.T) {\n\tc := &Command{}\n\tc.SetOutput(nil)\n\tif out := c.OutOrStdout(); out != os.Stdout {\n\t\tt.Errorf(\"Expected setting output to nil to revert back to stdout\")" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ab656e8423e85ca0343691b6103a0942033755cd03c3956ce8ecb52e96f10d81" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "Deprecated method is still used", + "markdown": "Deprecated method is still used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 275, + "startColumn": 19, + "charOffset": 10469, + "charLength": 9, + "snippet": { + "text": "SetOutput" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 273, + "startColumn": 1, + "charOffset": 10363, + "charLength": 179, + "snippet": { + "text": "// If output is nil, os.Stderr is used.\n// Deprecated: Use SetOut and/or SetErr instead\nfunc (c *Command) SetOutput(output io.Writer) {\n\tc.outWriter = output\n\tc.errWriter = output" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "335ca1cd8ab204cf27bd13cbc4bcaf6745bd3cffe43492c950e544a3ee39016a" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "Deprecated function is still used", + "markdown": "Deprecated function is still used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 129, + "startColumn": 6, + "charOffset": 3991, + "charLength": 14, + "snippet": { + "text": "ExactValidArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 127, + "startColumn": 1, + "charOffset": 3918, + "charLength": 159, + "snippet": { + "text": "//\n// Deprecated: use MatchAll(ExactArgs(n), OnlyValidArgs) instead\nfunc ExactValidArgs(n int) PositionalArgs {\n\treturn MatchAll(ExactArgs(n), OnlyValidArgs)\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "978506a2b8589c03f77853fee96e43af80c9f6dcce3a1b66958f88a404dbc03c" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "'ExactValidArgs' is deprecated", + "markdown": "`ExactValidArgs` is deprecated" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 491, + "startColumn": 18, + "charOffset": 13171, + "charLength": 14, + "snippet": { + "text": "ExactValidArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 489, + "startColumn": 1, + "charOffset": 13113, + "charLength": 170, + "snippet": { + "text": "\nfunc TestExactValidArgs(t *testing.T) {\n\tc := getCommand(ExactValidArgs(3), true)\n\toutput, err := executeCommand(c, \"three\", \"one\", \"two\")\n\texpectSuccess(output, err, t)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e57ea7ceb470dbd7ea0da0f2b311a0cef113461093d36bb1851148f74a24fd50" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "'ExactValidArgs' is deprecated", + "markdown": "`ExactValidArgs` is deprecated" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 497, + "startColumn": 18, + "charOffset": 13361, + "charLength": 14, + "snippet": { + "text": "ExactValidArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 495, + "startColumn": 1, + "charOffset": 13286, + "charLength": 187, + "snippet": { + "text": "\nfunc TestExactValidArgs_WithInvalidCount(t *testing.T) {\n\tc := getCommand(ExactValidArgs(2), false)\n\t_, err := executeCommand(c, \"three\", \"one\", \"two\")\n\texactArgsWithInvalidCount(err, t)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c80d88a38b1358efec7f4ddb03b4898b03f3a88a32cb0940e704bf76c3414511" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "'ExactValidArgs' is deprecated", + "markdown": "`ExactValidArgs` is deprecated" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 503, + "startColumn": 18, + "charOffset": 13567, + "charLength": 14, + "snippet": { + "text": "ExactValidArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 501, + "startColumn": 1, + "charOffset": 13476, + "charLength": 200, + "snippet": { + "text": "\nfunc TestExactValidArgs_WithInvalidCount_WithInvalidArgs(t *testing.T) {\n\tc := getCommand(ExactValidArgs(2), true)\n\t_, err := executeCommand(c, \"three\", \"a\", \"two\")\n\texactArgsWithInvalidCount(err, t)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2431efc57f4645a998e22ff30fbca447d3c20c3239a8b1c88855a3836455a47c" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoDeprecation", + "kind": "fail", + "level": "warning", + "message": { + "text": "'ExactValidArgs' is deprecated", + "markdown": "`ExactValidArgs` is deprecated" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "args_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 509, + "startColumn": 18, + "charOffset": 13753, + "charLength": 14, + "snippet": { + "text": "ExactValidArgs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 507, + "startColumn": 1, + "charOffset": 13679, + "charLength": 175, + "snippet": { + "text": "\nfunc TestExactValidArgs_WithInvalidArgs(t *testing.T) {\n\tc := getCommand(ExactValidArgs(2), true)\n\t_, err := executeCommand(c, \"three\", \"a\")\n\tvalidOnlyWithInvalidArgs(err, t)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f04a84a8af5d9c3b613e0f836207d9ea27cf904ec3670ecb0a2a88426f959e57" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoErrorStringFormat", + "kind": "fail", + "level": "note", + "message": { + "text": "Error string should not be capitalized or end with punctuation mark", + "markdown": "Error string should not be capitalized or end with punctuation mark" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 273, + "startColumn": 63, + "charOffset": 11368, + "charLength": 44, + "snippet": { + "text": "\"Unable to find a command for arguments: %v\"" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 271, + "startColumn": 1, + "charOffset": 11214, + "charLength": 237, + "snippet": { + "text": "\tif err != nil {\n\t\t// Unable to find the real command. E.g., someInvalidCmd \n\t\treturn c, []string{}, ShellCompDirectiveDefault, fmt.Errorf(\"Unable to find a command for arguments: %v\", trimmedArgs)\n\t}\n\tfinalCmd.ctx = c.ctx" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1034ed8ca99d003497f6d81644555612e1265401404a2f076bfe0eef81dc65f0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoErrorStringFormat", + "kind": "fail", + "level": "note", + "message": { + "text": "Error string should not be capitalized or end with punctuation mark", + "markdown": "Error string should not be capitalized or end with punctuation mark" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 299, + "startColumn": 70, + "charOffset": 12706, + "charLength": 44, + "snippet": { + "text": "\"Error while parsing flags from args %v: %s\"" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 297, + "startColumn": 1, + "charOffset": 12514, + "charLength": 265, + "snippet": { + "text": "\t// Parse the flags early so we can check if required flags are set\n\tif err = finalCmd.ParseFlags(finalArgs); err != nil {\n\t\treturn finalCmd, []string{}, ShellCompDirectiveDefault, fmt.Errorf(\"Error while parsing flags from args %v: %s\", finalArgs, err.Error())\n\t}\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "866511c5ac0e3588144e59a0b4b755b12dad5c12208a7c724cb366557b8dc9d8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoErrorStringFormat", + "kind": "fail", + "level": "note", + "message": { + "text": "Error string should not be capitalized or end with punctuation mark", + "markdown": "Error string should not be capitalized or end with punctuation mark" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 825, + "startColumn": 21, + "charOffset": 25288, + "charLength": 35, + "snippet": { + "text": "\"Called Execute() on a nil Command\"" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 823, + "startColumn": 1, + "charOffset": 25201, + "charLength": 127, + "snippet": { + "text": "func (c *Command) execute(a []string) (err error) {\n\tif c == nil {\n\t\treturn fmt.Errorf(\"Called Execute() on a nil Command\")\n\t}\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ea1f055510d1d254da457cb44e6c78b50687d941bfe7af9e7fafaad322fa3e1e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 624, + "startColumn": 14, + "charOffset": 19799, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 622, + "startColumn": 1, + "charOffset": 19759, + "charLength": 71, + "snippet": { + "text": "\tc.mergePersistentFlags()\n\n\tcommands := []string{}\n\tflags := c.Flags()\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "671d6b13f32a233860536dc566ad11a05171e09a2d8f9aad03d5f320dcf69b36" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 661, + "startColumn": 11, + "charOffset": 20850, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 659, + "startColumn": 1, + "charOffset": 20800, + "charLength": 130, + "snippet": { + "text": "\tfor i, y := range args {\n\t\tif x == y {\n\t\t\tret := []string{}\n\t\t\tret = append(ret, args[:i]...)\n\t\t\tret = append(ret, args[i+1:]...)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "57b76ce6491c21c5b4a7a3698224603d280b540126a340d6ab06db0ceac40b71" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 740, + "startColumn": 11, + "charOffset": 22889, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 738, + "startColumn": 1, + "charOffset": 22791, + "charLength": 126, + "snippet": { + "text": "// each parent.\nfunc (c *Command) Traverse(args []string) (*Command, []string, error) {\n\tflags := []string{}\n\tinFlag := false\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "378f5995bb4bb2584f139191c12b63bbfc8528959ccbe4666b0ed079dfab9769" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 782, + "startColumn": 17, + "charOffset": 24056, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 780, + "startColumn": 1, + "charOffset": 23920, + "charLength": 212, + "snippet": { + "text": "// SuggestionsFor provides suggestions for the typedName.\nfunc (c *Command) SuggestionsFor(typedName string) []string {\n\tsuggestions := []string{}\n\tfor _, cmd := range c.commands {\n\t\tif cmd.IsAvailableCommand() {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2fb5fa686040f0713aeee736d15b225d602f2d243b194beffeb57b46f45922c6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1078, + "startColumn": 22, + "charOffset": 31160, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1076, + "startColumn": 1, + "charOffset": 31118, + "charLength": 167, + "snippet": { + "text": "\n\tflags := c.Flags()\n\tmissingFlagNames := []string{}\n\tflags.VisitAll(func(pflag *flag.Flag) {\n\t\trequiredAnnotation, found := pflag.Annotations[BashCompOneRequiredFlag]" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0956c0f49094b92faf3c0317fd02035151ec030bdd1ad87f6e05d620e99fe8ff" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1279, + "startColumn": 14, + "charOffset": 37316, + "charLength": 10, + "snippet": { + "text": "[]*Command" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1277, + "startColumn": 1, + "charOffset": 37182, + "charLength": 190, + "snippet": { + "text": "// RemoveCommand removes one or more commands from a parent command.\nfunc (c *Command) RemoveCommand(cmds ...*Command) {\n\tcommands := []*Command{}\nmain:\n\tfor _, command := range c.commands {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "10785f01b74a6fabbb5a3db967682045d1145c3f33064058b0dd1ced33ea5d63" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "flag_groups.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 127, + "startColumn": 12, + "charOffset": 4063, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 125, + "startColumn": 1, + "charOffset": 4013, + "charLength": 126, + "snippet": { + "text": "\t\tflagnameAndStatus := data[flagList]\n\n\t\tunset := []string{}\n\t\tfor flagname, isSet := range flagnameAndStatus {\n\t\t\tif !isSet {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "162bdf1f72ed8cada18cf8143b27ccb712626d9a1cb522c9688cb51cc0cc61fb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1595, + "startColumn": 18, + "charOffset": 44116, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1593, + "startColumn": 1, + "charOffset": 43876, + "charLength": 378, + "snippet": { + "text": "\trootCmd.Flags().IntP(\"introot\", \"i\", -1, \"help message for flag introot\")\n\tassertNoErr(t, rootCmd.RegisterFlagCompletionFunc(\"introot\", func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\t\tcompletions := []string{}\n\t\tfor _, comp := range []string{\"1\\tThe first\", \"2\\tThe second\", \"10\\tThe tenth\"} {\n\t\t\tif strings.HasPrefix(comp, toComplete) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f5f96e5d137e65523bf85cee5d5153871ed49f9b4023b7f74e6603fcee248bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1605, + "startColumn": 18, + "charOffset": 44587, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1603, + "startColumn": 1, + "charOffset": 44361, + "charLength": 392, + "snippet": { + "text": "\trootCmd.Flags().String(\"filename\", \"\", \"Enter a filename\")\n\tassertNoErr(t, rootCmd.RegisterFlagCompletionFunc(\"filename\", func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\t\tcompletions := []string{}\n\t\tfor _, comp := range []string{\"file.yaml\\tYAML format\", \"myfile.json\\tJSON format\", \"file.xml\\tXML format\"} {\n\t\t\tif strings.HasPrefix(comp, toComplete) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "408c647257fc6dbb79db8e6c5196a4a6ed644ca600c1351410533ee2574f0184" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2050, + "startColumn": 18, + "charOffset": 57829, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 2048, + "startColumn": 1, + "charOffset": 57589, + "charLength": 378, + "snippet": { + "text": "\trootCmd.Flags().IntP(\"introot\", \"i\", -1, \"help message for flag introot\")\n\tassertNoErr(t, rootCmd.RegisterFlagCompletionFunc(\"introot\", func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\t\tcompletions := []string{}\n\t\tfor _, comp := range []string{\"1\\tThe first\", \"2\\tThe second\", \"10\\tThe tenth\"} {\n\t\t\tif strings.HasPrefix(comp, toComplete) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "94b84537135d2ed072d16c1b52e755638a19715aa07e3c3ff1b8b89a27af8d32" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2060, + "startColumn": 18, + "charOffset": 58300, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 2058, + "startColumn": 1, + "charOffset": 58074, + "charLength": 392, + "snippet": { + "text": "\trootCmd.Flags().String(\"filename\", \"\", \"Enter a filename\")\n\tassertNoErr(t, rootCmd.RegisterFlagCompletionFunc(\"filename\", func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\t\tcompletions := []string{}\n\t\tfor _, comp := range []string{\"file.yaml\\tYAML format\", \"myfile.json\\tJSON format\", \"file.xml\\tXML format\"} {\n\t\t\tif strings.HasPrefix(comp, toComplete) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "da2aef13f0ca6e8009482e327e95e8bb31f8ba5367b86cc8a885cbaf485664c7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoPreferNilSlice", + "kind": "fail", + "level": "note", + "message": { + "text": "Empty slice declaration using a literal", + "markdown": "Empty slice declaration using a literal" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 121, + "startColumn": 13, + "charOffset": 3569, + "charLength": 8, + "snippet": { + "text": "[]string" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 119, + "startColumn": 1, + "charOffset": 3534, + "charLength": 94, + "snippet": { + "text": "\n\tif hasSeeAlso(cmd) {\n\t\tresult := []string{}\n\t\tif cmd.HasParent() {\n\t\t\tparent := cmd.Parent()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8d512a755e728dbe9c950ba805783672dc731bf390d68c4648b47d3b55405a5e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "cobra.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 230, + "startColumn": 7, + "charOffset": 6973, + "charLength": 8, + "snippet": { + "text": "Fprintln" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 228, + "startColumn": 1, + "charOffset": 6917, + "charLength": 106, + "snippet": { + "text": "func CheckErr(msg interface{}) {\n\tif msg != nil {\n\t\tfmt.Fprintln(os.Stderr, \"Error:\", msg)\n\t\tos.Exit(1)\n\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dbe933ed661efcd5fb6ac161f3caae9e5a9ee6dc5b67ba4806bd68abae02db7d" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/man_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 11, + "charOffset": 5389, + "charLength": 9, + "snippet": { + "text": "RemoveAll" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 5321, + "charLength": 141, + "snippet": { + "text": "\t\tt.Fatalf(\"Failed to create tmpdir: %s\", err.Error())\n\t}\n\tdefer os.RemoveAll(tmpdir)\n\n\tif err := GenManTree(c, header, tmpdir); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6b8a86c45fb55152d08aec40a81d1a45b56bfec096b483280a255a8d8c9bd3e3" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/man_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 226, + "startColumn": 11, + "charOffset": 6549, + "charLength": 6, + "snippet": { + "text": "Remove" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 224, + "startColumn": 1, + "charOffset": 6521, + "charLength": 68, + "snippet": { + "text": "\t\tb.Fatal(err)\n\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2c2c9ea055b45550ab9a79d0499130ffee522ab3451b67a16ab5139fb36406ac" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/man_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 227, + "startColumn": 13, + "charOffset": 6581, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 225, + "startColumn": 1, + "charOffset": 6536, + "charLength": 69, + "snippet": { + "text": "\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n\n\tb.ResetTimer()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34026f0d4ba3bb25ac7f55951bea13ded0e0e7aeeaaa76ec8fa855d7775e807a" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 220, + "startColumn": 9, + "charOffset": 8944, + "charLength": 8, + "snippet": { + "text": "Fprintln" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 218, + "startColumn": 1, + "charOffset": 8849, + "charLength": 139, + "snippet": { + "text": "\n\t\t\t\t// Print each possible completion to stdout for the completion script to consume.\n\t\t\t\tfmt.Fprintln(finalCmd.OutOrStdout(), comp)\n\t\t\t}\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "809abb972b82f4ffb3f18506123a5797bbd44c04034477a04cfa6457442a6e84" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 226, + "startColumn": 8, + "charOffset": 9226, + "charLength": 7, + "snippet": { + "text": "Fprintf" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 224, + "startColumn": 1, + "charOffset": 9084, + "charLength": 262, + "snippet": { + "text": "\t\t\t// The directive integer must be that last character following a single colon (:).\n\t\t\t// The completion script expects :\n\t\t\tfmt.Fprintf(finalCmd.OutOrStdout(), \":%d\\n\", directive)\n\n\t\t\t// Print some helpful info to stderr for the user to understand." + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aa7c4470f830fe99281201c01d5a34085f4b66dee829e7c597cc22b20469a37c" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 230, + "startColumn": 8, + "charOffset": 9421, + "charLength": 7, + "snippet": { + "text": "Fprintf" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 228, + "startColumn": 1, + "charOffset": 9279, + "charLength": 242, + "snippet": { + "text": "\t\t\t// Print some helpful info to stderr for the user to understand.\n\t\t\t// Output from stderr must be ignored by the completion script.\n\t\t\tfmt.Fprintf(finalCmd.ErrOrStderr(), \"Completion ended with directive: %s\\n\", directive.string())\n\t\t},\n\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b16685be904d3df8f936d0e63d7ecd8be0326b4e57854f7e88f0e0fec9e611eb" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 843, + "startColumn": 12, + "charOffset": 32028, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 841, + "startColumn": 1, + "charOffset": 31953, + "charLength": 117, + "snippet": { + "text": "\t\t\tos.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)\n\t\tif err == nil {\n\t\t\tdefer f.Close()\n\t\t\tWriteStringAndCheck(f, msg)\n\t\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d883114cef2c9448f56cce2a1853230b94b6d0492e86d37a181c9d31261870da" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 850, + "startColumn": 7, + "charOffset": 32177, + "charLength": 6, + "snippet": { + "text": "Fprint" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 848, + "startColumn": 1, + "charOffset": 32075, + "charLength": 129, + "snippet": { + "text": "\tif printToStdErr {\n\t\t// Must print to stderr for this not to be read by the completion script.\n\t\tfmt.Fprint(os.Stderr, msg)\n\t}\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0007a7926ddc2bfd46cce55865557acaf689fbcc0f34a06297515c29d60675ba" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "bash_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 709, + "startColumn": 16, + "charOffset": 22977, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 707, + "startColumn": 1, + "charOffset": 22946, + "charLength": 76, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer outFile.Close()\n\n\treturn c.GenBashCompletion(outFile)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7153a1230782684e8f77d178c81e1432ca3d5ff8edb9d91a1e43cdc0ca02b36d" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "bash_completionsV2.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 373, + "startColumn": 16, + "charOffset": 12458, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 371, + "startColumn": 1, + "charOffset": 12427, + "charLength": 91, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer outFile.Close()\n\n\treturn c.GenBashCompletionV2(outFile, includeDesc)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d4cf18520809c4b4ca9e9f208561677acfe4eba7d0188e8ef1d90851ba6bdee0" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "zsh_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 75, + "startColumn": 16, + "charOffset": 2663, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 73, + "startColumn": 1, + "charOffset": 2632, + "charLength": 88, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer outFile.Close()\n\n\treturn c.genZshCompletion(outFile, includeDesc)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dcc9e7dcc90c29c4f7c79bda40a8ff294ed60593aadf7edc8da5345925c0107f" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1313, + "startColumn": 6, + "charOffset": 38208, + "charLength": 6, + "snippet": { + "text": "Fprint" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1311, + "startColumn": 1, + "charOffset": 38063, + "charLength": 177, + "snippet": { + "text": "// Print is a convenience method to Print to the defined output, fallback to Stderr if not set.\nfunc (c *Command) Print(i ...interface{}) {\n\tfmt.Fprint(c.OutOrStderr(), i...)\n}\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1f97ddfce30a03facda9ec2d35080463f843468a0d7045cab114063c39b2d1f9" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1328, + "startColumn": 6, + "charOffset": 38771, + "charLength": 6, + "snippet": { + "text": "Fprint" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 1326, + "startColumn": 1, + "charOffset": 38616, + "charLength": 187, + "snippet": { + "text": "// PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set.\nfunc (c *Command) PrintErr(i ...interface{}) {\n\tfmt.Fprint(c.ErrOrStderr(), i...)\n}\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "993d7efe12d4bf3d45c9881191531c9ea897b18900300c133a3f4620c6092f18" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "bash_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 71, + "startColumn": 9, + "charOffset": 1975, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 69, + "startColumn": 1, + "charOffset": 1950, + "charLength": 38, + "snippet": { + "text": "\t\tCheckErr(err)\n\n\t\tstdin.Close()\n\t}()\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f37e71d0d59dd35ef3473f18d67928528003183f943de5aba0959ac63c28b29e" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 106, + "startColumn": 11, + "charOffset": 3017, + "charLength": 9, + "snippet": { + "text": "RemoveAll" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 104, + "startColumn": 1, + "charOffset": 3003, + "charLength": 96, + "snippet": { + "text": "\t}\n\n\tdefer os.RemoveAll(\"./tmp\")\n\n\trootCmd := &Command{Use: \"root\", Args: NoArgs, Run: emptyRun}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bcfca67b17e2f40ae3be23959da1735071ccb85a4a3ac6dfb56819629c8861ad" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 125, + "startColumn": 11, + "charOffset": 3458, + "charLength": 9, + "snippet": { + "text": "RemoveAll" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 123, + "startColumn": 1, + "charOffset": 3444, + "charLength": 87, + "snippet": { + "text": "\t}\n\n\tdefer os.RemoveAll(\"./tmp\")\n\n\tf, _ := os.OpenFile(\"./tmp/test\", os.O_CREATE, 0400)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "99700e049f5e61161a33d1162696b599d5bb58ba8987a787802b9a4a2cfa01d0" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 128, + "startColumn": 10, + "charOffset": 3541, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 126, + "startColumn": 1, + "charOffset": 3477, + "charLength": 135, + "snippet": { + "text": "\n\tf, _ := os.OpenFile(\"./tmp/test\", os.O_CREATE, 0400)\n\tdefer f.Close()\n\n\trootCmd := &Command{Use: \"root\", Args: NoArgs, Run: emptyRun}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40f09cb51187f9e466ccdf01d762e0508bbe20abdfa554c158b43731ce74a8ff" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 231, + "startColumn": 16, + "charOffset": 8765, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 229, + "startColumn": 1, + "charOffset": 8734, + "charLength": 89, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer outFile.Close()\n\n\treturn c.GenFishCompletion(outFile, includeDesc)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6f307e4de8519d52c5482b6fe1896b5ca356751a86bdc172b7c86e9cb0264790" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "powershell_completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 285, + "startColumn": 16, + "charOffset": 10686, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 283, + "startColumn": 1, + "charOffset": 10655, + "charLength": 95, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer outFile.Close()\n\n\treturn c.genPowerShellCompletion(outFile, includeDesc)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cc28c0c7200fd698b00e1d30c9f2fa9840ff6b6eac40dfdbd7b879ea58e91bc0" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 101, + "startColumn": 11, + "charOffset": 3117, + "charLength": 9, + "snippet": { + "text": "RemoveAll" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 99, + "startColumn": 1, + "charOffset": 3057, + "charLength": 130, + "snippet": { + "text": "\t\tt.Fatalf(\"Failed to create tmpdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(tmpdir)\n\n\tif err := GenMarkdownTree(c, tmpdir); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fe214965909d83d6174383e7e33acdae94f6aaae1df6fd1616e80eb4145c749e" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 117, + "startColumn": 11, + "charOffset": 3488, + "charLength": 6, + "snippet": { + "text": "Remove" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 115, + "startColumn": 1, + "charOffset": 3460, + "charLength": 68, + "snippet": { + "text": "\t\tb.Fatal(err)\n\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "98960aec950475de5cbd930651e149a6bd651b776c94c2ccbcd735ba85ced732" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 118, + "startColumn": 13, + "charOffset": 3520, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 116, + "startColumn": 1, + "charOffset": 3475, + "charLength": 69, + "snippet": { + "text": "\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n\n\tb.ResetTimer()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a6025cd52be93e3be7574923ec9a1a99e5903239591a550c0bf72230d6e0969c" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 281, + "startColumn": 5, + "charOffset": 8143, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 279, + "startColumn": 1, + "charOffset": 8042, + "charLength": 273, + "snippet": { + "text": "\tactiveHelpCfg := \"someconfig,anotherconfig\"\n\t// Set the variable that the user would be setting\n\tos.Setenv(activeHelpEnvVar(rootCmd.Name()), activeHelpCfg)\n\n\tchildCmd.ValidArgsFunction = func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "60623db5bf440ad0d8464afb9a2497221081ee72dbc64a889c8f6c345085c1c9" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 299, + "startColumn": 5, + "charOffset": 8845, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 297, + "startColumn": 1, + "charOffset": 8736, + "charLength": 185, + "snippet": { + "text": "\tactiveHelpCfg = \"a config for a flag\"\n\t// Set the variable that the completions scripts will be setting\n\tos.Setenv(activeHelpEnvVar(rootCmd.Name()), activeHelpCfg)\n\n\tflagname := \"flag\"" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6419e9a8d4d0b19202e5ac87d3f3c2190b28c679dc943c75332f99b1986b7fb6" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 336, + "startColumn": 5, + "charOffset": 10075, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 334, + "startColumn": 1, + "charOffset": 9920, + "charLength": 317, + "snippet": { + "text": "\t// Make sure the disabling value is \"0\" by hard-coding it in the tests;\n\t// this is for backwards-compatibility as programs will be using this value.\n\tos.Setenv(activeHelpEnvVar(rootCmd.Name()), \"0\")\n\n\tchildCmd.ValidArgsFunction = func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "80d22861c85b381bd475ef63fe7bb1bf6190dd3f44840abf396c11c312bdb6fa" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 348, + "startColumn": 5, + "charOffset": 10513, + "charLength": 8, + "snippet": { + "text": "Unsetenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 346, + "startColumn": 1, + "charOffset": 10466, + "charLength": 141, + "snippet": { + "text": "\t\tt.Errorf(\"Unexpected error: %v\", err)\n\t}\n\tos.Unsetenv(activeHelpEnvVar(rootCmd.Name()))\n\n\t// Make sure there is no ActiveHelp in the output" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a51493915feb348b2b3e359edba6b184b1f81154da678e8c28fa1a4d819756d5" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 361, + "startColumn": 5, + "charOffset": 10874, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 359, + "startColumn": 1, + "charOffset": 10821, + "charLength": 190, + "snippet": { + "text": "\n\t// Now test the global disabling of ActiveHelp\n\tos.Setenv(activeHelpGlobalEnvVar, \"0\")\n\t// Set the specific variable, to make sure it is ignored when the global env\n\t// var is set properly" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2dbfc9faa7d35f183fac9b4d1c1eea5982173ad0147c5bcb36f12acbe1e8d056" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 364, + "startColumn": 5, + "charOffset": 11016, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 362, + "startColumn": 1, + "charOffset": 10910, + "charLength": 234, + "snippet": { + "text": "\t// Set the specific variable, to make sure it is ignored when the global env\n\t// var is set properly\n\tos.Setenv(activeHelpEnvVar(rootCmd.Name()), \"1\")\n\n\toutput, err = executeCommand(rootCmd, ShellCompNoDescRequestCmd, \"thechild\", \"\")" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e38f91df7f45bdbf7245728a55664dbcc9e71e07433ab9e3e3ad694cbf34bf9a" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 383, + "startColumn": 5, + "charOffset": 11585, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 381, + "startColumn": 1, + "charOffset": 11470, + "charLength": 264, + "snippet": { + "text": "\t// Make sure that if the global env variable is set to anything else than\n\t// the disable value it is ignored\n\tos.Setenv(activeHelpGlobalEnvVar, \"on\")\n\t// Set the specific variable, to make sure it is used (while ignoring the global env var)\n\tactiveHelpCfg := \"1\"" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7edb3de9ab3a42f160ef699549a1e82b660bee97c6a0233190c1fcfd46d2ed1b" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "active_help_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 386, + "startColumn": 5, + "charOffset": 11739, + "charLength": 6, + "snippet": { + "text": "Setenv" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 384, + "startColumn": 1, + "charOffset": 11622, + "charLength": 289, + "snippet": { + "text": "\t// Set the specific variable, to make sure it is used (while ignoring the global env var)\n\tactiveHelpCfg := \"1\"\n\tos.Setenv(activeHelpEnvVar(rootCmd.Name()), activeHelpCfg)\n\n\tchildCmd.ValidArgsFunction = func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "80dec685d86dd18c303e55ad094b71b2c57ffc0fda37201acc8eff5ac45245b4" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 147, + "startColumn": 10, + "charOffset": 4447, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 145, + "startColumn": 1, + "charOffset": 4422, + "charLength": 104, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tif _, err := io.WriteString(f, filePrepender(filename)); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6d7f9a2838ed9c4cc97f78b3e7e687bb971fe771d159ba38205e73ce09a3be57" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/man_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 76, + "startColumn": 10, + "charOffset": 2246, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 74, + "startColumn": 1, + "charOffset": 2221, + "charLength": 56, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer f.Close()\n\n\theaderCopy := *header" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fed6943f3f1031e283059ed139b773eb6f8dc2f6ee8d83e25e2b1167b2015e37" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/rest_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 88, + "startColumn": 11, + "charOffset": 2607, + "charLength": 9, + "snippet": { + "text": "RemoveAll" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 86, + "startColumn": 1, + "charOffset": 2539, + "charLength": 134, + "snippet": { + "text": "\t\tt.Fatalf(\"Failed to create tmpdir: %s\", err.Error())\n\t}\n\tdefer os.RemoveAll(tmpdir)\n\n\tif err := GenReSTTree(c, tmpdir); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "239010e1eb290e277b3fec21a8f341ae8b5ddd2b7d92dc4a8b5d5dd5d978c8ba" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/rest_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 104, + "startColumn": 11, + "charOffset": 2976, + "charLength": 6, + "snippet": { + "text": "Remove" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 102, + "startColumn": 1, + "charOffset": 2948, + "charLength": 68, + "snippet": { + "text": "\t\tb.Fatal(err)\n\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cdb384262d6a61e333fd16cbf749d36b5e019f616a03d1a22b6883c9154c1291" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/rest_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 105, + "startColumn": 13, + "charOffset": 3008, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 103, + "startColumn": 1, + "charOffset": 2963, + "charLength": 69, + "snippet": { + "text": "\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n\n\tb.ResetTimer()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "42a686b67d6dae700a1829b18a47a649518fb6e10c66e89bc9aa31345c293d05" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/rest_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 161, + "startColumn": 10, + "charOffset": 4820, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 159, + "startColumn": 1, + "charOffset": 4795, + "charLength": 104, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tif _, err := io.WriteString(f, filePrepender(filename)); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "883a49ccbcf6ca6d5bfaddc9ae250d8b9a080d00e6e6e981988c65a4a0838693" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 65, + "startColumn": 11, + "charOffset": 1849, + "charLength": 9, + "snippet": { + "text": "RemoveAll" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 63, + "startColumn": 1, + "charOffset": 1781, + "charLength": 134, + "snippet": { + "text": "\t\tt.Fatalf(\"Failed to create tmpdir: %s\", err.Error())\n\t}\n\tdefer os.RemoveAll(tmpdir)\n\n\tif err := GenYamlTree(c, tmpdir); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e8939c3d86c7446b1a636a12e52c645b664eae8267ac444e3868a5614a4c2fde" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 92, + "startColumn": 11, + "charOffset": 2503, + "charLength": 6, + "snippet": { + "text": "Remove" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 90, + "startColumn": 1, + "charOffset": 2475, + "charLength": 68, + "snippet": { + "text": "\t\tb.Fatal(err)\n\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f3c62830a65bd7be9e549dd9ea034143a01aa5be36579585f2397708b843419d" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 13, + "charOffset": 2535, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 2490, + "charLength": 69, + "snippet": { + "text": "\t}\n\tdefer os.Remove(file.Name())\n\tdefer file.Close()\n\n\tb.ResetTimer()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "39a3fb3ab257fe81a2dc63c6f7339f8bc78c86d37b814db39f177e74a6e59089" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + }, + { + "ruleId": "GoUnhandledErrorResult", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unhandled error", + "markdown": "Unhandled error" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 76, + "startColumn": 10, + "charOffset": 2522, + "charLength": 5, + "snippet": { + "text": "Close" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 74, + "startColumn": 1, + "charOffset": 2497, + "charLength": 104, + "snippet": { + "text": "\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tif _, err := io.WriteString(f, filePrepender(filename)); err != nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f0f66b842178e74320d678565816ee621ad0d404d4fc71add2f7d9a3ff7db9c" + }, + "properties": { + "ideaSeverity": "WARNING", + "tags": [ + "ideaSeverity" + ] + } + } + ], + "automationDetails": { + "id": "project/qodana/2022-12-05", + "guid": "e1365894-008c-4609-8dae-77d3c9693996", + "properties": { + "jobUrl": "https://github.com/qodana/cobra/actions/runs/3621245873", + "tags": [ + "jobUrl" + ] + } + }, + "newlineSequences": [ + "\r\n", + "\n" + ], + "properties": { + "qodana.promo.results": [ + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompRequestCmd'", + "markdown": "Unnecessarily exported constant `ShellCompRequestCmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 2, + "charOffset": 864, + "charLength": 19, + "snippet": { + "text": "ShellCompRequestCmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 695, + "charLength": 386, + "snippet": { + "text": "\t// ShellCompRequestCmd is the name of the hidden command that is used to request\n\t// completion results from the program. It is used by the shell completion scripts.\n\tShellCompRequestCmd = \"__complete\"\n\t// ShellCompNoDescRequestCmd is the name of the hidden command that is used to request\n\t// completion results without their description. It is used by the shell completion scripts." + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "22965b909728eaa92353ddd88c8c69bc774803cd90c060b3ae4bd6b4534da0e7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompNoDescRequestCmd'", + "markdown": "Unnecessarily exported constant `ShellCompNoDescRequestCmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 2, + "charOffset": 1083, + "charLength": 25, + "snippet": { + "text": "ShellCompNoDescRequestCmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 899, + "charLength": 233, + "snippet": { + "text": "\t// ShellCompNoDescRequestCmd is the name of the hidden command that is used to request\n\t// completion results without their description. It is used by the shell completion scripts.\n\tShellCompNoDescRequestCmd = \"__completeNoDesc\"\n)\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cfa6ab077828e8804df4f76de18671a94735eba6b8ecb98ba9b115fadc66f8d9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompDirectiveError'", + "markdown": "Unnecessarily exported constant `ShellCompDirectiveError`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 56, + "startColumn": 2, + "charOffset": 1970, + "charLength": 23, + "snippet": { + "text": "ShellCompDirectiveError" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 54, + "startColumn": 1, + "charOffset": 1870, + "charLength": 233, + "snippet": { + "text": "const (\n\t// ShellCompDirectiveError indicates an error occurred and completions should be ignored.\n\tShellCompDirectiveError ShellCompDirective = 1 << iota\n\n\t// ShellCompDirectiveNoSpace indicates that the shell should not add a space" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0be263c0f3d03a342fc5ac5db43513cea2269702b46477acba4592b664e1b3e7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompDirectiveNoSpace'", + "markdown": "Unnecessarily exported constant `ShellCompDirectiveNoSpace`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 2, + "charOffset": 2177, + "charLength": 25, + "snippet": { + "text": "ShellCompDirectiveNoSpace" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2026, + "charLength": 254, + "snippet": { + "text": "\t// ShellCompDirectiveNoSpace indicates that the shell should not add a space\n\t// after the completion even if there is a single completion provided.\n\tShellCompDirectiveNoSpace\n\n\t// ShellCompDirectiveNoFileComp indicates that the shell should not provide" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "41d740c5d3adca220d8aa11bcd7d29fe233eab10f2d6f0a48860defd7052d31b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompDirectiveNoFileComp'", + "markdown": "Unnecessarily exported constant `ShellCompDirectiveNoFileComp`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 2, + "charOffset": 2339, + "charLength": 28, + "snippet": { + "text": "ShellCompDirectiveNoFileComp" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 2204, + "charLength": 240, + "snippet": { + "text": "\t// ShellCompDirectiveNoFileComp indicates that the shell should not provide\n\t// file completion even when no completion is provided.\n\tShellCompDirectiveNoFileComp\n\n\t// ShellCompDirectiveFilterFileExt indicates that the provided completions" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fe08b2ea145882ea9f98ef02baa7c35855c48fcd14b8094b81607eb668cbc567" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompDirectiveFilterFileExt'", + "markdown": "Unnecessarily exported constant `ShellCompDirectiveFilterFileExt`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 71, + "startColumn": 2, + "charOffset": 2731, + "charLength": 31, + "snippet": { + "text": "ShellCompDirectiveFilterFileExt" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 69, + "startColumn": 1, + "charOffset": 2580, + "charLength": 259, + "snippet": { + "text": "\t// is a shortcut to using this directive explicitly. The BashCompFilenameExt\n\t// annotation can also be used to obtain the same behavior for flags.\n\tShellCompDirectiveFilterFileExt\n\n\t// ShellCompDirectiveFilterDirs indicates that only directory names should" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "708e584c095abc018508932dfa113f7af8fb73c5f7db0602689b528d6df9f06c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompDirectiveFilterDirs'", + "markdown": "Unnecessarily exported constant `ShellCompDirectiveFilterDirs`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 78, + "startColumn": 2, + "charOffset": 3118, + "charLength": 28, + "snippet": { + "text": "ShellCompDirectiveFilterDirs" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 76, + "startColumn": 1, + "charOffset": 2995, + "charLength": 232, + "snippet": { + "text": "\t// which to search. The BashCompSubdirsInDir annotation can be used to\n\t// obtain the same behavior but only for flags.\n\tShellCompDirectiveFilterDirs\n\n\t// ===========================================================================" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5c012ed822ac28d68fab8c7feae954cbcb06c4de051878f7a648d8ab6e04c9ba" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported constant 'ShellCompDirectiveDefault'", + "markdown": "Unnecessarily exported constant `ShellCompDirectiveDefault`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 2, + "charOffset": 3527, + "charLength": 25, + "snippet": { + "text": "ShellCompDirectiveDefault" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 3413, + "charLength": 165, + "snippet": { + "text": "\t// behavior after completions have been provided.\n\t// This one must be last to avoid messing up the iota count.\n\tShellCompDirectiveDefault ShellCompDirective = 0\n)\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7a852556eb86ce4827f41174c8f19051e9860df81f58cf297051c70bde08f1e6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported type 'CompletionOptions'", + "markdown": "Unnecessarily exported type `CompletionOptions`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 101, + "startColumn": 6, + "charOffset": 3884, + "charLength": 17, + "snippet": { + "text": "CompletionOptions" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 99, + "startColumn": 1, + "charOffset": 3813, + "charLength": 203, + "snippet": { + "text": "\n// CompletionOptions are the options to control shell completion\ntype CompletionOptions struct {\n\t// DisableDefaultCmd prevents Cobra from creating a default 'completion' command\n\tDisableDefaultCmd bool" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "82b9a07c05e0d0f2fd03ed39ae1ac17bef8f5f3550eaf82713a2fa8cc9af2c4c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'NoFileCompletions'", + "markdown": "Unnecessarily exported function `NoFileCompletions`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 116, + "startColumn": 6, + "charOffset": 4510, + "charLength": 17, + "snippet": { + "text": "NoFileCompletions" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 114, + "startColumn": 1, + "charOffset": 4387, + "charLength": 265, + "snippet": { + "text": "// NoFileCompletions can be used to disable file completion for commands that should\n// not trigger file completions.\nfunc NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\treturn nil, ShellCompDirectiveNoFileComp\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f0db8b77f9ece8016eaa936c6bb32bef4f0c0228b7b26366a4598178ecad5711" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'FixedCompletions'", + "markdown": "Unnecessarily exported function `FixedCompletions`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 122, + "startColumn": 6, + "charOffset": 4765, + "charLength": 16, + "snippet": { + "text": "FixedCompletions" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 120, + "startColumn": 1, + "charOffset": 4654, + "charLength": 383, + "snippet": { + "text": "// FixedCompletions can be used to create a completion function which always\n// returns the same results.\nfunc FixedCompletions(choices []string, directive ShellCompDirective) func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\treturn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) {\n\t\treturn choices, directive" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2cb0c9f1b904168b7fbbbb05eb7f2efb43ae199ce7bd50bbd11ce199528ca6a1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported method 'RegisterFlagCompletionFunc'", + "markdown": "Unnecessarily exported method `RegisterFlagCompletionFunc`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 129, + "startColumn": 19, + "charOffset": 5166, + "charLength": 26, + "snippet": { + "text": "RegisterFlagCompletionFunc" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 127, + "startColumn": 1, + "charOffset": 5043, + "charLength": 305, + "snippet": { + "text": "\n// RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag.\nfunc (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error {\n\tflag := c.Flag(flagName)\n\tif flag == nil {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "20eef572741dd94029bdd003151f3950b5034ca89a799656fecc9712d9a94738" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported method 'InitDefaultCompletionCmd'", + "markdown": "Unnecessarily exported method `InitDefaultCompletionCmd`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 653, + "startColumn": 19, + "charOffset": 26135, + "charLength": 24, + "snippet": { + "text": "InitDefaultCompletionCmd" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 651, + "startColumn": 1, + "charOffset": 25997, + "charLength": 242, + "snippet": { + "text": "// 2- c has no subcommands (to avoid creating one),\n// 3- c already has a 'completion' command provided by the program.\nfunc (c *Command) InitDefaultCompletionCmd() {\n\tif c.CompletionOptions.DisableDefaultCmd || !c.HasSubCommands() {\n\t\treturn" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0df160b70ca63f4a887b1665061924ffad76d2c2d1cceea1fdbb492fca5e6d7d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'CompDebug'", + "markdown": "Unnecessarily exported function `CompDebug`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 834, + "startColumn": 6, + "charOffset": 31640, + "charLength": 9, + "snippet": { + "text": "CompDebug" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 832, + "startColumn": 1, + "charOffset": 31480, + "charLength": 242, + "snippet": { + "text": "// Note that completion printouts should never be on stdout as they would\n// be wrongly interpreted as actual completion choices by the completion script.\nfunc CompDebug(msg string, printToStdErr bool) {\n\tmsg = fmt.Sprintf(\"[Debug] %s\", msg)\n" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f1a7035155661e1b129bbc8443f5342bddb9d28e21cd184f1d1277ff63975608" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'CompDebugln'", + "markdown": "Unnecessarily exported function `CompDebugln`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 858, + "startColumn": 6, + "charOffset": 32486, + "charLength": 11, + "snippet": { + "text": "CompDebugln" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 856, + "startColumn": 1, + "charOffset": 32343, + "charLength": 242, + "snippet": { + "text": "// Such logs are only printed when the user has set the environment\n// variable BASH_COMP_DEBUG_FILE to the path of some file to be used.\nfunc CompDebugln(msg string, printToStdErr bool) {\n\tCompDebug(fmt.Sprintf(\"%s\\n\", msg), printToStdErr)\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "59c3eba8906fdb098e9bd2d08be31a4c47903b4b6cc0085417bace49b8ac9d12" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'CompError'", + "markdown": "Unnecessarily exported function `CompError`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 863, + "startColumn": 6, + "charOffset": 32656, + "charLength": 9, + "snippet": { + "text": "CompError" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 861, + "startColumn": 1, + "charOffset": 32586, + "charLength": 153, + "snippet": { + "text": "\n// CompError prints the specified completion message to stderr.\nfunc CompError(msg string) {\n\tmsg = fmt.Sprintf(\"[Error] %s\", msg)\n\tCompDebug(msg, true)" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "126a2635075003852ddf803f94ffea37eeced8defb49ea01eb1144bb819247dc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'CompErrorln'", + "markdown": "Unnecessarily exported function `CompErrorln`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "completions.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 869, + "startColumn": 6, + "charOffset": 32840, + "charLength": 11, + "snippet": { + "text": "CompErrorln" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 867, + "startColumn": 1, + "charOffset": 32742, + "charLength": 162, + "snippet": { + "text": "\n// CompErrorln prints the specified completion message to stderr with a newline at the end.\nfunc CompErrorln(msg string) {\n\tCompError(fmt.Sprintf(\"%s\\n\", msg))\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d8bd497e31f0a46c20794b8a15945928f86f1a16af1e9e9860cf4432277b9f19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenMarkdown'", + "markdown": "Unnecessarily exported function `GenMarkdown`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 50, + "startColumn": 6, + "charOffset": 1288, + "charLength": 11, + "snippet": { + "text": "GenMarkdown" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 48, + "startColumn": 1, + "charOffset": 1242, + "charLength": 170, + "snippet": { + "text": "\n// GenMarkdown creates markdown output.\nfunc GenMarkdown(cmd *cobra.Command, w io.Writer) error {\n\treturn GenMarkdownCustom(cmd, w, func(s string) string { return s })\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b7df6b059ab07ff34d28f292403e4d17253a82379d3f4d1be39d6ba35cdbc49" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenMarkdownCustom'", + "markdown": "Unnecessarily exported function `GenMarkdownCustom`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 55, + "startColumn": 6, + "charOffset": 1472, + "charLength": 17, + "snippet": { + "text": "GenMarkdownCustom" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 53, + "startColumn": 1, + "charOffset": 1413, + "charLength": 203, + "snippet": { + "text": "\n// GenMarkdownCustom creates custom markdown output.\nfunc GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error {\n\tcmd.InitDefaultHelpCmd()\n\tcmd.InitDefaultHelpFlag()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8631ad8a81d8f13c23cdca13e97d59388e750d99ff904dde1d754ff321f2a45b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenMarkdownTree'", + "markdown": "Unnecessarily exported function `GenMarkdownTree`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 123, + "startColumn": 6, + "charOffset": 3596, + "charLength": 15, + "snippet": { + "text": "GenMarkdownTree" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 121, + "startColumn": 1, + "charOffset": 3469, + "charLength": 279, + "snippet": { + "text": "// and `sub` has a subcommand called `third`, it is undefined which\n// help output will be in the file `cmd-sub-third.1`.\nfunc GenMarkdownTree(cmd *cobra.Command, dir string) error {\n\tidentity := func(s string) string { return s }\n\temptyStr := func(s string) string { return \"\" }" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5fead7ec22d288aa375dd731dca2a1f5366ddeb5654aac2440d516b6db8d9fb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenMarkdownTreeCustom'", + "markdown": "Unnecessarily exported function `GenMarkdownTreeCustom`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/md_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 131, + "startColumn": 6, + "charOffset": 3928, + "charLength": 21, + "snippet": { + "text": "GenMarkdownTreeCustom" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 129, + "startColumn": 1, + "charOffset": 3812, + "charLength": 328, + "snippet": { + "text": "// GenMarkdownTreeCustom is the the same as GenMarkdownTree, but\n// with custom filePrepender and linkHandler.\nfunc GenMarkdownTreeCustom(cmd *cobra.Command, dir string, filePrepender, linkHandler func(string) string) error {\n\tfor _, c := range cmd.Commands() {\n\t\tif !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "21ff7b540e530a3f843e6227c51f3dbfe16ac241360494fe846a4058f88e30a4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenYamlTree'", + "markdown": "Unnecessarily exported function `GenYamlTree`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 6, + "charOffset": 1740, + "charLength": 11, + "snippet": { + "text": "GenYamlTree" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 1582, + "charLength": 306, + "snippet": { + "text": "// subcmds, `sub` and `sub-third`, and `sub` has a subcommand called `third`\n// it is undefined which help output will be in the file `cmd-sub-third.1`.\nfunc GenYamlTree(cmd *cobra.Command, dir string) error {\n\tidentity := func(s string) string { return s }\n\temptyStr := func(s string) string { return \"\" }" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "862b23c5b0e691b2eaa9bb6bfeae075bc11154e48ea61bf88d57df6f9cc05257" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenYamlTreeCustom'", + "markdown": "Unnecessarily exported function `GenYamlTreeCustom`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 6, + "charOffset": 2009, + "charLength": 17, + "snippet": { + "text": "GenYamlTreeCustom" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 1947, + "charLength": 270, + "snippet": { + "text": "\n// GenYamlTreeCustom creates yaml structured ref files.\nfunc GenYamlTreeCustom(cmd *cobra.Command, dir string, filePrepender, linkHandler func(string) string) error {\n\tfor _, c := range cmd.Commands() {\n\t\tif !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ae0b7908a8b899ccc32d75e422e23f73e5af6767c1797de52d6ddf9411baa5b7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenYaml'", + "markdown": "Unnecessarily exported function `GenYaml`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 88, + "startColumn": 6, + "charOffset": 2746, + "charLength": 7, + "snippet": { + "text": "GenYaml" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 86, + "startColumn": 1, + "charOffset": 2708, + "charLength": 154, + "snippet": { + "text": "\n// GenYaml creates yaml output.\nfunc GenYaml(cmd *cobra.Command, w io.Writer) error {\n\treturn GenYamlCustom(cmd, w, func(s string) string { return s })\n}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aec92ca6d6a3da30047f9c77333f72a337289c41b8a675ed223a9021772df7c8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoUnnecessarilyExportedIdentifiers", + "kind": "fail", + "level": "note", + "message": { + "text": "Unnecessarily exported function 'GenYamlCustom'", + "markdown": "Unnecessarily exported function `GenYamlCustom`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "doc/yaml_docs.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 6, + "charOffset": 2914, + "charLength": 13, + "snippet": { + "text": "GenYamlCustom" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 2863, + "charLength": 191, + "snippet": { + "text": "\n// GenYamlCustom creates custom yaml output.\nfunc GenYamlCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error {\n\tcmd.InitDefaultHelpCmd()\n\tcmd.InitDefaultHelpFlag()" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bb185f81a69e18462d932bc03da3fa00185820e84fb4506ecb9c9f123a510d19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoNilness", + "kind": "fail", + "level": "warning", + "message": { + "text": "Method call 'got.Error()' might lead to a nil pointer dereference", + "markdown": "Method call `got.Error()` might lead to a nil pointer dereference" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 144, + "startColumn": 10, + "charOffset": 3940, + "charLength": 5, + "snippet": { + "text": "Error" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 142, + "startColumn": 1, + "charOffset": 3890, + "charLength": 187, + "snippet": { + "text": "\n\tif os.Getenv(\"MSYSTEM\") == \"MINGW64\" {\n\t\tif got.Error() != \"open ./tmp/test: Access is denied.\" {\n\t\t\tt.Errorf(\"got: %s, want: %s\", got.Error(), \"open ./tmp/test: Access is denied.\")\n\t\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ce8b14f89b9465bf66449294236e7eddaf0cadc343c391a04562eb430f5d0198" + }, + "properties": { + "ideaSeverity": "WARNING" + } + }, + { + "ruleId": "GoNilness", + "kind": "fail", + "level": "warning", + "message": { + "text": "Method call 'got.Error()' might lead to a nil pointer dereference", + "markdown": "Method call `got.Error()` might lead to a nil pointer dereference" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 145, + "startColumn": 38, + "charOffset": 4027, + "charLength": 5, + "snippet": { + "text": "Error" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 143, + "startColumn": 1, + "charOffset": 3891, + "charLength": 196, + "snippet": { + "text": "\tif os.Getenv(\"MSYSTEM\") == \"MINGW64\" {\n\t\tif got.Error() != \"open ./tmp/test: Access is denied.\" {\n\t\t\tt.Errorf(\"got: %s, want: %s\", got.Error(), \"open ./tmp/test: Access is denied.\")\n\t\t}\n\t} else {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "57bf56e7f8ea3483cd537f2cb90c850be381301f68c59d12a1682f5160502a13" + }, + "properties": { + "ideaSeverity": "WARNING" + } + }, + { + "ruleId": "GoNilness", + "kind": "fail", + "level": "warning", + "message": { + "text": "Method call 'got.Error()' might lead to a nil pointer dereference", + "markdown": "Method call `got.Error()` might lead to a nil pointer dereference" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 148, + "startColumn": 10, + "charOffset": 4097, + "charLength": 5, + "snippet": { + "text": "Error" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 146, + "startColumn": 1, + "charOffset": 4074, + "charLength": 160, + "snippet": { + "text": "\t\t}\n\t} else {\n\t\tif got.Error() != \"open ./tmp/test: permission denied\" {\n\t\t\tt.Errorf(\"got: %s, want: %s\", got.Error(), \"open ./tmp/test: permission denied\")\n\t\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec2a92a74822abfad79a59f566347edb8f677cc074734c38d7de8a7f8166a4b2" + }, + "properties": { + "ideaSeverity": "WARNING" + } + }, + { + "ruleId": "GoNilness", + "kind": "fail", + "level": "warning", + "message": { + "text": "Method call 'got.Error()' might lead to a nil pointer dereference", + "markdown": "Method call `got.Error()` might lead to a nil pointer dereference" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fish_completions_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 149, + "startColumn": 38, + "charOffset": 4184, + "charLength": 5, + "snippet": { + "text": "Error" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 147, + "startColumn": 1, + "charOffset": 4078, + "charLength": 159, + "snippet": { + "text": "\t} else {\n\t\tif got.Error() != \"open ./tmp/test: permission denied\" {\n\t\t\tt.Errorf(\"got: %s, want: %s\", got.Error(), \"open ./tmp/test: permission denied\")\n\t\t}\n\t}" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dfd05c0f5a06b608ba0da82064b51bd21a1c5bd528fa8f2f3eadef3cb51613fa" + }, + "properties": { + "ideaSeverity": "WARNING" + } + }, + { + "ruleId": "GoContextTodo", + "kind": "fail", + "level": "note", + "message": { + "text": "Consider to use well-defined context", + "markdown": "Consider to use well-defined context" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 17, + "charOffset": 4701, + "charLength": 4, + "snippet": { + "text": "TODO" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 4644, + "charLength": 111, + "snippet": { + "text": "\nfunc TestExecuteContext(t *testing.T) {\n\tctx := context.TODO()\n\n\tctxRun := func(cmd *Command, args []string) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "12311cc81a57f58e4367057e5fd2ecb3c1514b4eb517b6231f648f8a50363102" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + }, + { + "ruleId": "GoContextTodo", + "kind": "fail", + "level": "note", + "message": { + "text": "Consider to use well-defined context", + "markdown": "Consider to use well-defined context" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "command_test.go", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 207, + "startColumn": 17, + "charOffset": 5609, + "charLength": 4, + "snippet": { + "text": "TODO" + }, + "sourceLanguage": "go" + }, + "contextRegion": { + "startLine": 205, + "startColumn": 1, + "charOffset": 5551, + "charLength": 112, + "snippet": { + "text": "\nfunc TestExecuteContextC(t *testing.T) {\n\tctx := context.TODO()\n\n\tctxRun := func(cmd *Command, args []string) {" + } + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d0f28e11bfd217ff275d8ac5440852ed42571528ee6a93bb667df8864aea7df8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING" + } + } + ], + "configProfile": "absent", + "deviceId": "200820300000000-bf30-772f-2139-65120ff67440", + "tags": [ + "qodana.promo.results", + "configProfile", + "deviceId" + ] + } + } + ] +} \ No newline at end of file