configuration/quality/data/knob.concept.data.json

configuration/quality/data/knob.concept.data.json is a file in GovLab Quality. 595 lines of code and 0 definitions.

{
    "meta": {
        "note": "Hand-authored knob overlay for the tunable concepts, taken from each tool's own schema or source. A default is null where the source inlines none or measures a different metric, and `fixed: true` marks a tool with no configurable threshold for the concept. The catalog pipeline merges this overlay with the rule catalog.",
        "verified": "doc-only"
    },
    "concepts": {
        "cyclomatic-complexity": {
            "valueType": "int-threshold",
            "tools": {
                "eslint": {
                    "knob": "max",
                    "default": 20,
                    "variant": "classic|modified",
                    "fidelity": "exact",
                    "provenance": "eslint rule meta.schema + defaultOptions"
                },
                "eslint-sonarjs": {
                    "knob": "threshold",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "sonarjs rule meta.schema"
                },
                "ruff": {
                    "knob": "lint.mccabe.max-complexity",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "ruff.schema.json (McCabe; opt-in via C901)"
                },
                "golangci-lint": {
                    "knob": "gocyclo.min-complexity",
                    "default": 30,
                    "fidelity": "exact",
                    "provenance": "golangci jsonschema (min-complexity = ceiling; cyclop.max-complexity=10)"
                },
                "checkstyle": {
                    "knob": "max",
                    "default": 10,
                    "fidelity": "exact",
                    "provenance": "CyclomaticComplexityCheck DEFAULT_COMPLEXITY_VALUE"
                },
                "pmd": {
                    "knob": "methodReportLevel",
                    "default": 10,
                    "fidelity": "exact",
                    "provenance": "CyclomaticComplexityRule PropertyFactory (classReportLevel=40)"
                },
                "phpmd": {
                    "knob": "reportLevel",
                    "default": 10,
                    "fidelity": "exact",
                    "provenance": "rulesets/codesize.xml"
                },
                "rubocop": {
                    "knob": "Max",
                    "default": 7,
                    "fidelity": "exact",
                    "provenance": "config/default.yml Metrics/CyclomaticComplexity"
                },
                "swiftlint": {
                    "knob": "warning|error",
                    "default": "10|20",
                    "fidelity": "exact",
                    "provenance": "CyclomaticComplexityConfiguration.swift (two-threshold)"
                },
                "lintr": {
                    "knob": "complexity_limit",
                    "default": 15,
                    "fidelity": "exact",
                    "provenance": "cyclocomp_linter roxygen @param"
                },
                "luacheck": {
                    "knob": "max-cyclomatic-complexity",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "docsrc/cli.rst (opt-in)"
                },
                "revive": {
                    "knob": "(positional arg)",
                    "default": 10,
                    "fidelity": "exact",
                    "provenance": "rule/cyclomatic.go defaultMaxCyclomaticComplexity"
                },
                "sonar": {
                    "knob": "Threshold",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "SonarSource rspec S1541 (per-language; superseded by cognitive S3776)"
                },
                "slither": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "detectors/functions/cyclomatic_complexity.py (cc>11 hardcoded)"
                },
                "codeql": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "cyclomatic-complexity-per-function metric query"
                }
            }
        },
        "cognitive-complexity": {
            "valueType": "int-threshold",
            "tools": {
                "eslint-sonarjs": {
                    "knob": "(threshold)",
                    "default": 15,
                    "fidelity": "exact",
                    "provenance": "sonarjs cognitive-complexity"
                },
                "sonar": {
                    "knob": "Threshold",
                    "default": 15,
                    "fidelity": "exact",
                    "provenance": "SonarSource rspec S3776"
                },
                "rubocop": {
                    "knob": "Max",
                    "default": 8,
                    "fidelity": "approximate",
                    "provenance": "Metrics/PerceivedComplexity (perceived ~ cognitive)"
                },
                "golangci-lint": {
                    "knob": "gocognit.min-complexity",
                    "default": 30,
                    "fidelity": "exact",
                    "provenance": "golangci jsonschema"
                },
                "pmd": {
                    "knob": "methodReportLevel",
                    "default": 15,
                    "fidelity": "exact",
                    "provenance": "CognitiveComplexityRule (classReportLevel=50)"
                }
            }
        },
        "long-function": {
            "valueType": "int-threshold",
            "tools": {
                "eslint": {
                    "knob": "max",
                    "default": 50,
                    "fidelity": "exact",
                    "provenance": "max-lines-per-function meta.schema (max-lines file=300, max-statements=10)"
                },
                "eslint-sonarjs": {
                    "knob": "maximum",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "sonarjs max-lines-per-function meta.schema"
                },
                "rubocop": {
                    "knob": "Max",
                    "default": 10,
                    "fidelity": "exact",
                    "provenance": "Metrics/MethodLength (ClassLength=100)"
                },
                "ruff": {
                    "knob": "lint.pylint.max-statements",
                    "default": null,
                    "fidelity": "approximate",
                    "provenance": "ruff.schema.json (statements, not lines)"
                },
                "pylint": {
                    "knob": "max-statements",
                    "default": 50,
                    "fidelity": "approximate",
                    "provenance": "pylint design_analysis.py (statements)"
                },
                "clippy": {
                    "knob": "too_many_lines_threshold",
                    "default": 100,
                    "fidelity": "exact",
                    "provenance": "clippy_config conf.rs"
                },
                "golangci-lint": {
                    "knob": "funlen.lines",
                    "default": 60,
                    "fidelity": "exact",
                    "provenance": "golangci funlen (statements=40)"
                },
                "checkstyle": {
                    "knob": "max",
                    "default": 150,
                    "fidelity": "exact",
                    "provenance": "MethodLengthCheck DEFAULT_MAX_LINES"
                },
                "swiftlint": {
                    "knob": "warning|error",
                    "default": "50|100",
                    "fidelity": "exact",
                    "provenance": "FunctionBodyLengthRule"
                },
                "codeql": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "lines-of-code metric query"
                }
            }
        },
        "too-many-params": {
            "valueType": "int-threshold",
            "tools": {
                "eslint": {"knob": "max",
                    "default": 3,
                    "fidelity": "exact",
                    "provenance": "max-params meta.schema"},
                "eslint-ts": {
                    "knob": "max",
                    "default": 3,
                    "fidelity": "exact",
                    "provenance": "@typescript-eslint/max-params meta.schema"
                },
                "rubocop": {"knob": "Max",
                    "default": 5,
                    "fidelity": "exact",
                    "provenance": "Metrics/ParameterLists"},
                "ruff": {
                    "knob": "lint.pylint.max-args",
                    "default": 5,
                    "fidelity": "exact",
                    "provenance": "ruff.schema.json (PLR0913)"
                },
                "pylint": {
                    "knob": "max-args",
                    "default": 5,
                    "fidelity": "exact",
                    "provenance": "pylint design_analysis.py"
                },
                "clippy": {
                    "knob": "too_many_arguments_threshold",
                    "default": 7,
                    "fidelity": "exact",
                    "provenance": "clippy_config conf.rs"
                },
                "checkstyle": {
                    "knob": "max",
                    "default": 7,
                    "fidelity": "exact",
                    "provenance": "ParameterNumberCheck DEFAULT_MAX_PARAMETERS"
                },
                "swiftlint": {
                    "knob": "warning|error",
                    "default": "5|8",
                    "fidelity": "exact",
                    "provenance": "FunctionParameterCountConfiguration"
                },
                "phpmd": {
                    "knob": "minimum",
                    "default": 10,
                    "fidelity": "exact",
                    "provenance": "rulesets/codesize.xml ExcessiveParameterList"
                },
                "perlcritic": {
                    "knob": "max_arguments",
                    "default": 5,
                    "fidelity": "exact",
                    "provenance": "ProhibitManyArgs.pm"
                },
                "revive": {
                    "knob": "argument-limit (arg)",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "revive argument-limit rule"
                },
                "codeql": {"knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "metric query"}
            }
        },
        "deep-nesting": {
            "valueType": "int-threshold",
            "tools": {
                "eslint": {
                    "knob": "max",
                    "default": 4,
                    "fidelity": "exact",
                    "provenance": "max-depth meta.schema (max-nested-callbacks=10)"
                },
                "eslint-sonarjs": {
                    "knob": "maximumNestingLevel",
                    "default": 3,
                    "fidelity": "exact",
                    "provenance": "sonarjs nested-control-flow"
                },
                "rubocop": {"knob": "Max",
                    "default": 3,
                    "fidelity": "exact",
                    "provenance": "Metrics/BlockNesting"},
                "ruff": {
                    "knob": "lint.pylint.max-nested-blocks",
                    "default": 5,
                    "fidelity": "exact",
                    "provenance": "ruff.schema.json"
                },
                "checkstyle": {
                    "knob": "max",
                    "default": 1,
                    "fidelity": "exact",
                    "provenance": "NestedForDepth/NestedIfDepthCheck"
                },
                "golangci-lint": {
                    "knob": "nestif.min-complexity",
                    "default": 5,
                    "fidelity": "exact",
                    "provenance": "golangci nestif"
                },
                "codeql": {"knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "metric query"},
                "error-prone": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "bug-pattern checker, no threshold"
                }
            }
        },
        "line-length": {
            "valueType": "value-setting",
            "tools": {
                "eslint": {
                    "knob": "code",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "max-len meta.schema (opt-in)"
                },
                "eslint-stylistic": {
                    "knob": "code",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "@stylistic/max-len meta.schema"
                },
                "rubocop": {"knob": "Max",
                    "default": 120,
                    "fidelity": "exact",
                    "provenance": "Layout/LineLength"},
                "ruff": {"knob": "line-length",
                    "default": 88,
                    "fidelity": "exact",
                    "provenance": "ruff.schema.json"},
                "pylint": {
                    "knob": "max-line-length",
                    "default": 100,
                    "fidelity": "exact",
                    "provenance": "pylint format.py"
                },
                "checkstyle": {
                    "knob": "max",
                    "default": 80,
                    "fidelity": "exact",
                    "provenance": "LineLengthCheck DEFAULT_MAX_COLUMNS"
                },
                "swiftlint": {
                    "knob": "warning|error",
                    "default": "120|200",
                    "fidelity": "exact",
                    "provenance": "LineLengthConfiguration"
                },
                "prettier": {
                    "knob": "printWidth",
                    "default": 80,
                    "fidelity": "approximate",
                    "provenance": "prettier options (soft wrap target)"
                },
                "lintr": {"knob": "length",
                    "default": 80,
                    "fidelity": "exact",
                    "provenance": "line_length_linter"}
            }
        },
        "indentation": {
            "valueType": "value-setting",
            "tools": {
                "eslint": {
                    "knob": "indent",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "indent meta.schema (tab | integer size)"
                },
                "eslint-stylistic": {
                    "knob": "indent",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "@stylistic/indent meta.schema"
                },
                "eslint-yml": {
                    "knob": "indent",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "yml/indent meta.schema"
                },
                "rubocop": {
                    "knob": "Width",
                    "default": 2,
                    "fidelity": "exact",
                    "provenance": "Layout/IndentationWidth"
                },
                "ruff": {"knob": "indent-width",
                    "default": 4,
                    "fidelity": "exact",
                    "provenance": "ruff.schema.json"},
                "checkstyle": {
                    "knob": "basicOffset",
                    "default": 4,
                    "fidelity": "exact",
                    "provenance": "IndentationCheck DEFAULT_INDENTATION"
                },
                "prettier": {"knob": "tabWidth",
                    "default": 2,
                    "fidelity": "exact",
                    "provenance": "prettier options"},
                "pylint": {
                    "knob": "indent-string",
                    "default": "4 spaces",
                    "fidelity": "exact",
                    "provenance": "pylint format.py"
                },
                "lintr": {"knob": "indent",
                    "default": 2,
                    "fidelity": "exact",
                    "provenance": "indentation_linter"},
                "yamllint": {
                    "knob": "spaces",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "rules/indentation.py"
                },
                "sqlfluff": {
                    "knob": "tab_space_size",
                    "default": 4,
                    "fidelity": "exact",
                    "provenance": "default_config.cfg"
                },
                "codeql": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "query, no indent-size config"
                },
                "semgrep": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "pattern rule, no config"
                },
                "shellcheck": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "SC check, no indent config"
                },
                "clang-tidy": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "indent size is clang-format's, not clang-tidy"
                },
                "luacheck": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "linter, no indent-size knob"
                },
                "revive": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "gofmt owns Go indentation"
                },
                "swiftlint": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "consistency check, no size knob"
                },
                "eslint-react": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "jsx layout-consistency; size via core/stylistic indent"
                },
                "eslint-unicorn": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "no indent-size knob"
                },
                "eslint-jsdoc": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "no indent-size knob"
                },
                "eslint-sonarjs": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "no indent-size knob"
                }
            }
        },
        "quote-style": {
            "valueType": "enum",
            "enum": [
                "single",
                "double"
            ],
            "tools": {
                "eslint": {
                    "knob": "quotes",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "quotes meta.schema (single|double|backtick)"
                },
                "eslint-stylistic": {
                    "knob": "quotes",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "@stylistic/quotes meta.schema"
                },
                "eslint-yml": {
                    "knob": "quotes",
                    "default": null,
                    "fidelity": "exact",
                    "provenance": "yml/quotes meta.schema"
                },
                "rubocop": {
                    "knob": "EnforcedStyle",
                    "default": "single_quotes",
                    "fidelity": "exact",
                    "provenance": "Style/StringLiterals"
                },
                "ruff": {
                    "knob": "format.quote-style",
                    "default": "double",
                    "fidelity": "exact",
                    "provenance": "ruff.schema.json"
                },
                "prettier": {
                    "knob": "singleQuote",
                    "default": false,
                    "fidelity": "exact",
                    "provenance": "prettier options"
                },
                "shellcheck": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "SC quoting-safety check, not style"
                },
                "perlcritic": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "policy, no single/double enforce knob"
                },
                "codeql": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "pattern query, no config"
                },
                "hadolint": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "Dockerfile check, no quote-style knob"
                },
                "brakeman": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "security scanner, not a style linter"
                },
                "semgrep": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "pattern rule, no config"
                },
                "jsonc": {
                    "knob": null,
                    "fixed": true,
                    "fidelity": "advisory",
                    "provenance": "JSON is double-quote by spec; jsonc/quote-props is a different axis"
                }
            }
        }
    }
}