참고 항목
이 문서에서는 이 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# 같은 컴파일된 언어를 사용할 때 build-mode: autobuild 또는 build-mode: manual을(를) 사용하는 경우, CodeQL는 워크플로 실행 중에 빌드된 모든 코드를 분석합니다. 분석되는 코드의 양을 제한하려면 run 블록에 고유한 빌드 단계를 지정하여 분석하려는 코드만 빌드합니다. 사용자 고유의 빌드 단계 지정을 paths 및 paths-ignore 이벤트에서 pull_request 또는 push 필터를 사용하여 특정 코드가 변경된 경우에만 워크플로가 실행되도록 할 수 있습니다. 자세한 내용은 GitHub Actions에 대한 워크플로 구문을(를) 참조하세요.
JavaScript, Python 및 TypeScript와 같은 언어의 경우 CodeQL가 소스 코드를 컴파일하지 않고 분석하거나 컴파일된 언어를 사용하여 build-mode: none분석하는 데 사용할 코드의 양을 제한하는 추가 구성 옵션을 지정할 수 있습니다. 자세한 내용은 코드 검사를 위한 고급 설정을 사용자 지정하기을(를) 참조하세요.
CodeQL 분석을 여러 워크플로로 분할하는 경우, 리포지토리의 전체 코드를 분석하는 워크플로를 schedule 에서 하나 이상 실행하는 것이 좋습니다. CodeQL은(는) 구성 요소 간의 데이터 흐름을 분석하므로 일부 복잡한 보안 동작은 전체 빌드에서만 검색될 수 있습니다.
schedule 이벤트 중에만 실행
분석이 push 또는 pull_request 이벤트 중 느려질 수 있습니다. 그렇다면 schedule 이벤트에서만 트리거되도록 분석을 설정할 수 있습니다. CodeQL을 code scanning 분석에 사용하는 경우, 고급 설치 워크플로를 통해 구성 가능하지만, 기본 설정에서는 구성할 수 없습니다. 자세한 내용은 GitHub Actions 이해을(를) 참조하세요.
워크플로가 실행되는 쿼리 또는 규칙 확인
분석 시간을 줄이는 또 다른 방법은 끌어오기 요청에서 실행되는 워크플로에서 중요하다고 판단되는 쿼리나 규칙만 실행하는 것입니다. code scanning에 타사 도구를 사용하는 경우 해당 도구의 설명서를 참조하세요.
CodeQL에는 각 언어에서 사용할 수 있는 기본 쿼리 도구 모음이 두 가지 있습니다. CodeQL 데이터베이스 빌드를 최적화했는데도 처리 시간이 여전히 너무 오래 걸린다면, 실행하는 쿼리의 수를 줄여볼 수 있습니다. 기본 쿼리 도구 모음은 자동으로 실행되며 품질과 속도 간의 최적의 균형을 제공합니다.
고급 설정에서 CodeQL을 사용할 때 기본 쿼리 외에도 추가 쿼리나 쿼리 도구 모음을 실행할 수 있습니다. 워크플로가 queries 요소를 사용하여 실행할 추가 쿼리 도구 모음 또는 추가 쿼리를 정의하는지 확인합니다. 추가 쿼리 도구 모음 또는 쿼리를 사용하지 않도록 설정하여 실험할 수 있습니다. 자세한 내용은 코드 검사를 위한 고급 설정을 사용자 지정하기을(를) 참조하세요.