{"meta":{"title":"SARIF 結果ファイルが大きすぎる","intro":"10 MB を超える SARIF 結果ファイルを code scanning にアップロードすることはできません。 影響が最も大きい結果を含む、より小さなファイルを生成する方法を確認します。","product":"セキュリティとコードの品質","breadcrumbs":[{"href":"/ja/code-security","title":"セキュリティとコードの品質"},{"href":"/ja/code-security/reference","title":"リファレンス"},{"href":"/ja/code-security/reference/code-scanning","title":"コード スキャン"},{"href":"/ja/code-security/reference/code-scanning/sarif-files","title":"SARIF ファイル"},{"href":"/ja/code-security/reference/code-scanning/sarif-files/troubleshoot-sarif-uploads","title":"SARIF アップロードのトラブルシューティング"},{"href":"/ja/code-security/reference/code-scanning/sarif-files/troubleshoot-sarif-uploads/file-too-large","title":"結果ファイルが大きすぎます"}],"documentType":"article"},"body":"# SARIF 結果ファイルが大きすぎる\n\n10 MB を超える SARIF 結果ファイルを code scanning にアップロードすることはできません。 影響が最も大きい結果を含む、より小さなファイルを生成する方法を確認します。\n\n## このエラーについて\n\n```text\nSARIF file is too large\nSARIF results file is too large\nSARIF upload is rejected (bigger than allowed size for zip archive)\nSARIF ZIP upload is too large\nA fatal error occurred: SARIF file is too large\n413: Payload Too Large\n```\n\nあるプロセスが 10 MB の最大サイズを超える SARIF ファイルをアップロードしようとすると、これらのエラーの 1 つが報告されます。 Code scanning では、このサイズより大きいファイルを受け入れません。 code scanning へのアップロード用に生成される結果の数を減らす方法はいくつかあります。\n\nCodeQL またはサードパーティの分析ツールによって生成された SARIF ファイルに対して、このエラーが表示されることがあります。 アップロードの制限の詳細については、code scanning、「[Code scanningの SARIF サポート](/ja/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning#file-compatibility)」を参照してください。\n\n## エラーの原因を確認する\n\n非常に大きな SARIF 結果ファイルには、多くの原因が考えられます。\n\n### SARIF ファイル圧縮\n\ncode scanning によって拒否された結果ファイルを調べて、次の点を確認します。\n\n* SARIF ファイルは gzip を使って圧縮された\n* 圧縮ファイルは 10 MB 未満である\n\nファイルが gzip を使って圧縮されていない場合は、アップロード プロセスを再実行する前にファイルを圧縮してみてください。 圧縮ファイルがまだ大きすぎる場合は、より小さな結果セットを生成するように分析を構成する必要があります。\n\n### 分析されるコードの量\n\n結果が多すぎる場合は、最も重要なコードのみを分析するように分析を構成する必要があります。\n\n* インタープリター言語の場合は、リポジトリに多くのテスト、デモ、またはベンダーの依存関係が含まれているかどうかをチェックします。その際、アラートの修正の優先度が低くなります。 このコードを分析から除外してみてください。 詳細については、「[インタープリター言語の分析からコードを除外する](#excluding-code-from-analysis-for-interpreted-languages)」を参照してください。\n* コンパイル型言語の場合は、ビルド プロセスでコードの複数のバリアント (たとえば、複数の運用環境またはアーキテクチャのターゲット) が生成されるかどうかをチェックします。 最初に、コードの 1 つのバリアントのみを分析してみてください。 詳細については、「[ビルド コマンドの最適化](#optimizing-the-build-command)」を参照してください。\n\n### クエリ実行の数\n\nそれでも結果が多すぎる場合は、コードの分析に使うクエリの数をチェックします。 実行するクエリの数を減らしてみてください。 最初のアラートを修正したら、追加のクエリを再導入できます。 たとえば、CodeQL 分析の場合は、既定のクエリ スイートのみを実行できます。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#using-queries-in-ql-packs)」をご覧ください。\n\n### クエリで見つかる結果の数\n\nコードベースに特定のコーディング スタイルがある、または分析で特定のライブラリが理解されていないなどの理由により、1 つのクエリで多くの結果が報告されることがあります。 SARIF ビューアーで結果ファイルをレビューして、結果の分布を確認できます。 たとえば、「 <https://microsoft.github.io/sarif-web-component/> 」のように入力します。\n\n* 1 つのクエリによって特定されるアラートで結果が占められているかどうかを確認します。 分析からそのクエリを除外してみてください。 他のアラートを修正したときに、それを再導入できます。 CodeQL クエリ構成の詳細については、「[分析からクエリを除外する](#excluding-a-query-from-analysis)」を参照してください。\n* 多くの深いパスを持つデータフロー クエリがあるかどうかを確認します。 出力からデータフロー パスを省略してみてください。 CodeQL 分析の構成の詳細については、「[出力からデータフロー パスを省略する](#omitting-dataflow-paths-from-the-output)」を参照してください。\n\n## 問題を修正する\n\n以下のオプションは、複雑さの順で記載されています。 結果の数を管理可能なサイズに減らすように、構成を変更する必要があります。 これらのアラートをすべて修正したら、構成を更新して、より多くのコードをカバーしたり、より多くのクエリを実行したりするように分析を拡張できます。\n\n### インタープリター言語の分析からコードを除外する\n\n非運用コードを分析から除外することは、結果ファイルのサイズを小さくする簡単な方法です。\n\n* CodeQL の code scanning 用の高度な設定: ワークフロー ファイルで `paths` と `paths-ignore` を使って、分析するコードを指定します。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#specifying-directories-to-scan)」をご覧ください。\n* CodeQL CLI `database create`: 同じ構文を使って code scanning 用の YAML 構成ファイルを作成し、分析するコードを定義します。\n  `database create` コマンドを更新し、`--codescanning-config` オプションを使ってこの構成ファイルを呼び出すようにします。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#specifying-directories-to-scan)」をご覧ください。\n\n### ビルド コマンドの最適化\n\n1 つのバリアントのみをコンパイルするビルド コマンドを使うことは、結果ファイルのサイズを小さくする簡単な方法です。\n\n* CodeQL の code scanning 用の高度な設定: ワークフロー ファイルを更新して、選択したビルド コマンドを指定します。 詳しくは、「[コンパイル済み言語の CodeQL コード スキャン](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#adding-build-steps-for-a-compiled-language)」をご覧ください。\n* CodeQL CLI `database create`: `database create` コマンドを `--command` オプションを指定して呼び出すか、code scanning 用の YAML 構成ファイルでビルド コマンドを定義し、`--codescanning-config` オプションを使ってそのファイルを呼び出すことによって、選択したビルド コマンドを指定します。 詳しくは、「[CodeQL 分析用コードを準備する](/ja/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#specifying-build-commands)」をご覧ください。\n\n### 実行するクエリ スイートの定義\n\n既に既定のセキュリティ クエリのみを実行しているかもしれませんが、チェックする価値があります。\n\n* CodeQL の code scanning 用の高度な設定: ワークフロー ファイルで `queries` キーワードをチェックします。 存在しない場合は、既定のクエリ スイートのみが実行されます。 存在する場合は、それにより実行するクエリが定義されます。 ワークフロー ファイルのこの行をコメントアウトしてみてください。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#using-queries-in-ql-packs)」をご覧ください。\n* CodeQL CLI `database analyze`: データベース分析コマンドで、クエリ、クエリ スイート、またはクエリ パックを指定するパスをチェックします。 存在しない場合は、既定のクエリ スイートのみが実行されます。 存在する場合は、それらによって実行するクエリが定義されます。それらを呼び出しから削除してみてください。 詳しくは、「[CodeQL クエリによるコード分析](/ja/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#running-a-codeql-query-pack)」をご覧ください。\n\n### 分析からクエリを除外する\n\n1 つのルールに対する結果で結果が占められている場合は、そのルールを分析から除外することが最善の解決策となる場合があります。\n\n* CodeQL の code scanning 用の高度な設定: `query-filters` キーワードを使って、分析から 1 つ以上のクエリを除外します。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#excluding-specific-queries-from-analysis)」をご覧ください。\n* CodeQL CLI `database analyze`: データベース分析コマンドを更新して、分析から 1 つ以上のクエリを除外します。 詳しくは、「[CodeQL クエリによるコード分析](/ja/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#running-a-subset-of-queries-in-a-codeql-pack)」をご覧ください。\n\nまたは、[filter-sarif](https://github.com/advanced-security/filter-sarif) アクションなどのツールを使って、除外パターンによって特定の検出を除外するように SARIF ファイルを書き換えることもできます。\n\n### 出力からデータフロー パスを省略してみてください\n\nSARIF 結果で多くの深いコード パスが強調されている場合は、各アラートで報告されるパスの数を減らすことができます。\n\n* CodeQL の code scanning 用の高度な設定: パスの数を最大 1 または 0 に制限するように `analyze` ステップを更新します。\n\n  ```yaml\n  - name: Perform CodeQL Analysis\n    uses: github/codeql-action/analyze@v4\n    env: \n      CODEQL_ACTION_EXTRA_OPTIONS: '{\"database\":{\"interpret-results\":[\"--max-paths\", 1]}}'\n  ```\n\n* CodeQL CLI `database analyze`: `--max-paths=1` フラグを含むようにデータベース分析コマンドを更新します。 詳しくは、「[データベース分析](/ja/code-security/codeql-cli/codeql-cli-manual/database-analyze#--max-pathsmaxpaths)」をご覧ください。\n\n> \\[!NOTE]\n> `max-paths` 設定は、すべてのデータフロー クエリの結果に影響します。\n\n## 詳細については、次を参照してください。\n\n* [Code scanningの SARIF サポート](/ja/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning)"}