{
  "$schema": "https://json.schemastore.org/sarif-2.1.0.json",
  "version": "2.1.0",
  "runs": [
    {
      "tool": {
        "driver": {
          "name": "CodeLint",
          "semanticVersion": "3.2.1",
          "globalMessageStrings": { "generic": { "text": "Check {0} tripped." } },
          "rules": [
            {
              "id": "CL1001",
              "name": "SqlInjection",
              "shortDescription": { "text": "SQL built from request data." },
              "helpUri": "https://example.org/rules/CL1001",
              "defaultConfiguration": { "level": "error" },
              "messageStrings": { "default": { "text": "Query built from `{0}` at {1} sites." } }
            },
            {
              "id": "CL2002",
              "name": "UnusedVariable",
              "shortDescription": { "text": "A variable nothing reads." },
              "defaultConfiguration": { "level": "note" }
            },
            { "id": "CL3003", "name": "WeakHash" }
          ]
        }
      },
      "originalUriBaseIds": { "SRCROOT": { "uri": "file:///work/repo/" } },
      "artifacts": [
        { "location": { "uri": "src/db/users.py", "uriBaseId": "SRCROOT" } },
        { "location": { "uri": "src/auth.py", "uriBaseId": "SRCROOT" } }
      ],
      "results": [
        {
          "ruleId": "CL1001",
          "ruleIndex": 0,
          "message": { "id": "default", "arguments": ["user_id", "2"] },
          "locations": [
            {
              "physicalLocation": {
                "artifactLocation": { "index": 0 },
                "region": { "startLine": 42, "startColumn": 9, "endColumn": 58, "snippet": { "text": "cur.execute(\"select * from users where id=\" + user_id)" } }
              }
            }
          ],
          "partialFingerprints": { "primaryLocationLineHash": "a1b2c3:1" }
        },
        {
          "ruleId": "CL2002",
          "ruleIndex": 1,
          "message": { "text": "`tmp` is never read." },
          "locations": [
            { "physicalLocation": { "artifactLocation": { "uri": "src/db/users.py", "uriBaseId": "SRCROOT" }, "region": { "startLine": 7 } } }
          ]
        },
        {
          "ruleId": "CL3003",
          "ruleIndex": 2,
          "message": { "text": "md5 used for passwords; braces stay: {{salt}}." },
          "locations": [
            { "physicalLocation": { "artifactLocation": { "index": 1 }, "region": { "startLine": 15, "endLine": 18 } } }
          ]
        },
        {
          "ruleId": "CL3003",
          "level": "error",
          "message": { "text": "sha1 used for tokens." },
          "locations": [
            { "physicalLocation": { "artifactLocation": { "index": 1 }, "region": { "startLine": 90 } } }
          ],
          "suppressions": [{ "kind": "inSource", "justification": "legacy" }]
        },
        {
          "ruleId": "CL1001/raw",
          "kind": "pass",
          "message": { "id": "generic", "arguments": ["raw"] }
        }
      ]
    }
  ]
}
