참고: 이 문서는 2023년 1월에 CodeQL 설명서 웹 사이트에서 마이그레이션되었습니다.
SARIF 출력 정보
SARIF는 광범위한 정적 분석 도구의 출력을 나타내도록 설계되었으며 SARIF 사양에는 "선택 사항"으로 간주되는 많은 기능이 있습니다. 이 문서에서는 SARIF v2.1.0.csd1 사양에 해당하는 형식 형식 sarifv2.1.0
을 사용할 때 생성되는 출력에 대해 자세히 설명합니다. 분석 결과에 대한 파일 형식을 선택하는 방법에 대한 자세한 내용은 CodeQL 설명서의 데이터베이스 분석 명령을 참조하세요.
SARIF 사양 및 스키마
이 문서는 자세한 SARIF 사양과 함께 읽기 위한 것입니다. 사양 및 SARIF 스키마에 대한 자세한 내용은 SARIF 사양 설명서를 참조하세요.
메모 변경
버전 간 변경 내용
CodeQL 버전 | 형식 유형 | 변경 |
---|---|---|
2.0.0 | sarifv2.1.0 | 이 형식의 첫 번째 버전입니다. |
출력에 대한 향후 변경 내용
지정된 특정 형식 형식(예: sarifv2.1.0
)에 대해 생성된 출력은 향후 CodeQL 릴리스에서 변경될 수 있습니다. 다음을 보장하여 생성된 SARIF의 소비자와 이전 버전과의 호환성을 유지하기 위해 노력할 것입니다.
-
생성되는 "항상"으로 표시된 필드는 제거되지 않습니다.
-
"선택 사항" 필드가 생성되는 상황이 변경될 수 있습니다. CodeQL SARIF 출력의 소비자는 이러한 필드의 존재 또는 부재에 대해 강력해야 합니다.
새 출력 필드는 동일한 형식 형식으로 향후 릴리스에 추가될 수 있습니다. 이러한 필드는 이전 버전과의 호환성을 중단하는 것으로 간주되지 않으며 소비자는 새로 추가된 필드의 존재에 대해 강력해야 합니다.
새 형식 인수 형식은 새 버전의 SARIF를 지원하기 위해 CodeQL의 이후 버전에서 추가될 수 있습니다. 명시적으로 문서화되지 않는 한 이전 버전과의 호환성을 보장하지 않습니다.
생성된 SARIF 개체
이는 특정 상황과 함께 생성될 수 있는 각 SARIF 구성 요소에 대해 자세히 설명합니다. 생성되지 않은 속성은 생략합니다.
sarifLog
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
$schema | Always | SARIF 스키마에 대한 링크를 제공합니다. |
version | Always | 출력을 생성하는 데 사용되는 SARIF의 버전입니다. |
runs | Always | 단일 언어에 대한 단일 실행 개체를 포함하는 배열입니다. |
run
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
tool | Always | – |
originalUriBaseIds | Always | 분석 머신의 uriBaseIds 원래 위치를 나타내는 artifactLocations에 대한 사전입니다. 최소한 분석된 프로젝트에 대한 소스 코드의 분석 머신에 있는 루트 위치를 나타내는 가 포함 %SRCROOT% uriBaseId 됩니다. 각각 artifactLocation 에는 및 description 속성이 uri 포함됩니다. |
artifacts | Always | 결과에서 참조되는 모든 파일에 대해 하나 이상의 아티팩트 개체를 포함하는 배열입니다. |
results | Always | – |
newLineSequences | Always | – |
columnKind | Always | – |
properties | Always | 속성 사전에는 CodeQL CLI에 전달된 형식 지정자를 식별하는 가 포함 semmle.formatSpecifier 됩니다. |
tool
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
driver | Always | – |
toolComponent
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
name | Always | CodeQL CLI 도구의 출력에 대해 "CodeQL 명령줄 도구 체인"으로 설정합니다. 출력이 다른 도구를 사용하여 생성된 경우 다른 name 가 보고되며 형식은 여기에 설명된 대로 보고되지 않을 수 있습니다. |
organization | Always | 를 "GitHub"로 설정합니다. |
version | Always | CodeQL 릴리스 버전(예: "2.0.0")으로 설정합니다. |
rules | Always | 규칙을 나타내는 reportingDescriptor 개체의 배열입니다. 이 배열에는 최소한 이 분석 중에 실행되었지만 사용할 수 있었지만 실행되지 않은 규칙이 포함될 수 있는 모든 규칙이 포함됩니다. 쿼리를 사용하도록 설정하는 방법에 대한 자세한 내용은 을 참조하세요 defaultConfiguration . |
reportingDescriptor
object(규칙의 경우)
reportingDescriptor
개체는 SARIF 사양의 여러 위치에서 사용할 수 있습니다. reportingDescriptor
가 개체의 toolComponent
규칙 배열에 포함되면 다음과 같은 속성이 있습니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
id | Always | 일반적으로 형식 language/rule-name (예cpp/unsafe-format-string : )인 규칙을 정의하는 쿼리에 지정된 속성을 포함합니다@id . 조직에서 쿼리에서 @opaqueid 속성을 정의하는 경우 대신 사용됩니다. |
name | Always | 쿼리에 @id 지정된 속성을 포함합니다. 예제는 id 위의 속성을 참조하세요. |
shortDescription | Always | 규칙을 정의하는 쿼리에 지정된 속성을 포함합니다 @name . |
fullDescription | Always | 규칙을 정의하는 쿼리에 지정된 속성을 포함합니다 @description . |
defaultConfiguration | Always | reportingConfiguration 사용 속성이 true 또는 false로 설정된 개체와 규칙을 정의하는 쿼리에 지정된 속성에 따라 @severity 설정된 수준 속성입니다. 속성이 지정되지 않은 경우 @severity 생략됩니다. |
artifact
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
location | Always | artifactLocation 개체입니다. |
index | Always | artifact 개체의 인덱스입니다. |
contents | 필요에 따라 | 플래그를 --sarif-add-file-contents 사용하여 결과가 생성되고 SARIF 파일이 생성 contents 될 때 소스 코드를 사용할 수 있는 경우 속성이 속성 집합으로 개체로 artifactContent text 채워집니다. |
artifactLocation
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
uri | Always | – |
index | Always | – |
uriBaseId | 필요에 따라 | 파일이 분석 컴퓨터의 루트 원본 위치와 같은 알려진 추상 위치를 기준으로 하는 경우 설정됩니다. |
result
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
결과의 컴퍼지션은 CodeQL에 제공된 옵션에 따라 달라집니다. 기본적으로 결과는 고유한 메시지 형식 문자열 및 기본 위치별로 그룹화됩니다. 따라서 동일한 기본 메시지를 사용하여 동일한 위치에서 발생하는 두 개의 결과가 출력에 단일 결과로 표시됩니다. 이 동작은 플래그 --ungroup-results
를 사용하여 사용하지 않도록 설정할 수 있으며, 이 경우 결과가 그룹화되지 않습니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
ruleId | Always | 개체의 id 속성에 reportingDescriptor 대한 설명을 참조하세요(규칙용). |
ruleIndex | Always | – |
message | Always | 이 위치에서 발생하는 문제를 설명하는 메시지입니다. 이 메시지는 속성의 위치를 relatedLocations 참조하는 링크를 포함하는 SARIF "자리 표시자가 있는 메시지"일 수 있습니다. |
locations | Always | 단일 location 개체를 포함하는 배열입니다. |
partialFingerprints | Always | 이름이 지정된 지문 유형에서 지문까지 사전입니다. 여기에는 최소한 기본 위치의 컨텍스트에 따라 지문을 제공하는 primaryLocationLineHash 값이 포함됩니다. |
codeFlows | 필요에 따라 | 이 결과에 대한 규칙을 정의하는 쿼리가 인 경우 이 배열은 하나 이상의 codeFlow 개체로 채워질 수 있습니다 @kind path-problem . |
relatedLocations | 필요에 따라 | 이 결과에 대한 규칙을 정의하는 쿼리에 자리 표시자 옵션이 포함된 메시지가 있는 경우 이 배열이 채워집니다. 각 고유한 위치는 한 번 포함됩니다. |
suppressions | 필요에 따라 | 결과가 표시되지 않으면 속성이 로 설정된 IN_SOURCE 단일 suppression 개체가 @kind 포함됩니다. 이 결과가 표시되지 않지만 비표시된 결과가 하나 이상 있는 경우 이 값은 빈 배열로 설정되고, 그렇지 않으면 설정되지 않습니다. |
location
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
physicalLocation | Always | – |
id | 필요에 따라 | location 개체의 배열에 relatedLocations 나타나는 개체에는 result 속성이 id 포함될 수 있습니다. |
message | 필요에 따라 | location 개체는 다음과 같은 경우 속성을 포함할 message 수 있습니다.- 개체의 배열에 relatedLocations 속성이 result 포함될 message 수 있습니다.- 속성에 threadFlowLocation.location 표시됩니다. |
physicalLocation
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
artifactLocation | Always | – |
region | 필요에 따라 | 지정된 physicalLocation 가 소스 코드 파일과 같은 텍스트 파일에 있는 경우 속성이 region 있을 수 있습니다. |
contextRegion | 필요에 따라 | 이 위치에 연결된 snippet 가 있는 경우 이 있을 수 있습니다. |
region
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
CodeQL에 의해 생성된 두 가지 유형의 region
개체가 있습니다.
-
선/열 오프셋 영역
-
문자 오프셋 및 길이 영역
CodeQL에서 생성된 모든 지역은 두 형식 중 하나로 지정될 수 있으며 소비자는 두 형식을 강력하게 처리해야 합니다.
줄/열 오프셋 영역의 경우 다음 속성이 설정됩니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
startLine | Always | – |
startColumn | 필요에 따라 | 기본값 1과 같으면 포함되지 않습니다. |
endLine | 필요에 따라 | 가 같 startLine 으면 포함되지 않습니다. |
endColumn | Always | – |
snippet | 필요에 따라 | – |
문자 오프셋 및 길이 영역의 경우 다음 속성이 설정됩니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
charOffset | 필요에 따라 | , , startColumn 및 endLine``endColumn 가 채워지지 않은 경우 startLine 제공됩니다. |
charLength | 필요에 따라 | , , startColumn 및 endLine``endColumn 가 채워지지 않은 경우 startLine 제공됩니다. |
snippet | 필요에 따라 | – |
codeFlow
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
threadFlows | Always | – |
threadFlow
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
locations | Always | – |
threadFlowLocation
개체의 멤버의 부모에 대해 SQL Server 인스턴스 이름을 표시합니다.
JSON 속성 이름 | 언제 생성되나요? | 참고 |
---|---|---|
location | Always | – |