{"meta":{"title":"コード スキャン分析に時間がかかりすぎる","intro":"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/troubleshoot-analysis-errors","title":"分析エラーのトラブルシューティング"},{"href":"/ja/code-security/reference/code-scanning/troubleshoot-analysis-errors/analysis-takes-too-long","title":"分析に時間がかかりすぎる"}],"documentType":"article"},"body":"# コード スキャン分析に時間がかかりすぎる\n\ncode scanning構成を微調整して、分析時間を最小限に抑えることができます。\n\ncode scanning分析でビルド時間を短縮するには、いくつかの方法があります。\n\n## メモリまたはコアを増やす\n\nGitHub分析にcode scanningホストランナーを使用している場合は、より大きなランナー (larger runner)へのアップグレードを検討してください。 これらは、標準ランナーよりも多くの RAM、CPU、ディスク領域を持つ GitHubホストランナーです。\nより大きなランナー (larger runner)とcode scanningの詳細については、「[より大きなランナーの使用](/ja/actions/how-tos/manage-runners/larger-runners)」および「[大きなランナーをデフォルトのセットアップ用に設定する](/ja/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/configure-larger-runners)」を参照してください。\n\nセルフホステッド ランナーを使用して code scanning 分析を実行している場合は、それらのランナーのメモリまたはコアの数を増やすことができます。 分析に CodeQL 高度なセットアップを使用している場合は、 CodeQL に推奨されるハードウェア リソースを確認して、セルフホステッド ランナーがこれらの要件を満たしていることを確認します。 詳しくは、「[CodeQL を実行するための推奨ハードウェア リソース](/ja/code-security/reference/code-scanning/codeql/hardware-resources-for-codeql)」をご覧ください。\n\n## マトリックスビルドを使用して分析を並列化する\n\n複数のジョブを含むワークフローの解析を高速化するために、マトリックスを使用するようにワークフローを変更できます。 詳しくは、「[ワークフローでのジョブのバリエーションの実行](/ja/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations)」をご覧ください。\n\n既定の CodeQL 分析ワークフロー では、言語のマトリックスが使用されるため、各言語の分析が並列で実行されます。 ただし、高度なセットアップで CodeQL を使用していて、\"CodeQL の初期化\" 手順で直接分析する言語を指定している場合は、各言語の分析が順番に行われます。 この構成では、マトリックスを使用するように高度なセットアップ ワークフローを変更することで、解析を高速化できます。 例については、「[CodeQL の高度なセットアップで一部の言語が分析されませんでした](/ja/code-security/reference/code-scanning/troubleshoot-analysis-errors/some-languages-not-analyzed)」のワークフロー抜粋を参照してください。\n\n## 1 つのワークフローで分析されるコードの量を減らす\n\n通常、分析時間は、分析対象のコードの量に比例します。 高度なセットアップで CodeQL を使用している場合は、一度に分析するコードの量を減らすことで、分析時間を短縮できます。 たとえば、テスト コードを除外したり、一度にコードのサブセットのみを解析する解析を複数のワークフローに分割したりします。\n\n`build-mode: autobuild`または`build-mode: manual`を使用する場合、Java、Kotlin、Go、C、C++、C# などのコンパイル済み言語の場合、CodeQLはワークフローの実行中にビルドされたすべてのコードを分析します。 分析するコードの量を制限するには、`run` ブロックで独自のビルド ステップを指定して、分析するコードのみをビルドします。 独自のビルド ステップの指定と、`paths` イベントや `paths-ignore` イベントでの `pull_request` フィルターまたは `push` フィルターの使用を組み合わせることで、特定のコードが変更されたときにのみワークフローが実行されるようにすることができます。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#onpushpull_requestpull_request_targetpathspaths-ignore)」をご覧ください。\n\nソース コードをコンパイルせずに分析CodeQL JavaScript、Python、TypeScript などの言語、または`build-mode: none`を使用してコンパイルされた言語の場合は、分析するコードの量を制限する追加の構成オプションを指定できます。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/reference/code-scanning/workflow-configuration-options#specifying-directories-to-scan)」をご覧ください。\n\nCodeQL分析を複数のワークフローに分割する場合でも、リポジトリ内のすべてのコードを分析する`schedule`で実行されるワークフローを少なくとも 1 つ用意することをお勧めします。\nCodeQLはコンポーネント間のデータ フローを分析するため、一部の複雑なセキュリティ動作は完全なビルドでのみ検出される場合があります。\n\n## `schedule` イベント中にのみ実行する\n\n`push` または `pull_request` イベントの間は、分析が遅くなる場合があります。 その場合は、分析が`schedule` イベントでのみトリガーするように設定できます。\nCodeQL分析にcode scanningを使用している場合は、高度なセットアップ ワークフローを使用して構成できますが、既定のセットアップでは構成できません。 詳しくは、「[GitHub Actionsについて](/ja/actions/get-started/understand-github-actions#events)」をご覧ください。\n\n## ワークフローが実行するクエリまたはルールを確認する\n\n解析時間を短縮するもう 1 つの方法は、pull request で実行されるワークフローで重要と思われるクエリまたはルールのみを実行することです。\ncode scanningにサードパーティ製のツールを使用する場合は、ツールのドキュメントを参照する必要があります。\n\nCodeQLでは、言語ごとに 2 つの主要なクエリ スイートを使用できます。\nCodeQL データベースのビルドを最適化してもプロセスが長すぎる場合は、実行するクエリの数を減らすことができます。 デフォルトのクエリ スイートは自動的に実行されます。品質と速度の間で可能な限り最良の妥協点が提供されます。\n\n高度なセットアップで CodeQL を使用している場合は、既定のクエリに加えて、追加のクエリまたはクエリ スイートを実行している可能性があります。 ワークフローで、`queries` 要素を使用して実行する追加のクエリ スイートまたは追加のクエリが定義されているかどうかを確認します。 追加のクエリ スイートまたはクエリを無効にして試験を行うことができます。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/reference/code-scanning/workflow-configuration-options#using-queries-in-ql-packs)」をご覧ください。"}