코드 검사 문제 해결
일반적으로 CodeQL 실행에 오류가 발생하는 경우 CodeQL CLI는 실행 중인 각 명령의 상태를 종료 코드로 보고합니다. 종료 코드는 후속 명령 또는 CodeQL CLI를 사용하는 다른 도구에 대한 정보를 제공합니다. 종료 코드 세부 정보에 대한 자세한 내용은 종료 코드를 참조 하세요.
오류: 'database finalize' CodeQL 명령(32)
이 오류는 추출 오류 또는 빌드 단계 누락으로 인해 CodeQL 데이터베이스 만들기를 완료하는 데 문제가 있음을 나타냅니다.
문제 해결 단계:
- 코드가 존재하고 컴파일되었는지 확인
- 컴파일된 언어의 경우 빌드 프로세스가 코드를 컴파일하고 작업
AdvancedSecurity-Codeql-Analyze
간에AdvancedSecurity-Codeql-Init
발생하는지 확인합니다. 일반적인 빌드 명령 및 필수 플래그(예: 클린 no-cache/no-daemon)는 빌드 명령 지정에서 찾을 수 있습니다. - 해석된 언어의 경우 프로젝트에 지정된 언어에 대한 소스 코드가 있는지 확인합니다.
- 컴파일된 언어의 경우 빌드 프로세스가 코드를 컴파일하고 작업
- 추출 오류 확인
- 추출 오류가 CodeQL 데이터베이스의 상태에 영향을 주는지 확인합니다.
- 로그 파일에서 추출 오류 및 경고를 검토하여 전체 데이터베이스 상태를 평가합니다.
- 압도적인 오류 조사
- 대부분의 파일에서 추출기 오류가 발생하는 경우 추가로 조사하여 부적절한 추출의 근본 원인을 파악합니다.
오류: 자동 작성 스크립트(1)
이 오류는 자동 빌드 실패에 대해 설명하며, 코드 검색 설정 또는 구성에 문제가 있음을 시사합니다.
문제 해결 단계:
- 빌드 단계 구성
- AutoBuild 단계를 제거하고 대신 파이프라인에서 컴파일된 언어에 대한 특정 빌드 단계를 구성합니다.
- Azure DevOps에 대한 GitHub 고급 보안 구성에 제공된 설정 지침을 참조하세요.
오류: 에이전트 도구 캐시에서 CodeQL 디렉터리를 찾을 수 없음
이 오류는 자체 호스팅 에이전트에 대한 CodeQL 설치와 관련된 문제를 나타냅니다.
문제 해결 단계:
- Azure DevOps에 대한 GitHub 고급 보안 구성에 제공된 설정 지침 또는 구성 스크립트를 참조하세요.
오류: 언어 파이프라인 변수가 설정되지 않음
이 오류는 검색할 언어를 지정하는 파이프라인 변수를 설정하지 않고 CodeQL을 실행하려고 할 때 발생합니다.
문제 해결 단계:
- 언어 파이프라인 변수 설정
- 언어 파이프라인 변수가 올바르게 구성되었는지 확인합니다. Azure DevOps에 대한 GitHub 고급 보안 구성에 제공된 설정 지침을 참조하세요.
- 지원되는 언어에는
csharp
,,go
cpp
,java
javascript
,python
ruby
및 .swift
결과를 반환하지 않는 CodeQL
이 섹션에서는 CodeQL 분석에서 결과를 생성하지 않는 상황에 대한 지침을 제공합니다.
문제 해결 단계:
- 검색된 취약성 확인
- 코드에 취약성이 없을 수 있는 가능성을 고려합니다. 취약성이 예상되었지만 검색되지 않은 경우 추가 확인을 진행합니다.
- 쿼리 도구 모음 구성 검토
- 사용 중인 쿼리 그룹을 확인하고 필요한 경우 보다 포괄적인 제품군으로 전환하는 것이 좋습니다.
- 또는 맞춤형 분석을 위해 사용자 지정 쿼리 도구 모음을 만들 수 있습니다.
- 결과 보기에 대한 권한 조정
- 적어도 기여자 수준에서 적절한 사용 권한이 분석 결과에 액세스하도록 부여되었는지 확인합니다. 자세한 내용은 고급 보안 권한을 참조 하세요.
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
또는 다음 단계를 수동으로 구현할 수 있습니다.
- GitHub에서 최신 CodeQL 릴리스 번들을 선택합니다.
- 일반적으로 다음 아래에
_work/_tool
./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/
있는 에이전트 도구 디렉터리 내의 다음 디렉터리에 번들을 다운로드하고 압축을 풉니까. 현재 릴리스를v2.16.0
사용하면 폴더 이름에 제목이 지정./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/
됩니다. 에이전트 도구 디렉터리에 대해 자세히 알아봅니다. - 폴더 내에
./CodeQL/0.0.0-[codeql-release-bundle-tag]
있는 빈 파일을 만듭니다x64.complete
. 이전 예제를 사용하면 파일의 끝 파일 경로가x64.complete
여야./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete
합니다.