Skip to main content

SARIF 結果が 1 つ以上の制限を超えている

1 つ以上の制限を超えているために、SARIF ファイルが code scanning によって拒否された場合の問題を解決する方法について説明します。

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,000100 個の場所のみが含まれます。
ルールあたりのタグ数2010 個のタグのみが含まれます。
アラート制限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 つの方法が考えられます。

  1. コードの分析に使うルールの数を減らします。 詳しくは、「SARIF 結果ファイルが大きすぎる」の「実行するクエリ スイートの定義」と「分析からクエリを除外する」を参照してください。
  2. 毎回異なるルール セットを使って分析を 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 構成の一部として、これまでよりも多くの一意のアラートが生成されます。 これは、第三者製ツールの出力が使用されていることが原因であり、ユーザー構成エラーではない可能性があります。 ユーザー構成エラーとツール ベンダー エラーの両方が、考えられる原因です。

この問題を解決するには、いくつかの手順があります。

  1. 生成する SARIF ファイルを調べて、code scanning アラートがツールの実行間で個別に分類される原因を特定します。 これは、通常、次のいずれかの問題を示しています。
    • 一時ディレクトリまたは生成されたファイル名が含まれているため、SARIF artifactLocation.uri プロパティ (code scanning アラート ユーザー インターフェイスのファイルパス) は、決定論的ではありません。
    • このツールを使用すると、不安定な SARIF ルール名または artifactLocation object uri property 値が生成されます。これは通常、ハッシュ (Git コミットや Docker イメージの SHA など) や、実行または環境間で変化する他のデータ ソースを使用した結果です。
  2. 問題の原因を特定したら、それに応じて構成を更新し、ツールベンダーのツールが不安定な SARIF 結果の原因である場合は、ツール ベンダーに問い合わせる必要があります。
  3. ツール ベンダーによって修正されるまで、非確定的な出力を生成する第三者製ツールのコード スキャン結果のアップロードを停止します。

"アラートの制限により、すべての分析アップロードがブロックされました" に対する追加の手順

コード スキャンの構成を修正し、第三者製ツールの出力を削除または修正する上で、問題のある構成のアラートを削除するのを支援してもらうために、GitHub サポート ポータル に問い合わせる必要があります。

現時点では、アラートを削除するためのセルフサービス方式がないため、コード スキャンを再度有効にする前に、カスタマー サポートに問い合わせる必要があります。