다음을 통해 공유


코드 검사 문제 해결

일반적으로 CodeQL 실행에 오류가 발생하는 경우 CodeQL CLI는 실행 중인 각 명령의 상태를 종료 코드로 보고합니다. 종료 코드는 후속 명령 또는 CodeQL CLI를 사용하는 다른 도구에 대한 정보를 제공합니다. 종료 코드 세부 정보에 대한 자세한 내용은 종료 코드를 참조 하세요.

오류: 'database finalize' CodeQL 명령(32)

이 오류는 추출 오류 또는 빌드 단계 누락으로 인해 CodeQL 데이터베이스 만들기를 완료하는 데 문제가 있음을 나타냅니다.

문제 해결 단계:

  1. 코드가 존재하고 컴파일되었는지 확인
    • 컴파일된 언어의 경우 빌드 프로세스가 코드를 컴파일하고 작업 AdvancedSecurity-Codeql-Analyze 간에 AdvancedSecurity-Codeql-Init 발생하는지 확인합니다. 일반적인 빌드 명령 및 필수 플래그(예: 클린 no-cache/no-daemon)는 빌드 명령 지정에서 찾을 수 있습니다.
    • 해석된 언어의 경우 프로젝트에 지정된 언어에 대한 소스 코드가 있는지 확인합니다.
  2. 추출 오류 확인
    • 추출 오류가 CodeQL 데이터베이스의 상태에 영향을 주는지 확인합니다.
    • 로그 파일에서 추출 오류 및 경고를 검토하여 전체 데이터베이스 상태를 평가합니다.
  3. 압도적인 오류 조사
    • 대부분의 파일에서 추출기 오류가 발생하는 경우 추가로 조사하여 부적절한 추출의 근본 원인을 파악합니다.

오류: 자동 작성 스크립트(1)

이 오류는 자동 빌드 실패에 대해 설명하며, 코드 검색 설정 또는 구성에 문제가 있음을 시사합니다.

문제 해결 단계:

  • 빌드 단계 구성
    • AutoBuild 단계를 제거하고 대신 파이프라인에서 컴파일된 언어에 대한 특정 빌드 단계를 구성합니다.
    • Azure DevOps에 대한 GitHub 고급 보안 구성에 제공된 설정 지침을 참조하세요.

오류: 에이전트 도구 캐시에서 CodeQL 디렉터리를 찾을 수 없음

이 오류는 자체 호스팅 에이전트에 대한 CodeQL 설치와 관련된 문제를 나타냅니다.

문제 해결 단계:

오류: 언어 파이프라인 변수가 설정되지 않음

이 오류는 검색할 언어를 지정하는 파이프라인 변수를 설정하지 않고 CodeQL을 실행하려고 할 때 발생합니다.

문제 해결 단계:

  • 언어 파이프라인 변수 설정
    • 언어 파이프라인 변수가 올바르게 구성되었는지 확인합니다. Azure DevOps에 대한 GitHub 고급 보안 구성에 제공된 설정 지침을 참조하세요.
    • 지원되는 언어에는 csharp,, gocpp, javajavascript, pythonruby및 .swift

결과를 반환하지 않는 CodeQL

이 섹션에서는 CodeQL 분석에서 결과를 생성하지 않는 상황에 대한 지침을 제공합니다.

문제 해결 단계:

  1. 검색된 취약성 확인
    • 코드에 취약성이 없을 수 있는 가능성을 고려합니다. 취약성이 예상되었지만 검색되지 않은 경우 추가 확인을 진행합니다.
  2. 쿼리 도구 모음 구성 검토
  3. 결과 보기에 대한 권한 조정
    • 적어도 기여자 수준에서 적절한 사용 권한이 분석 결과에 액세스하도록 부여되었는지 확인합니다. 자세한 내용은 고급 보안 권한을 참조 하세요.

CodeQL 시간 초과

AdvancedSecurity-Codeql-Analyze@1 작업이 표시 This job was abandoned ... we lost contact with the agent 되고 호스트된 Microsoft 에이전트를 사용하는 경우 이 작업은 유료 호스팅 에이전트에 대한 기본 제공 6시간 제한에 도달합니다. 대신 자체 호스팅 에이전트에서 분석을 실행하려고 할 수 있습니다.

코드 검사 작업 권한

코드 검사 빌드 작업은 파이프라인 ID를 사용하여 고급 보안 REST API를 호출합니다. 기본적으로 동일한 프로젝트의 파이프라인은 CodeQL 분석을 실행하여 생성된 SARIF 파일을 업로드할 수 있습니다. 이러한 권한이 빌드 서비스 계정에서 제거되거나 사용자 지정 설정(예: 리포지토리가 아닌 다른 프로젝트에서 호스트되는 파이프라인)이 있는 경우 이러한 권한을 수동으로 부여해야 합니다.

문제 해결 단계:

  • 파이프라인에서 사용되는 빌드 서비스 계정에 대한 권한 Advanced Security: View alerts 부여 및 Advanced Security: Manage and dismiss alerts 권한( 프로젝트 범위 파이프라인의 경우 [Project Name] Build Service ([Organization Name])및 컬렉션 범위 파이프라인의 경우 Project Collection Build Service ([Organization Name])).

자체 호스팅 에이전트에 CodeQL 번들 수동 설치

GitHub에서 사용할 수 있는 아키텍처에 대한 설치 스크립트를 활용하여 CodeQL 번들을 에이전트 도구 캐시에 설치합니다. 이러한 스크립트를 사용하려면 환경 변수를 에이전트의 에이전트 도구 디렉터리 위치(예: )로 설정해야 $AGENT_TOOLSDIRECTORY 합니다. C:/agent/_work/_tool 또는 다음 단계를 수동으로 구현할 수 있습니다.

  1. GitHub에서 최신 CodeQL 릴리스 번들을 선택합니다.
  2. 일반적으로 다음 아래에 _work/_tool./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/있는 에이전트 도구 디렉터리 내의 다음 디렉터리에 번들을 다운로드하고 압축을 풉니까. 현재 릴리스를 v2.16.0사용하면 폴더 이름에 제목이 지정 ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/됩니다. 에이전트 도구 디렉터리에 대해 자세히 알아봅니다.
  3. 폴더 내에 ./CodeQL/0.0.0-[codeql-release-bundle-tag] 있는 빈 파일을 만듭니다x64.complete. 이전 예제를 사용하면 파일의 끝 파일 경로가 x64.complete 여야 ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete합니다.