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