Result format¶
The default format (-f sarif) is a SARIF 2.1.0 log. ts-sast does not invent its own findings format: SARIF is what TrustSource, GitHub code scanning, Azure DevOps, SonarQube and most IDEs read.
Runs¶
One run per scanned directory and backend. The run is the backend's own output, untouched: the DevSkim run keeps DevSkim as tool.driver, its rule metadata and its results. ts-sast adds two things:
automationDetails.id-ts-sast/<module>properties["ts-sast"]- a header mirroring the header of a ts-scan dependency scan, so that findings can be correlated with the SBOM of the same module
{
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
"version": "2.1.0",
"runs": [
{
"tool": { "driver": { "name": "devskim", "version": "1.0.90+fb2d676ce4", "rules": [ "..." ] } },
"automationDetails": { "id": "ts-sast/OrderDesk" },
"properties": {
"ts-sast": {
"module": "OrderDesk",
"moduleId": "sast:OrderDesk",
"source": "/work/orderdesk/OrderDesk",
"backend": "devskim",
"tag": "v2.4.17",
"branch": "main",
"tool": { "name": "ts-sast", "version": "0.1.0", "generatedAt": "2026-09-06T12:00:00+00:00" }
}
},
"results": [
{
"ruleId": "TSVB6005",
"level": "error",
"message": { "text": "Hard-coded credential or secret" },
"locations": [
{ "physicalLocation": { "artifactLocation": { "uri": "frmLogin.frm" }, "region": { "startLine": 58 } } }
]
}
]
}
]
}
| Header field | Meaning |
|---|---|
module |
Name of the scanned directory |
moduleId |
sast:<module> |
source |
Absolute path that was scanned |
backend |
Backend that produced the run |
tag, branch |
Values of --tag / --branch, omitted when not given |
tool |
Producer and UTC timestamp |
File URIs in locations are relative to source because the backend is run with that directory as base path.
Levels and DevSkim severities¶
DevSkim maps its severities to SARIF levels: critical and important become error, moderate becomes warning, BestPractice and ManualReview become note. Filter on level in consumers, or on the DevSkim severity via --devskim:forward --severity,... at scan time.
Text (-f text)¶
-f text renders the same log for a terminal: per run the module, backend and finding count by level, a table by rule with its name, and the findings sorted by file and line. It is meant for a quick look and for CI logs, not for machine consumption.