컴파일된 언어 분석 정보
C/C++, C#, Go 및 Java와 같은 컴파일된 언어의 경우 CodeQL은(는) 분석 중에 빌드된 파일만 검색합니다. 따라서 일부 소스 코드가 올바르게 컴파일되지 않은 경우 검색된 코드 줄 수가 예상보다 적습니다. 이 옵션은 다음과 같은 이유로 발생할 수 있습니다.
-
CodeQL
autobuild
기능은 추론을 사용하여 리포지토리에서 코드를 빌드합니다. 그러나 경우에 따라 이 방법은 리포지토리를 불완전하게 분석합니다. 예를 들어 단일 리포지토리에 여러build.sh
명령이 있는 경우autobuild
단계에서는 명령 중 하나만 실행하므로 일부 원본 파일이 컴파일되지 않을 수 있기 때문에 분석이 완료되지 않을 수 있습니다. -
일부 컴파일러는 CodeQL에서 작동하지 않으며 코드를 분석하는 동안 문제가 발생할 수 있습니다. 예를 들어 대부분의 공급업체별 C 컴파일러는 CodeQL에서 인식되지 않습니다. C 코드를 분석하려면 인식된 컴파일러(예: GCC, Clang 또는 MSVC)를 사용하여 컴파일해야 합니다.
CodeQL 분석에서 예상보다 적은 코드 줄을 스캔하는 경우 CodeQL 데이터베이스에서 autobuild step
을(를) 교체하거나 원본 파일의 복사본을 검사할 수 있습니다.
autobuild
단계 바꾸기
autobuild
단계를 프로덕션에서 사용하는 것과 동일한 빌드 명령으로 바꿉니다. 이렇게 하면 CodeQL이(가) 검사하려는 모든 원본 파일을 컴파일하는 방법을 정확히 알 수 있습니다.
자세한 내용은 "컴파일된 언어에 대한 CodeQL 코드 검사하기"을(를) 참조하십시오.
CodeQL 데이터베이스에서 원본 파일의 복사본 검사
CodeQL 데이터베이스에 포함된 소스 코드의 복사본을 검사하여 일부 원본 파일이 분석되지 않은 이유를 이해할 수 있습니다. 작업 워크플로에서 데이터베이스를 가져오려면 CodeQL 워크플로 파일의 init
단계를 수정하고 debug: true
를 설정합니다.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
debug: true
이렇게 하면 로컬 컴퓨터에 다운로드할 수 있는 작업 아티팩트로 데이터베이스가 업로드됩니다. 자세한 내용은 "워크플로 데이터를 아티팩트로 저장"을(를) 참조하십시오.
아티팩트에는 CodeQL에서 검사한 원본 파일의 보관된 복사본(src.zip)이 포함됩니다. 리포지토리의 소스 코드 파일과 _src.zip_에 있는 파일을 비교하면 누락된 파일 형식을 확인할 수 있습니다. 분석되지 않는 파일 형식을 알고 나면 CodeQL 분석을 위해 워크플로를 변경하는 방법을 더 쉽게 이해할 수 있습니다.