Skip to main content

CodeQL이 예상보다 적은 줄을 스캔했습니다.

CodeQL이(가) 예상보다 적은 코드를 분석한 경우 사용자 지정 빌드 명령을 사용해야 할 수 있습니다.

컴파일된 언어 분석 정보

컴파일된 언어가 autobuild 또는 manual 빌드 모드를 사용하여 분석되는 경우 CodeQL와 같은 컴파일된 언어의 경우 분석 중에 빌드된 파일만 검색합니다. 따라서 일부 소스 코드가 올바르게 컴파일되지 않은 경우 검색된 코드 줄 수가 예상보다 적습니다. 이 옵션은 다음과 같은 이유로 발생할 수 있습니다.

  1. CodeQL autobuild 기능은 추론을 사용하여 리포지토리에서 코드를 빌드합니다. 그러나 경우에 따라 이 방법은 리포지토리를 불완전하게 분석합니다. 예를 들어 단일 리포지토리에 여러 build.sh 명령이 있는 경우 autobuild 단계에서는 명령 중 하나만 실행하므로 일부 원본 파일이 컴파일되지 않을 수 있기 때문에 분석이 완료되지 않을 수 있습니다.

  2. 일부 컴파일러는 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 분석을 위해 워크플로를 변경하는 방법을 더 쉽게 이해할 수 있습니다.