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