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@v3 env: CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
-
CodeQL CLI
database analyze
:--max-paths=1
フラグを含むようにデータベース分析コマンドを更新します。 詳しくは、「database analyze」を参照してください。
注: max-paths
設定は、すべてのデータフロー クエリの結果に影響します。
"実行制限により拒否された分析 SARIF ファイル" を修正する
最も簡単な方法は、実行ごとに新しい SARIF ファイルを生成し、各ファイルを個別にアップロードすることです。 各結果に "category" を追加することで、code scanning が結果を適切に格納して表示できるようになります。 詳しくは、「Code scanningの SARIF サポート」を参照してください。
"ルールの制限により拒否された分析 SARIF ファイル" を修正する
ここでは、2 つの方法が考えられます。
- コードの分析に使うルールの数を減らします。 詳しくは、「SARIF 結果ファイルが大きすぎる」の「実行するクエリ スイートの定義」と「分析からクエリを除外する」を参照してください。
- 毎回異なるルール セットを使って分析を 2 回実行し、両方の結果ファイルを code scanning にアップロードします。 詳しくは、「Code scanningの SARIF サポート」を参照してください。
"拡張機能の制限により拒否された分析 SARIF ファイル" を修正する
最も簡単な方法は、ツールを実行するたびに個別の SARIF ファイルを作成し、各ファイルを個別にアップロードすることです。 ツールの保守管理者に問い合わせる必要がある場合もあります。 詳しくは、「Code scanningの SARIF サポート」を参照してください。
CodeQL 分析では、このエラーは生成されないはずです。 CodeQL アクションまたは CodeQL CLI の使用中にこのエラーが発生した場合は、GitHub Support に問い合わせてお知らせください。 詳しくは、「GitHub Support へのお問い合わせ」を参照してください。
"場所の制限により拒否された分析 SARIF ファイル" を修正する
この問題を解決する最善の方法は、通常、報告する場所が多すぎるクエリを特定し、分析から除外することです。 その方法について詳しくは、「SARIF 結果ファイルが大きすぎる」を参照してください。
"ルール タグの制限により拒否された分析 SARIF ファイル" を修正する
SARIF ファイルまたはジェネレーターを更新して、各 reportingDescriptor
オブジェクトに対して報告されるタグの配列が 10 未満になるようにする必要があります。 詳しくは、「Code scanningの SARIF サポート」の properties.tags[]
を参照してください。
"リポジトリがアラートの上限を超えるリスクがあります" と "アラートの制限により、すべての分析アップロードがブロックされました"を修正する
この制限は、リポジトリによってトリガーされ、正常に機能する code scanning 構成の一部として、これまでよりも多くの一意のアラートが生成されます。 これは、第三者製ツールの出力が使用されていることが原因であり、ユーザー構成エラーではない可能性があります。 ユーザー構成エラーとツール ベンダー エラーの両方が、考えられる原因です。
この問題を解決するには、いくつかの手順があります。
- 生成する SARIF ファイルを調べて、code scanning アラートがツールの実行間で個別に分類される原因を特定します。 これは、通常、次のいずれかの問題を示しています。
- 一時ディレクトリまたは生成されたファイル名が含まれているため、SARIF
artifactLocation.uri
プロパティ (code scanning アラート ユーザー インターフェイスのファイルパス) は、決定論的ではありません。 - このツールを使用すると、不安定な SARIF ルール名または
artifactLocation object uri property
値が生成されます。これは通常、ハッシュ (Git コミットや Docker イメージの SHA など) や、実行または環境間で変化する他のデータ ソースを使用した結果です。
- 一時ディレクトリまたは生成されたファイル名が含まれているため、SARIF
- 問題の原因を特定したら、それに応じて構成を更新し、ツールベンダーのツールが不安定な SARIF 結果の原因である場合は、ツール ベンダーに問い合わせる必要があります。
- ツール ベンダーによって修正されるまで、非確定的な出力を生成する第三者製ツールのコード スキャン結果のアップロードを停止します。
"アラートの制限により、すべての分析アップロードがブロックされました" に対する追加の手順
コード スキャンの構成を修正し、第三者製ツールの出力を削除または修正する上で、問題のある構成のアラートを削除するのを支援してもらうために、GitHub サポート ポータル に問い合わせる必要があります。
現時点では、アラートを削除するためのセルフサービス方式がないため、コード スキャンを再度有効にする前に、カスタマー サポートに問い合わせる必要があります。