code scanning 분석의 빌드 시간을 단축하기 위해 시도할 수 있는 몇 가지 방법이 있습니다.
메모리 또는 코어 늘리기
GitHub 호스팅 실행기를 code scanning 분석에 사용하는 경우 대형 러너로 업그레이드하는 것을 고려할 수 있습니다. 해당 실행기는 표준 실행기보다 RAM, CPU, 디스크 공간이 더 많은 GitHub 호스팅 실행기입니다. 대형 러너 및 code scanning에 대한 자세한 내용은 "대규모 실행기 정보" 및 "기본 설정에 대해 대형 러너 구성하기"을 참조하세요.
자체 호스팅 실행기를 사용하여 code scanning 분석을 실행하는 경우 해당 실행기의 메모리 또는 코어 수를 늘릴 수 있습니다. 분석을 위해 고급 설정으로 CodeQL을 사용하는 경우, CodeQL에 권장되는 하드웨어 리소스를 검토하여 자체 호스팅 실행기가 이러한 요구 사항을 충족하는지 확인할 수 있습니다. 자세한 내용은 "CodeQL을 실행하기 위한 권장 하드웨어 리소스"을(를) 참조하세요.
행렬 빌드를 사용하여 분석 병렬 처리
여러 작업이 포함된 워크플로의 분석 속도를 높이기 위해 행렬을 사용하도록 워크플로를 수정할 수 있습니다. 자세한 내용은 "Running variations of jobs in a workflow"을(를) 참조하세요.
기본 CodeQL 분석 워크플로는 언어 행렬을 사용하므로 각 언어의 분석이 병렬로 실행됩니다. 그러나 고급 설정으로 CodeQL을 사용하고 "CodeQL 초기화" 단계에서 직접 분석할 언어를 지정한 경우 각 언어에 대한 분석이 순차적으로 수행됩니다. 이 구성에서는 행렬을 사용하도록 고급 설정 워크플로를 수정하여 분석 속도를 높일 수 있습니다. 예제는 "일부 언어는 CodeQL 고급 설정으로 분석되지 않았습니다."의 워크플로 추출을 참조하세요.
단일 워크플로에서 분석되는 코드의 양을 줄입니다.
분석 시간은 일반적으로 분석되는 코드의 양에 비례합니다. 고급 설정으로 CodeQL을 사용하는 경우 한 번에 분석되는 코드의 양을 줄여 분석 시간을 줄일 수 있습니다. 예를 들어 테스트 코드를 제외하거나 한 번에 코드의 하위 집합만 분석하는 여러 워크플로로 분석을 분리합니다.
Java, Kotlin, Go, C, C++, C#, CodeQL과(와) 같은 컴파일된 언어는 워크플로 실행 중에 빌드된 모든 코드를 분석합니다. 분석되는 코드의 양을 제한하려면 run
블록에 고유한 빌드 단계를 지정하여 분석하려는 코드만 빌드합니다. 사용자 고유의 빌드 단계 지정을 pull_request
및 push
이벤트에서 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
요소를 사용하여 실행할 추가 쿼리 도구 모음 또는 추가 쿼리를 정의하는지 확인합니다. 추가 쿼리 도구 모음 또는 쿼리를 사용하지 않도록 설정하여 실험할 수 있습니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하세요.