Documentation Index
Fetch the complete documentation index at: https://docs.roboticks.io/llms.txt
Use this file to discover all available pages before exploring further.
SARIF 2.1.0 ingest
SARIF (Static Analysis Results Interchange Format) is the OASIS-standard JSON format for static-analysis output. Roboticks ingests SARIF 2.1.0 for any tool that emits it, so you don’t need a bespoke connector for every new scanner. Common SARIF-emitting tools that work out of the box:| Tool | Domain |
|---|---|
| Bandit | Python security |
| Semgrep | Multi-language patterns |
| CodeQL (GitHub Code Scanning) | Multi-language deep analysis |
| Snyk Code | Multi-language security |
| ESLint | JS/TS lint |
| Brakeman | Ruby/Rails security |
| Trivy | Container vulnerability |
| Checkov | IaC security |
| PMD, SpotBugs | Java |
| Gosec | Go security |
Cargo audit (with --format json + post-process) | Rust |
Why this exists
Before SARIF, every static-analysis tool had its own report format. Now most modern tools emit SARIF, and you can plug a new scanner in without us writing a custom parser.Upload a SARIF file
$schema field or runs[].tool.driver). The --tool label is free-form — used in the dashboard to group findings by source.
Wire it to your tool
- Bandit
- Semgrep
- CodeQL
- Snyk Code
- Trivy
What the connector reads
For eachrun in the SARIF file, Roboticks extracts:
| SARIF field | Roboticks finding field |
|---|---|
tool.driver.name | source tool name |
tool.driver.version | tool version |
results[].ruleId | rule ID |
results[].level | severity (mapped, see below) |
results[].message.text | message |
results[].locations[0].physicalLocation.artifactLocation.uri | source file |
results[].locations[0].physicalLocation.region.startLine | line number |
results[].fingerprints (or partialFingerprints) | deduplication key |
results[].suppressions | suppression status |
Severity mapping
SARIF defineslevel: none | note | warning | error. Roboticks maps:
| SARIF level | Roboticks severity |
|---|---|
error | error |
warning | warning |
note | info |
none | suppressed |
rank (0–100) instead — Roboticks reads properties.security-severity if present and overrides the mapping:
| security-severity | Roboticks severity |
|---|---|
| ≥ 9.0 | critical |
| 7.0–8.9 | error |
| 4.0–6.9 | warning |
| < 4.0 | info |
Suppressions
SARIFsuppressions round-trip:
kind: external or kind: inSource (e.g., a # nosec comment) appear as dismissed in Roboticks and don’t gate PR Check Runs.
CI recipe (generic)
Where findings appear
- Traceability matrix — findings link to requirements via the source file’s
@confirms-annotated test. - Findings view — filterable by tool, severity, suppression state, and rule ID.
- Release evidence pack — SARIF Findings appendix in the PDF; raw SARIF JSON files in the ZIP.
- PR Check Run —
Roboticks · Findingssummarises new/resolved across all SARIF tools.
Validating a SARIF file
If your tool emits malformed SARIF (it happens), validate before upload:Multi-run SARIF files
A SARIF file may contain multipleruns[] (one tool per run). Roboticks handles them — each run becomes a separate finding source. Useful when one CI step bundles several scanners.
Limitations
- Result kind
passis recorded as a passing check but not surfaced in the matrix. Most tools don’t emit these; if yours does, the data is preserved in the ZIP. - Inline taxonomies (e.g.,
taxonomies[]) are stored verbatim and queryable via API but not rendered specially in the UI. - SARIF 1.0 / 2.0 — convert via the SARIF Multitool to 2.1.0 first.
Troubleshooting
`SARIF schema validation failed`
`SARIF schema validation failed`
Run
sarif-validate locally to see the specific violation. Common culprit: missing required $schema or version fields.Findings have no source file linkage
Findings have no source file linkage
The
physicalLocation.artifactLocation.uri is relative; Roboticks resolves it against the commit’s repo root. If the tool emits absolute paths from the build host, post-process with jq to strip the host prefix before uploading.Same finding reported on every PR
Same finding reported on every PR
Most likely the tool isn’t emitting
partialFingerprints, so Roboticks can’t dedupe across runs. CodeQL and Snyk emit them by default; for Semgrep, enable --metrics=on and check that the SARIF output has partialFingerprints populated.Next
OSS scanners
The bundled SARIF-emitting tools shipped in paid tiers.
BYO connectors
When a custom commercial connector beats generic SARIF.