{
  "repository": "salesforce/cloudsplaining",
  "ref": "b06d138dc983f3d8be72643c8f595eaccf060026",
  "methods": [
    {
      "slug": "formal",
      "title": "Formal verification and model checking"
    },
    {
      "slug": "static_analysis",
      "title": "Static analysis"
    },
    {
      "slug": "testing",
      "title": "Testing"
    },
    {
      "slug": "formatting",
      "title": "Formatting and hygiene"
    },
    {
      "slug": "supply_chain",
      "title": "Supply chain"
    },
    {
      "slug": "unclassified",
      "title": "Unclassified"
    }
  ],
  "verifications": [
    {
      "tool": "mkdocs",
      "method": "static_analysis",
      "commands": [
        "mkdocs build"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "justfile",
          "locator": "recipe build-docs (line 5)"
        },
        {
          "path": "pyproject.toml",
          "locator": "[dependency-groups] docs: mkdocs"
        }
      ],
      "upstream": "https://github.com/mkdocs/mkdocs",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "ruff-check",
      "method": "static_analysis",
      "commands": [
        "pre-commit hook ruff-check"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.ruff-check"
        },
        {
          "path": "justfile",
          "locator": "recipe lint (line 54)"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.ruff]"
        }
      ],
      "upstream": "https://github.com/astral-sh/ruff",
      "docs": "https://docs.astral.sh/ruff/linter/#exit-codes",
      "exit_codes": {
        "0": "no violations",
        "1": "violations found",
        "2": "invalid configuration, CLI options or internal error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "eslint",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "package.json",
          "locator": "devDependencies: eslint"
        }
      ],
      "upstream": "https://github.com/eslint/eslint",
      "docs": "https://eslint.org/docs/latest/use/command-line-interface#exit-codes",
      "exit_codes": {
        "0": "no errors",
        "1": "linting errors found",
        "2": "configuration problem or internal error"
      },
      "autofix": true,
      "declared_only": true
    },
    {
      "tool": "ci-matrix",
      "method": "testing",
      "commands": [
        "build (node-version: 2)",
        "python-version (python: 4)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/nodejs-test.yml",
          "locator": "jobs.build.strategy.matrix"
        },
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.python-version.strategy.matrix"
        }
      ],
      "upstream": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "mocha",
      "method": "testing",
      "commands": [
        "mocha --recursive cloudsplaining/output/src/test/"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/nodejs-test.yml",
          "locator": "jobs.build.steps[4]"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        },
        {
          "path": ".github/workflows/update-bundle-report.yml",
          "locator": "jobs.update.steps[5] (Run NPM unit tests for sanity checks)"
        },
        {
          "path": "justfile",
          "locator": "recipe test-js (line 45)"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: mocha"
        }
      ],
      "upstream": "https://github.com/mochajs/mocha",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pytest",
      "method": "testing",
      "commands": [
        "pytest -v",
        "pytest test/test_sample_data_in_sync.py -q"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/publish.yml",
          "locator": "jobs.test.steps[4] (Run pytest (unit tests))"
        },
        {
          "path": "justfile",
          "locator": "recipe unit-tests (line 62)"
        },
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.ci.steps[4] (Run pytest (unit tests))"
        },
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.python-version.steps[4] (Run pytest (unit tests))"
        },
        {
          "path": "justfile",
          "locator": "recipe check-sampledata-sync (line 76)"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.pytest]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[dependency-groups] dev: pytest"
        }
      ],
      "upstream": "https://github.com/pytest-dev/pytest",
      "docs": "https://docs.pytest.org/en/stable/reference/exit-codes.html",
      "exit_codes": {
        "0": "all tests passed",
        "1": "some tests failed",
        "2": "interrupted by the user",
        "3": "internal error",
        "4": "command line usage error",
        "5": "no tests were collected"
      },
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "ruff-format",
      "method": "formatting",
      "commands": [
        "pre-commit hook ruff-format"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.ruff-format"
        },
        {
          "path": "justfile",
          "locator": "recipe lint (line 54)"
        }
      ],
      "upstream": "https://github.com/astral-sh/ruff",
      "docs": "https://docs.astral.sh/ruff/formatter/#exit-codes",
      "exit_codes": {
        "0": "already formatted",
        "1": "files would be reformatted (--check)",
        "2": "error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "coverage report -m"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/publish.yml",
          "locator": "jobs.test.steps[4] (Run pytest (unit tests))"
        },
        {
          "path": "justfile",
          "locator": "recipe unit-tests (line 62)"
        },
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.ci.steps[4] (Run pytest (unit tests))"
        },
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.python-version.steps[4] (Run pytest (unit tests))"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "mkdocs serve --dev-addr 127.0.0.1:8001"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "justfile",
          "locator": "recipe serve-docs (line 37)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook actionlint-docker"
      ],
      "triggers": [
        "pre_commit",
        "local"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.actionlint-docker"
        },
        {
          "path": "justfile",
          "locator": "recipe lint (line 54)"
        }
      ],
      "upstream": "https://github.com/rhysd/actionlint",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "ty check"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test.yml",
          "locator": "jobs.ci.steps[5] (Run mypy (static type check))"
        },
        {
          "path": "justfile",
          "locator": "recipe type-check (line 49)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "vue-cli-service lint"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.lint"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
