{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-0bd404599d80fe9b", "name": "Possibly dead Python function: set_version", "shortDescription": {"text": "Possibly dead Python function: set_version"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cef1a8f24a556572", "name": "Possibly dead Python function: export", "shortDescription": {"text": "Possibly dead Python function: export"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ce24fdfd0ce59af", "name": "Possibly dead Python function: export_sources", "shortDescription": {"text": "Possibly dead Python function: export_sources"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c53d9e2f3f0a3c9", "name": "Possibly dead Python function: config_options", "shortDescription": {"text": "Possibly dead Python function: config_options"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8833776336d03cbf", "name": "Possibly dead Python function: layout", "shortDescription": {"text": "Possibly dead Python function: layout"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35f3b177cb313aaa", "name": "Possibly dead Python function: package", "shortDescription": {"text": "Possibly dead Python function: package"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1d458c97a7335ad", "name": "Possibly dead Python function: package_info", "shortDescription": {"text": "Possibly dead Python function: package_info"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17ddfba195821b23", "name": "Insecure pattern 'python_os_system' in tools/scripts/approvalTests.py:16", "shortDescription": {"text": "Insecure pattern 'python_os_system' in tools/scripts/approvalTests.py:16"}, "fullDescription": {"text": "Found a known-risky pattern (python_os_system). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1e33db595fc6a40", "name": "Insecure pattern 'subprocess_shell_true' in tools/scripts/updateDocumentSnippets.py:22", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in tools/scripts/updateDocumentSnippets.py:22"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd022690caf1ff43", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c56cd2b5440a4d8a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 41 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 18 placeholder/mock markers across 3 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f85092d74bc191f2", "name": "Network/subprocess call without timeout or try/except \u2014 tools/scripts/approvalTests.py:164", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/scripts/approvalTests.py:164"}, "fullDescription": {"text": "`subprocess.call(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-359dde80dc108d12", "name": "Network/subprocess call without timeout or try/except \u2014 tools/scripts/updateDocumentSnippets.py:22", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/scripts/updateDocumentSnippets.py:22"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-198eae4cb4cebd0d", "name": "Network/subprocess call without timeout or try/except \u2014 tools/misc/appveyorMergeCoverageScript.py:9", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/misc/appveyorMergeCoverageScript.py:9"}, "fullDescription": {"text": "`subprocess.check_call(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}]}}, "automationDetails": {"id": "repobility/30775"}, "properties": {"repository": "catchorg/Catch2", "repoUrl": "https://github.com/catchorg/Catch2", "branch": "main"}, "results": [{"ruleId": "scanner-0bd404599d80fe9b", "level": "note", "message": {"text": "Possibly dead Python function: set_version"}, "properties": {"repobilityId": "da455db65c7430e0", "scanner": "scanner-primary", "fingerprint": "0bd404599d80fe9b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:48"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cef1a8f24a556572", "level": "note", "message": {"text": "Possibly dead Python function: export"}, "properties": {"repobilityId": "eb9ca389f8cda1a9", "scanner": "scanner-primary", "fingerprint": "cef1a8f24a556572", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ce24fdfd0ce59af", "level": "note", "message": {"text": "Possibly dead Python function: export_sources"}, "properties": {"repobilityId": "9748316af9e19586", "scanner": "scanner-primary", "fingerprint": "4ce24fdfd0ce59af", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c53d9e2f3f0a3c9", "level": "note", "message": {"text": "Possibly dead Python function: config_options"}, "properties": {"repobilityId": "954ab60a0c0f1103", "scanner": "scanner-primary", "fingerprint": "7c53d9e2f3f0a3c9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:67"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8833776336d03cbf", "level": "note", "message": {"text": "Possibly dead Python function: layout"}, "properties": {"repobilityId": "823c435dcef94df9", "scanner": "scanner-primary", "fingerprint": "8833776336d03cbf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-35f3b177cb313aaa", "level": "note", "message": {"text": "Possibly dead Python function: package"}, "properties": {"repobilityId": "31778e2b69aae985", "scanner": "scanner-primary", "fingerprint": "35f3b177cb313aaa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:101"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1d458c97a7335ad", "level": "note", "message": {"text": "Possibly dead Python function: package_info"}, "properties": {"repobilityId": "e9624061f02a2a27", "scanner": "scanner-primary", "fingerprint": "f1d458c97a7335ad", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conanfile.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17ddfba195821b23", "level": "error", "message": {"text": "Insecure pattern 'python_os_system' in tools/scripts/approvalTests.py:16"}, "properties": {"repobilityId": "646fd0744e75c579", "scanner": "scanner-primary", "fingerprint": "17ddfba195821b23", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "python_os_system"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/scripts/approvalTests.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-a1e33db595fc6a40", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in tools/scripts/updateDocumentSnippets.py:22"}, "properties": {"repobilityId": "45186755714d7a01", "scanner": "scanner-primary", "fingerprint": "a1e33db595fc6a40", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/scripts/updateDocumentSnippets.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-fd022690caf1ff43", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7a4709689d234d5", "scanner": "scanner-primary", "fingerprint": "fd022690caf1ff43", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/validate-header-guards.yml"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-c56cd2b5440a4d8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "67b8e4319747e06a", "scanner": "scanner-primary", "fingerprint": "c56cd2b5440a4d8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/linux-bazel-builds.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "6be6be6ac917ca4c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "04bc3112bbf05ece", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-f85092d74bc191f2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/scripts/approvalTests.py:164"}, "properties": {"repobilityId": "d02b6ea300ce43ea", "scanner": "scanner-primary", "fingerprint": "f85092d74bc191f2", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/scripts/approvalTests.py"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-359dde80dc108d12", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/scripts/updateDocumentSnippets.py:22"}, "properties": {"repobilityId": "85b0f233257d4cb1", "scanner": "scanner-primary", "fingerprint": "359dde80dc108d12", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/scripts/updateDocumentSnippets.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-198eae4cb4cebd0d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/misc/appveyorMergeCoverageScript.py:9"}, "properties": {"repobilityId": "8edd4ab0bee55ae5", "scanner": "scanner-primary", "fingerprint": "198eae4cb4cebd0d", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/misc/appveyorMergeCoverageScript.py"}, "region": {"startLine": 9}}}]}]}]}