Skip to main content

코드 검사 분석 시간이 너무 오래 걸립니다

구성을 code scanning 미세 조정하여 분석 시간을 최소화할 수 있습니다.

참고

이 문서에서는 이 CodeQL버전의 초기 릴리스에 포함된 작업 버전 CodeQL CLI 및 관련 GitHub Enterprise Server 번들에서 사용할 수 있는 기능에 대해 설명합니다. 기업에서 최신 버전의 CodeQL 작업을 사용하는 경우 최신 기능에 대한 자세한 내용은 이 문서의 버전을 참조GitHub Enterprise Cloud하세요. 최신 버전 사용에 대한 자세한 내용은 어플라이언스에 대한 코드 검사 구성을(를) 참조하세요.

분석에서 빌드 시간을 줄이기 위해 시도할 수 있는 code scanning 몇 가지 방법이 있습니다.

메모리 또는 코어 늘리기

실행기에서 사용할 수 있는 메모리나 디스크 공간을 늘릴 수 있습니다. CodeQL 분석에 code scanning를 사용 중인 경우, 러너가 이러한 요구 사항을 충족하는지 확인할 수 있도록 CodeQL에 권장되는 하드웨어 리소스를 검토할 수 있습니다. 자세한 내용은 CodeQL을 실행하기 위한 권장 하드웨어 리소스을(를) 참조하세요.

행렬 빌드를 사용하여 분석 병렬 처리

여러 작업으로 구성된 워크플로의 분석 속도를 높이기 위해 행렬을 사용하도록 워크플로를 수정할 수 있습니다. 자세한 내용은 워크플로에서 작업 변형 실행을(를) 참조하세요.

기본값 CodeQL 분석 워크플로 은 각 언어의 분석이 병렬로 실행되도록 하는 언어 행렬을 사용합니다. 그러나 고급 설정에서 사용하고 CodeQL "CodeQL 초기화" 단계에서 직접 분석하려는 언어를 지정한 경우 각 언어의 분석이 순차적으로 수행됩니다. 이 구성에서는 고급 설정 워크플로를 수정하여 행렬을 사용하도록 하면 분석 속도를 높일 수 있습니다. 예제는 일부 언어는 CodeQL 고급 설정으로 분석되지 않았습니다.의 워크플로 추출을 참조하세요.

단일 워크플로에서 분석되는 코드의 양을 줄입니다.

분석 시간은 일반적으로 분석되는 코드의 양에 비례합니다. 고급 설정과 함께 사용하는 CodeQL 경우 한 번에 분석되는 코드의 양을 줄여 분석 시간을 줄일 수 있습니다. 예를 들어 테스트 코드를 제외하거나, 코드를 여러 개의 하위 집합으로 나누어 분석하는 방식으로 워크플로를 분리하여 실행할 수 있습니다.

Java, Kotlin, Go, C, C++, C# build-mode: autobuild 과 같은 컴파일된 언어를 사용 build-mode: manual 하거나 CodeQL사용하는 경우 워크플로 실행 중에 빌드된 모든 코드를 분석합니다. 분석되는 코드의 양을 제한하려면 run 블록에 고유한 빌드 단계를 지정하여 분석하려는 코드만 빌드합니다. 사용자 고유의 빌드 단계 지정을 pathspaths-ignore 이벤트에서 pull_request 또는 push 필터를 사용하여 특정 코드가 변경된 경우에만 워크플로가 실행되도록 할 수 있습니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.

소스 코드를 컴파일하지 않고 분석하는 JavaScript, Python 및 TypeScript CodeQL 와 같은 언어 또는 사용하는 컴파일된 언어build-mode: none의 경우 분석할 코드 양을 제한하는 추가 구성 옵션을 지정할 수 있습니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.

CodeQL 분석을 여러 워크플로로 나누는 경우에도, 리포지토리의 모든 코드를 분석하는 워크플로를 schedule에서 하나 이상 두는 것을 권장합니다. 구성 요소 간의 데이터 흐름을 분석하기 때문에 CodeQL 일부 복잡한 보안 동작은 전체 빌드에서만 검색될 수 있습니다.

schedule 이벤트 중에만 실행

분석이 push 또는 pull_request 이벤트 중 느려질 수 있습니다. 그렇다면 schedule 이벤트에서만 트리거되도록 분석을 설정할 수 있습니다. 분석에 사용하는 경우 고급 설정 워크플로를 사용하여 CodeQLcode scanning 구성할 수 있지만 기본 설정에서는 구성할 수 없습니다. 자세한 내용은 GitHub Actions에 대한 이해을(를) 참조하세요.

워크플로가 실행되는 쿼리 또는 규칙 확인

분석 시간을 줄이는 또 다른 방법은 끌어오기 요청에서 실행되는 워크플로에서 중요하다고 판단되는 쿼리나 규칙만 실행하는 것입니다. 타사 도구를 사용하는 경우 도구에 대한 code scanning설명서를 참조해야 합니다.

CodeQL에는 각 언어마다 사용할 수 있는 두 가지 주요 쿼리 모음이 있습니다. 데이터베이스 빌드를 CodeQL 최적화했고 프로세스가 너무 긴 경우 실행하는 쿼리 수를 줄일 수 있습니다. 기본 쿼리 도구 모음은 자동으로 실행되며 품질과 속도 간의 최적의 균형을 제공합니다.

고급 설정과 함께 사용하는 CodeQL 경우 기본 쿼리 외에도 추가 쿼리 또는 쿼리 그룹을 실행할 수 있습니다. 워크플로가 queries 요소를 사용하여 실행할 추가 쿼리 도구 모음 또는 추가 쿼리를 정의하는지 확인합니다. 추가 쿼리 도구 모음 또는 쿼리를 사용하지 않도록 설정하여 실험할 수 있습니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.