Skip to main content

SARIF 결과 파일이 너무 큼

10MB보다 큰 SARIF 결과 파일을 code scanning에 업로드할 수 없습니다. 가장 큰 영향 결과를 포함하는 더 작은 파일을 생성하는 방법을 탐색합니다.

이 오류 정보

SARIF file is too large
SARIF results file is too large
SARIF upload is rejected (bigger than allowed size for zip archive)
SARIF ZIP upload is too large
A fatal error occurred: SARIF file is too large
413: Payload Too Large

프로세스에서 최대 크기 10MB보다 큰 SARIF 파일을 업로드하려고 하면 이러한 오류 중 하나가 보고됩니다. Code scanning은(는) 이 크기 이상의 파일을 허용하지 않습니다. code scanning에 업로드하기 위해 생성된 결과 수를 줄이는 방법에는 여러 가지가 있습니다.

CodeQL 또는 타사 분석 도구에서 생성된 SARIF 파일에 대해 이 오류가 표시될 수 있습니다. 업로드 제한에 대한 자세한 내용은 code scanning, "코드 검사에 대한 SARIF 지원"을(를) 참조하십시오.

오류의 원인 확인

매우 큰 SARIF 결과 파일의 잠재적인 원인은 여러 가지가 있습니다.

SARIF 파일 압축

code scanning에서 거부된 결과 파일을 확인하여 다음을 확인합니다.

  • SARIF 파일이 gzip을 사용하여 압축되었습니다.
  • 압축된 파일이 10MB보다 작습니다.

gzip을 사용하여 파일이 압축되지 않은 경우 업로드 프로세스를 다시 실행하기 전에 파일을 압축해 보십시오. 압축된 파일이 여전히 너무 큰 경우 더 작은 결과 집합을 생성하도록 분석을 구성해야 합니다.

분석된 코드의 양

결과가 너무 많은 경우 가장 중요한 코드만 분석하도록 분석을 구성해야 합니다.

  • 해석된 언어의 경우 리포지토리에 경고 수정 우선 순위가 낮은 테스트, 데모 또는 공급업체 종속성이 많이 포함되어 있는지 확인하십시오. 분석에서 이 코드를 제외해 보십시오. 자세한 내용은 "해석된 언어에 대한 분석에서 코드 제외"를 참조하십시오.
  • 컴파일된 언어의 경우 빌드 프로세스가 둘 이상의 코드 변형(예: 여러 운영 환경 또는 아키텍처의 대상)을 생성하는지 확인합니다. 처음에 코드의 변형을 하나만 분석해 보십시오. 자세한 내용은 빌드 명령 최적화를 참조하십시오.

실행된 쿼리 수

여전히 결과가 너무 많은 경우 코드를 분석하는 데 사용하는 쿼리 수를 확인하십시오. 더 적은 수의 쿼리를 실행해 보십시오. 초기 경고가 수정되면 추가 쿼리를 다시 도입할 수 있습니다. 예를 들어 CodeQL 분석의 경우 기본 쿼리 모음만 실행할 수 있습니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하십시오.

쿼리에서 찾은 결과 수

코드베이스에 특정 코딩 스타일이 있거나 분석에서 특정 라이브러리를 이해하지 못하기 때문에 단일 쿼리가 많은 결과를 보고하는 경우가 있습니다. SARIF 뷰어에서 결과 파일을 검토하여 결과 분포를 확인할 수 있습니다. 예들 들어 https://microsoft.github.io/sarif-web-component/입니다.

  • 결과가 단일 쿼리로 식별된 경고에 의해 지배되는지 확인합니다. 분석에서 해당 쿼리를 제외해 봅니다. 다른 경고가 해결되면 다시 도입할 수 있습니다. CodeQL 쿼리 구성에 대한 자세한 내용은 "분석에서 쿼리 제외"를 참조하십시오.
  • 많은 심층 경로가 있는 데이터 흐름 쿼리가 있는지 확인합니다. 출력에서 데이터 흐름 경로를 생략해 보십시오. CodeQL 분석 구성에 대한 자세한 내용은 "출력에서 데이터 흐름 경로 생략"을 참조하십시오.

문제 해결

