Documentation / SARIF
Référence du format SARIF
perf-sentinel émet du SARIF v2.1.0 via --format sarif sur analyze et diff. Cette référence liste les champs peuplés par result. Pour le workflow d'acknowledgments cross-format, voir Acquittements.
Champs par result
| Champ | Source | Notes |
|---|---|---|
ruleId | Finding.finding_type | Identifiant de règle en snake-case (n_plus_one_sql, redundant_http, ...). |
level | Finding.severity | error pour critical, warning pour warning, note pour info. |
message.text | composé à partir des champs de Finding | Résumé lisible incluant occurrences et fenêtre. |
logicalLocations[0] | Finding.service | kind: "module". |
logicalLocations[1] | Finding.source_endpoint | kind: "function". |
properties.confidence | Finding.confidence | Une valeur parmi ci_batch, daemon_staging, daemon_production. Lue par perf-lint pour ajuster la sévérité IDE. |
properties.signature | Finding.signature | Signature canonique, également exposée dans fingerprints. Omise quand vide (baselines pré-0.5.17). |
properties.acknowledged | --show-acknowledged | true pour les entrées acknowledged, omis pour les findings normaux. |
properties.acknowledgmentReason / acknowledgmentBy / acknowledgmentAt | metadata d'ack | Caractères BiDi et invisibles strippés avant émission (défense Trojan Source). |
rank | Finding.confidence.sarif_rank() | Entier de 0 à 100. ci_batch=30, daemon_staging=60, daemon_production=90. |
locations[] | Finding.code_location | Localisation source physique, peuplée quand l'agent d'instrumentation émet les attributs de span code.filepath et code.lineno. Les filepaths hostiles (absolus, traversal, BiDi, percent-encodés) sont rejetés à l'émission. |
fixes[] | Finding.suggested_fix | Objet SARIF fix description-only, recommandation en texte libre sous description.text. |
fingerprints["perfsentinel/v1"] | Finding.signature | Fingerprint SARIF v2.1.0 section 3.27.17. Utilisé par GitHub Code Scanning et GitLab SAST pour la déduplication cross-run. Omis quand la signature est vide. |
Tool
runs[].tool.driver est toujours { name: "perf-sentinel", version: <CARGO_PKG_VERSION>, informationUri: "https://github.com/robintra/perf-sentinel" }. Le tableau rules pré-déclare les 10 types de findings, peu importe combien de results sont émis, pour que les consumers SARIF puissent afficher les descriptions de règles même sur un run propre.
Schema
$schema pointe vers https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json.