Ă propos de la sortie SARIF
Le format SARIF est conçu pour reprĂ©senter la sortie dâun large Ă©ventail dâoutils dâanalyse statique et il existe de nombreuses fonctionnalitĂ©s dans la spĂ©cification SARIF considĂ©rĂ©es comme « facultatives ». Ce document dĂ©crit la sortie produite lors de lâutilisation du type de format sarifv2.1.0
, qui correspond Ă la spĂ©cification SARIF v2.1.0.csd1. Pour plus dâinformations sur la sĂ©lection dâun format de fichier pour vos rĂ©sultats dâanalyse, consultez database analyze.
Spécification et schéma SARIF
Cet article est destinĂ© Ă ĂȘtre lu de concert avec la spĂ©cification SARIF dĂ©taillĂ©e. Pour plus dâinformations sur la spĂ©cification et le schĂ©ma SARIF, consultez la documentation sur la spĂ©cification SARIF.
Notes sur les modifications
Modifications entre les versions
Version CodeQL | Type de format | Modifications |
---|---|---|
2.0.0 | sarifv2.1.0 | PremiĂšre version de ce format. |
Modifications Ă venir de la sortie
La sortie produite pour un type de format spécifique donné (par exemple, sarifv2.1.0
) est susceptible dâĂȘtre modifiĂ©e dans les versions ultĂ©rieures de CodeQL. Nous nous efforcerons de maintenir la compatibilitĂ© descendante avec les consommateurs de la sortie SARIF gĂ©nĂ©rĂ©e en veillant Ă ceci :
-
Les champs marqués comme toujours générés ne seront jamais supprimés.
-
Pour les champs marquĂ©s comme nâĂ©tant pas toujours gĂ©nĂ©rĂ©s, les circonstances dans lesquelles les champs sont gĂ©nĂ©rĂ©s peuvent changer. Les consommateurs de la sortie SARIF CodeQL devraient rĂ©sister Ă la prĂ©sence ou Ă lâabsence de ces champs.
De nouveaux champs de sortie pourront ĂȘtre ajoutĂ©s dans les versions ultĂ©rieures sous le mĂȘme type de format : ils ne seront pas considĂ©rĂ©s comme antagonistes Ă la compatibilitĂ© descendante, et les consommateurs devraient rĂ©sister Ă la prĂ©sence de champs nouvellement ajoutĂ©s.
De nouveaux types dâarguments de format pourront ĂȘtre ajoutĂ©s dans les versions Ă venir de CodeQL, par exemple pour prendre en charge les nouvelles versions de SARIF. Ces types nâoffrent aucune garantie de compatibilitĂ© descendante, sauf indication explicite contraire.
Objets SARIF générés
Voici des informations dĂ©taillĂ©es sur chaque composant SARIF susceptible dâĂȘtre gĂ©nĂ©rĂ©, ainsi que toutes les Ă©ventuelles circonstances spĂ©cifiques. Nous omettons toutes les propriĂ©tĂ©s qui ne sont jamais gĂ©nĂ©rĂ©es.
l'objet sarifLog
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
$schema | Fournit un lien vers le schéma SARIF. | |
version | Version du format SARIF utilisé pour générer la sortie. | |
runs | Tableau contenant un objet dâexĂ©cution unique, pour un seul langage. |
l'objet run
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
tool | None | |
artifacts | Tableau contenant au moins un objet dâartefact pour chaque fichier rĂ©fĂ©rencĂ© dans un rĂ©sultat. | |
results | None | |
newLineSequences | None | |
columnKind | None | |
properties | Le dictionnaire des propriĂ©tĂ©s contient le semmle.formatSpecifier , qui identifie le spĂ©cificateur de format passĂ© Ă lâCodeQL CLI. |
l'objet tool
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
driver | None |
l'objet toolComponent
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
name | DĂ©finissez ce nom sur « ChaĂźne dâoutils en ligne de commande CodeQL » pour une sortie provenant des outils CodeQL CLI. Notez que si la sortie a Ă©tĂ© gĂ©nĂ©rĂ©e Ă lâaide dâun autre outil, une autre propriĂ©tĂ© name est signalĂ©e et le format risque de ne pas ĂȘtre celui dĂ©crit ici. | |
organization | Définissez cette propriété sur « GitHub ». | |
version | Définissez cette propriété sur la version de CodeQL, par exemple « 2.0.0 ». | |
rules | Tableau dâobjets reportingDescriptor qui reprĂ©sentent des rĂšgles. Ce tableau contient au minimum toutes les rĂšgles exĂ©cutĂ©es pendant cette analyse, mais il peut contenir des rĂšgles qui Ă©taient disponibles et qui nâont pas Ă©tĂ© exĂ©cutĂ©es. Pour plus dâinformations sur lâactivation des requĂȘtes, consultez defaultConfiguration . |
Objet reportingDescriptor
(pour une rĂšgle)
Des objets reportingDescriptor
peuvent ĂȘtre utilisĂ©s Ă plusieurs endroits dans la spĂ©cification SARIF. Quand un reportingDescriptor
est inclus dans le tableau de rĂšgles dâun objet toolComponent
, ses propriétés sont les suivantes.
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
id | Contient la propriĂ©tĂ© @id spĂ©cifiĂ©e dans la requĂȘte qui dĂ©finit la rĂšgle, dont le format est gĂ©nĂ©ralement language/rule-name (par exemple cpp/unsafe-format-string ). Si votre organisation dĂ©finit la propriĂ©tĂ© @opaqueid dans la requĂȘte, celle-ci est utilisĂ©e Ă la place. | |
name | Contient la propriĂ©tĂ© @id spĂ©cifiĂ©e dans la requĂȘte. Pour obtenir un exemple, consultez la propriĂ©tĂ© id ci-dessus. | |
shortDescription | Contient la propriĂ©tĂ© @name spĂ©cifiĂ©e dans la requĂȘte qui dĂ©finit la rĂšgle. | |
fullDescription | Contient la propriĂ©tĂ© @description spĂ©cifiĂ©e dans la requĂȘte qui dĂ©finit la rĂšgle. | |
defaultConfiguration | Objet reportingConfiguration , dont la propriĂ©tĂ© activĂ©e est dĂ©finie sur true ou false et dont une propriĂ©tĂ© de niveau est dĂ©finie en fonction de la propriĂ©tĂ© @severity spĂ©cifiĂ©e dans la requĂȘte qui dĂ©finit la rĂšgle. Omis si la propriĂ©tĂ© @severity nâa pas Ă©tĂ© spĂ©cifiĂ©e. |
l'objet artifact
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
location | Objet artifactLocation . | |
index | Index de l'objet artifact . | |
contents | Si les rĂ©sultats sont gĂ©nĂ©rĂ©s Ă lâaide de lâindicateur --sarif-add-file-contents et que le code source est disponible au moment de la gĂ©nĂ©ration du fichier SARIF, alors la propriĂ©tĂ© contents est renseignĂ©e avec un objet artifactContent et avec la propriĂ©tĂ© text dĂ©finie. |
l'objet artifactLocation
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
uri | None | |
index | None | |
uriBaseId | Si le fichier est liĂ© Ă un emplacement abstrait connu, comme lâemplacement source racine sur la machine dâanalyse, alors cette propriĂ©tĂ© est dĂ©finie. |
l'objet result
La composition des rĂ©sultats dĂ©pend des options fournies Ă CodeQL. Par dĂ©faut, les rĂ©sultats sont regroupĂ©s par chaĂźne de format de message unique et par emplacement principal. Ainsi, deux rĂ©sultats qui se produisent au mĂȘme emplacement avec le mĂȘme message sous-jacent apparaissent sous la forme dâun rĂ©sultat unique dans la sortie. Ce comportement peut ĂȘtre dĂ©sactivĂ© Ă lâaide de lâindicateur --ungroup-results
, auquel cas aucun rĂ©sultat nâest regroupĂ©.
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
ruleId | Consultez la description de la propriĂ©tĂ© id dans lâobjet reportingDescriptor (pour la rĂšgle). | |
ruleIndex | None | |
message | Message dĂ©crivant le ou les problĂšmes qui se produisent Ă cet emplacement. Ce message peut ĂȘtre un « message avec espace rĂ©servĂ© » au format SARIF, contenant des liens qui font rĂ©fĂ©rence Ă des emplacements dans la propriĂ©tĂ© relatedLocations . | |
locations | Tableau contenant un objet location unique. | |
partialFingerprints | Il existe un dictionnaire des types dâempreintes digitales nommĂ©es. Celui-ci contient, au minimum, une valeur pour primaryLocationLineHash , qui fournit une empreinte digitale selon le contexte de lâemplacement principal. | |
codeFlows | Ce tableau peut ĂȘtre renseignĂ© avec un ou plusieurs objets codeFlow si la requĂȘte qui dĂ©finit la rĂšgle pour ce rĂ©sultat est de @kind path-problem . | |
relatedLocations | Ce tableau est renseignĂ© si la requĂȘte qui dĂ©finit la rĂšgle pour ce rĂ©sultat a un message avec des options dâespace rĂ©servĂ©. Chaque emplacement unique est inclus une seule fois. | |
suppressions | Si le rĂ©sultat est supprimĂ©, alors il contient un seul objet suppression , avec la propriĂ©tĂ© @kind dĂ©finie sur IN_SOURCE . Si ce rĂ©sultat nâest pas supprimĂ©, mais quâau moins un rĂ©sultat fait lâobjet dâune suppression, alors il est dĂ©fini sur un tableau vide ; sinon, il nâest pas dĂ©fini. |
l'objet location
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
physicalLocation | None | |
id | Les objets location qui apparaissent dans le tableau relatedLocations dâun objet result peuvent contenir la propriĂ©tĂ© id . | |
message | Les objets location peuvent contenir la propriĂ©tĂ© message si :â Ils apparaissent dans le tableau relatedLocations dâun objet result pouvant contenir la propriĂ©tĂ© message .â Ils apparaissent dans la propriĂ©tĂ© threadFlowLocation.location . |
l'objet physicalLocation
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
artifactLocation | None | |
region | Si le physicalLocation donnĂ© existe dans un fichier texte, comme un fichier de code source, alors la propriĂ©tĂ© region est peut-ĂȘtre prĂ©sente. | |
contextRegion | Ăventuellement prĂ©sente si cet emplacement a un snippet associĂ©. |
l'objet region
Il existe deux types dâobjets region
produits par CodeQL :
-
Régions de décalage de ligne/colonne
-
Régions de longueur et de décalage de caractÚres
Toute rĂ©gion produite par CodeQL peut ĂȘtre spĂ©cifiĂ©e dans lâun ou lâautre format, et les consommateurs doivent gĂ©rer lâun ou lâautre type de maniĂšre robuste.
Pour les régions de décalage de ligne/colonne, les propriétés suivantes sont définies :
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
startLine | None | |
startColumn | Non incluse si elle est égale à la valeur par défaut de 1. | |
endLine | Non incluse si identique Ă startLine . | |
endColumn | None | |
snippet | None |
Pour les régions de longueur et de décalage de caractÚres, les propriétés suivantes sont définies :
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
charOffset | Fournie si les propriétés startLine , startColumn , endLine et endColumn ne sont pas renseignées. | |
charLength | Fournie si les propriétés startLine , startColumn , endLine et endColumn ne sont pas renseignées. | |
snippet | None |
l'objet codeFlow
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
threadFlows | None |
l'objet threadFlow
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
locations | None |
l'objet threadFlowLocation
Nom de la propriété JSON | Toujours généré ? | Remarques |
---|---|---|
location | None |