SARIF 結果の code scanning 制限について
# SARIF results exceed soft limits
Locations for an alert exceeded limits
Analysis SARIF file exceeded alert limits
Rule tags in SARIF file exceed limits
Alert in SARIF upload exceeded thread flow location limits
Repository is at risk of exceeding the alert limit.
# SARIF results exceed hard limit
Alert(s) in SARIF file exceeded thread flow location limits
Analysis SARIF file rejected due to extension limits
Analysis SARIF file rejected due to location limit
Analysis SARIF file rejected due to rule tag limits
Analysis SARIF file rejected due to result limits
Analysis SARIF file rejected due to rule limits
Analysis SARIF file rejected due to run limits
All analysis uploads blocked due to alert limit
Code scanning では、SARIF 結果ファイルのフィールドに対して 2 種類の制限が設定されています。
- 格納される、またユーザーに表示されるデータの量を決定するソフト制限。
- 処理に受け入れられるデータの最大量を決定するハード制限。
CodeQL またはサードパーティの分析ツールによって生成された SARIF ファイルに対して、これらのエラーが表示されることがあります。
| SARIF データ | 最大値 | データ切り捨て制限 |
|---|---|---|
| ファイルあたりの実行数 | 20 | なし |
| 実行あたりの結果数 | 25,000 | 重要度による優先順位で、上位 5,000 件の結果のみが含まれます。 |
| 実行あたりのルール数 | 25,000 | なし |
| 実行あたりのツール拡張機能数 | 100 | なし |
| 結果あたりのスレッド フローの場所数 | 10,000 | 優先順位付けを使用して、上位 1,000 個のスレッド フローの場所のみが含まれます。 |
| 結果あたりの場所数 | 1,000 | 100 個の場所のみが含まれます。 |
| ルールあたりのタグ数 | 20 | 10 個のタグのみが含まれます。 |
| アラート制限 | 1,000,000 | なし |
SARIF ファイルの検証の詳細については、「Code scanningの SARIF サポート」を参照してください。
ソフト制限のエラーの修正
ソフト制限を超えている場合、code scanning によって最も優先度の高い情報が表示されます。 多くの場合、code scanning の構成を変更する必要はありません。 チームがアラートを修正するにつれ、各実行で報告される結果の数はソフト制限内に収まるまで減少し、すべての結果が表示されるようになります。 または、ハード制限のエラーについての説明に示されている方法を使用することもできます。
「結果制限により分析 SARIF ファイルが拒否されました」の修正
SARIF 結果ファイルに含まれる結果の数を減らすための、多くの考慮事項と考えられる解決策があります。 詳しいガイダンスについては、「SARIF 結果ファイルが大きすぎる」を参照してください。
「SARIF ファイル内のアラートがスレッド フローの位置制限を超過しました」の修正
結果に含まれるデータフロー パスの数を制限するよう分析を構成できます。 既定では、結果ごとに 4 つのデータフロー パスが含まれます。
-
CodeQL の code scanning 用の高度な設定: パスの数を最大 1 または 0 に制限するように
analyzeステップを更新します。- name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 env: CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}' -
CodeQL CLI
database analyze:--max-paths=1フラグを含むようにデータベース分析コマンドを更新します。 詳しくは、「データベース分析」をご覧ください。
メモ
max-paths 設定は、すべてのデータフロー クエリの結果に影響します。
「実行制限により分析 SARIF ファイルが拒否されました」の修正
最もシンプルな方法は、実行ごとに新しい SARIF ファイルを生成し、各ファイルを個別にアップロードすることです。 各結果に "category" を追加することで、code scanning が結果を適切に格納して表示できるようになります。 詳しくは、「SARIF ファイルを GitHub にアップロードする」をご覧ください。
「規則の制限により分析 SARIF ファイルが拒否されました」の修正
これには 2 つの方法が考えられます。
- コードの分析に使用するルールの数を減らします。 詳細については、「SARIF 結果ファイルが大きすぎる」の「実行するクエリ スイートの定義」と「分析からクエリを除外する」を参照してください。
- 各回で異なるルール セットを使用して分析を 2 回実行し、両方の結果ファイルを code scanning にアップロードします。 詳しくは、「SARIF ファイルを GitHub にアップロードする」をご覧ください。
「拡張制限により分析 SARIF ファイルが拒否されました」の修正
最も簡単な方法は、ツールを実行するたびに個別の SARIF ファイルを作成し、各ファイルを個別にアップロードすることです。 ツールの保守管理者への問い合わせが必要となる場合もあります。 詳しくは、「SARIF ファイルを GitHub にアップロードする」をご覧ください。
CodeQL 分析では、このエラーは生成されないはずです。 CodeQL アクション、または CodeQL CLI の使用中にこのエラーが発生した場合は、GitHub のサポートまでご連絡ください。 詳しくは、「GitHub Support へのお問い合わせ」をご覧ください。
「場所の制限により分析 SARIF ファイルが拒否されました」の修正
この問題を解決する最善の方法は、一般的に、報告する場所が多すぎるクエリを特定して、分析から除外することです。 その方法の詳細については、「SARIF 結果ファイルが大きすぎる」を参照してください。
「規則タグの制限により分析 SARIF ファイルが拒否されました」の修正
各 reportingDescriptor オブジェクトに対して報告されるタグの配列が 10 未満になるように、SARIF ファイルまたはジェネレーターを更新する必要があります。 詳細については、properties.tags[]の「」を参照してください。
「リポジトリがアラートの上限を超過するリスクがあります」および「アラートの制限により、すべての分析アップロードがブロックされました」の修正
この制限は、正常に機能する code scanning 構成の一部として、必要とされている以上に多くの一意のアラートを生成しているリポジトリによってトリガーされます。 これは、使用されているサードパーティ製ツールからの出力が原因であることが考えられ、ユーザーの構成エラーではない可能性があります。 ユーザー構成エラーとツール ベンダー エラーのどちらも、原因として考えられます。
この問題を解決するには、いくつかの手順があります。
- 生成されている SARIF ファイルを調べて、ツールのすべての実行で code scanning アラートが個別のものとして分類される原因を特定します。 これは、通常、次のいずれかが原因となります。
- SARIF
artifactLocation.uriプロパティ (code scanning アラート ユーザー インターフェイスのファイルパス) が、一時ディレクトリまたは生成されたファイル名が含まれていることにより、決定的ではない場合。 - 使用しているツールで生成される SARIF ルール名または
artifactLocation object uri property値に、変動が生じる場合。これは通常、ハッシュ (Git コミットや Docker イメージの SHA など) や、実行または環境間で変化する他のデータ ソースの使用が原因です。
- SARIF
- 問題の原因を特定したら、それに応じて構成を更新し、ツール ベンダーのツールが不安定な SARIF 結果の原因である場合は、ツール ベンダーに問い合わせる必要があります。
- ツール ベンダーによって修正されるまで、非確定的な出力を生成するサードパーティ製ツールのコード スキャン結果のアップロードを停止します。
「アラートの制限により、すべての分析アップロードがブロックされました」に対する追加の手順
コード スキャンの構成を修正し、サードパーティ製ツールの出力を削除または修正するのに加えて、問題のある構成のアラートの削除については、サイト管理者に連絡して、削除の支援を依頼する必要があります。
**現時点では、セルフサービス方式でアラートを削除するための手段がないため、コード スキャンを再度有効にする前に、カスタマー サポートにお問合せいただく必要があります。**