Skip to main content

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

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

컴파일된 언어 분석 정보

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

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

  2. 일부 컴파일러는 CodeQL을(를) 지원하지 않아 코드를 분석할 때 문제가 발생할 수 있습니다. 예를 들어 대부분의 공급업체별 C 컴파일러는 CodeQL에서 인식할 수 없습니다. C 코드를 분석하려면 인식된 컴파일러(예: GCC, Clang 또는 MSVC)를 사용하여 컴파일해야 합니다.

CodeQL 분석에서 예상보다 적은 코드 줄을 스캔하는 경우, 워크플로에 빌드 모드가 지정되어 있다면, 빌드 모드를 manual로 바꾸고 빌드 명령을 지정해 보세요. 또한, 워크플로에 autobuild 단계가 포함되어 있다면 해당 단계를 빌드 명령으로 대체하거나, 데이터베이스의 autobuild 원본 파일 사본을 검사해 보세요.

manual 빌드 프로세스로 변경

autobuild 프로세스를 프로덕션에서 사용하는 것과 동일한 빌드 명령으로 바꿉니다. 이렇게 하면 CodeQL 검사하려는 모든 원본 파일을 컴파일하는 방법을 정확하게 알 수 있습니다. 빌드 단계 지정에 대한 자세한 내용은 CodeQL code scanning for compiled languages을(를) 참조하세요.

데이터베이스에서 원본 파일 CodeQL 의 복사본 검사

데이터베이스에 포함된 CodeQL 소스 코드의 복사본을 검사하여 일부 원본 파일이 분석되지 않은 이유를 이해할 수 있습니다. 작업 워크플로에서 데이터베이스를 가져오려면 워크플로 파일의 initCodeQL 단계를 수정하고 설정합니다 debug: true.

- name: Initialize CodeQL
  uses: github/codeql-action/init@v4
  with:
    debug: true

이렇게 하면 로컬 컴퓨터에 다운로드할 수 있는 작업 아티팩트로 데이터베이스가 업로드됩니다. 자세한 내용은 워크플로 아티팩트와 데이터 저장 및 공유을(를) 참조하세요.

아티팩트에는 CodeQL가 스캔한 원본 파일의 보관된 복사본이 포함되어 있으며, 이 복사본은 _src.zip_이라고 합니다. 리포지토리의 소스 코드 파일과 _src.zip_에 있는 파일을 비교하면 누락된 파일 형식을 확인할 수 있습니다. 분석되지 않는 파일 형식을 알고 나면 분석을 위해 CodeQL 워크플로를 변경하는 방법을 더 쉽게 이해할 수 있습니다.