다음 옵션은 복잡한 순서대로 나열되어 있습니다. 결과 수를 관리 가능한 크기로 줄이기 위해 구성을 수정해야 합니다. 이러한 경고를 모두 수정한 후에는 더 많은 코드를 포함하거나 더 많은 쿼리를 실행하도록 분석을 확장하도록 구성을 업데이트할 수 있습니다.

해석된 언어에 대한 분석에서 코드 제외

분석에서 비프로덕션 코드를 제외하는 것은 결과 파일의 크기를 줄이는 간단한 방법입니다.

  • CodeQL에 대한 고급 설정 code scanning: 워크플로 파일에서 pathspaths-ignore을(를) 사용하여 분석할 코드를 지정합니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하십시오.
  • CodeQL CLI database create: 동일한 구문을 사용하여 코드 검색을 위한 YAML 구성 파일을 만들어 분석할 코드를 정의합니다. database create 옵션을 사용하여 이 구성 파일을 호출하도록 --codescanning-config 명령을 업데이트합니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하십시오.

빌드 명령 최적화

하나의 변형만 컴파일하는 빌드 명령을 사용하면 결과 파일의 크기를 줄일 수 있습니다.

  • code scanning에 대한 CodeQL 고급 설정: 선택한 빌드 명령을 지정하도록 워크플로 파일을 업데이트합니다. 자세한 내용은 "컴파일된 언어에 대한 CodeQL 코드 검사하기"을(를) 참조하십시오.
  • CodeQL CLI database create: --command 옵션을 사용하여 database create 명령을 호출하거나 코드를 검색하고 --codescanning-config 옵션을 사용하여 파일을 호출하기 위해 YAML 구성 파일에서 빌드 명령을 정의하여 선택한 빌드 명령을 지정합니다. 자세한 내용은 "CodeQL 분석을 위한 코드 준비"을(를) 참조하십시오.

실행할 쿼리 도구 모음 정의

기본 보안 쿼리만 이미 실행 중일 수 있지만 검사 가치가 있습니다.

  • code scanning에 대한 CodeQL 고급 설정: 워크플로 파일에서 queries 키워드를 확인하십시오. 없는 경우 기본 쿼리 도구 모음만 실행됩니다. 있는 경우 실행할 쿼리를 정의합니다. 워크플로 파일의 이 줄을 주석으로 처리해 보십시오. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하십시오.
  • CodeQL CLI database analyze: 쿼리, 쿼리 도구 모음 또는 쿼리 팩을 지정하는 경로에 대한 데이터베이스 분석 명령을 확인합니다. 없는 경우 기본 쿼리 도구 모음만 실행됩니다. 있는 경우 실행할 쿼리를 정의합니다. 호출에서 제거할 수 있습니다. 자세한 내용은 "CodeQL 쿼리를 사용하여 코드 분석"을(를) 참조하십시오.

분석에서 쿼리 제외

결과가 단일 규칙에 대한 결과에 의해 지배되는 경우 분석에서 규칙을 제외하는 것이 가장 좋은 솔루션일 수 있습니다.

  • code scanning에 대한 CodeQL 고급 설정: query-filters 키워드를 사용하여 분석에서 하나 이상의 쿼리를 제외합니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하십시오.
  • CodeQL CLI database analyze: 하나 이상의 쿼리를 분석에서 제외하도록 데이터베이스 분석 명령을 업데이트합니다. 자세한 내용은 "CodeQL 쿼리를 사용하여 코드 분석"을(를) 참조하십시오.

또는 filter-sarif 작업과 같은 도구를 사용하여 SARIF 파일을 다시 작성하여 제외 패턴을 통해 특정 검색을 제외할 수 있습니다.

출력에서 데이터 흐름 경로 생략

SARIF 결과에 강조 표시된 심층 코드 경로가 많은 경우 각 경고에 대해 보고된 경로 수를 줄일 수 있습니다.

  • 에 대한 code scanning에 대한 CodeQL 고급 설정: 경로 수를 최대 1 또는 0으로 제한하도록 analyze 단계를 업데이트합니다.

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2
      env: 
        CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
    
  • CodeQL CLI database analyze: --max-paths=1 플래그를 포함하도록 데이터베이스 분석 명령을 업데이트합니다. 자세한 내용은 "데이터베이스 분석"을(를) 참조하세요.

참고: max-paths 설정은 모든 데이터 흐름 쿼리의 결과에 영향을 줍니다.

추가 참고 자료