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

# 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

Code scanning では、SARIF 結果ファイルのフィールドに対して 2 種類の制限が設定されています。

  • 格納およびユーザーに表示されるデータの量を決定するソフト制限。
  • 処理に受け入れられるデータの最大量を決定するハード制限。

CodeQL またはサードパーティの分析ツールによって生成された SARIF ファイルに対して、これらのエラーが表示されることがあります。

SARIF データ最大値表示制限
ファイルあたりの実行数20なし
実行あたりの結果数25,000重要度による優先順位で、上位 5,000 件の結果のみが含まれます。
実行あたりのルール数25,000なし
実行あたりのツール拡張機能数100なし
結果あたりのスレッド フローの場所数10,000優先順位付けを使用して、上位 1,000 個のスレッド フローの場所のみが含まれます。
結果あたりの場所数1,000100 個の場所のみが含まれます。
ルールあたりのタグ数2010 個のタグのみが含まれます。

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[] を参照してください。