Skip to main content

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

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

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

code scanning 분석의 빌드 시간을 단축하기 위해 시도할 수 있는 몇 가지 방법이 있습니다.

메모리 또는 코어 늘리기

실행기에서 사용 가능한 메모리 또는 디스크 공간을 늘릴 수 있습니다. code scanning 분석을 위해 CodeQL을 사용하는 경우, CodeQL에 권장되는 하드웨어 리소스를 검토하여 자체 호스팅 실행기가 이러한 요구 사항을 충족하는지 확인할 수 있습니다. 자세한 정보는 "CodeQL을 실행하기 위한 권장 하드웨어 리소스"을(를) 참조하세요.

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

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

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

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

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

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

소스 코드를 컴파일하지 않고 CodeQL이 분석하는 JavaScript, Python 및 TypeScript와 같은 언어의 경우 분석할 코드 양을 제한하는 추가 구성 옵션을 지정할 수 있습니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정" 항목을 참조하세요.

CodeQL 분석을 여러 워크플로로 분할하는 경우, 리포지토리의 모든 코드를 분석하는 schedule에서 실행되는 워크플로를 하나 이상 보유하는 것이 좋습니다. CodeQL은(는) 구성 요소 간의 데이터 흐름을 분석하므로 일부 복잡한 보안 동작은 전체 빌드에서만 검색될 수 있습니다.

schedule 이벤트 중에만 실행

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

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

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

CodeQL에는 각 언어에 사용할 수 있는 두 개의 기본 쿼리 도구 모음이 있습니다. CodeQL 데이터베이스 빌드를 최적화했는데 처리 시간이 여전히 너무 오래 걸리는 경우 실행하는 쿼리 수를 줄일 수 있습니다. 기본 쿼리 도구 모음은 자동으로 실행되며 품질과 속도 사이에서 가능한 최상의 절충안을 제공합니다.

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