Skip to main content

SARIF 结果超出一个或多个限制

了解如何解决 code scanning 因超出一个或多个限制而拒绝 SARIF 文件时出现的问题。

关于 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 结果文件中的字段设置了两种类型的限制。

  • 软性限制,用于确定向用户存储和显示的数据量。
  • 硬性限制,用于确定接受处理的最大数据量。

对于 CodeQL 或第三方分析工具生成的 SARIF 文件,你可能会看到这些错误。

SARIF 数据最大值显示限制
每个文件的运行次数20
每次运行的结果数25,000只包括前 5,000 条结果,并按严重性确定优先级。
每次运行的规则数25,000
每次运行的工具扩展数100
每个结果的线程流位置数10,000只包括前 1,000 个线程流位置,按优先级排序。
每个结果的位置数1,000只包括 100 个位置。
每个规则的标记数20只包括 10 个标记。

有关验证 SARIF 文件的信息,请参阅“对代码扫描的 SARIF 支持”。

修复软性限制错误

超出软性限制时,code scanning 会显示最高优先级信息。 通常,不需要对 code scanning 配置进行任何更改。 随着团队修复警报,每次运行中报告的结果数将减少,直到它们处于软性限制范围内并显示所有结果为止。 或者,可以使用针对硬性限制错误描述的方法。

修复“由于结果限制而拒绝分析 SARIF 文件”

减少 SARIF 结果文件中包含的结果数有许多注意事项和可能的解决方案。 有关指导,请参阅“SARIF 结果文件太大”。

修复“SARIF 文件中的警报超出了线程流位置限制”

可以将分析配置为限制结果中包含的数据流路径数。 默认情况下,每个结果包含 4 个数据流路径。

  • code scanning 的 CodeQL 高级设置:更新 analyze 步骤以将路径数限制为最大值 1 或 0。

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2
      env: 
        CODEQL_ACTION_EXTRA_OPTIONS: '{"database":{"interpret-results":["--max-paths", 1]}}'
    
  • CodeQL CLI database analyze:更新数据库分析命令以包含 --max-paths=1 标志。 有关详细信息,请参阅“数据库分析”。

注意:max-paths 设置会影响所有数据流查询的结果。

修复“由于运行限制而拒绝分析 SARIF 文件”

最简单的方法是为每个运行生成新的 SARIF 文件,并单独上传每个文件。 向每个结果添加一个“类别”,这使 code scanning 能够相应地存储和显示结果。 有关详细信息,请参阅“对代码扫描的 SARIF 支持”。

修复“由于规则限制而拒绝分析 SARIF 文件”

这里有两种可能的方法。

  1. 减少用于分析代码的规则数。 有关详细信息,请参阅“SARIF 结果文件太大”中的“定义要运行的查询套件”和“从分析中排除查询”。
  2. 运行分析两次,每次使用不同的规则集,并将这两个结果文件上传到 code scanning。 有关详细信息,请参阅“对代码扫描的 SARIF 支持”。

修复“由于扩展限制而拒绝分析 SARIF 文件”

最简单的方法是每次运行该工具时创建一个单独的 SARIF 文件,并单独上传每个文件。 可能还需要联系该工具的维护人员。 有关详细信息,请参阅“对代码扫描的 SARIF 支持”。

CodeQL 分析不应生成此错误。 如果在使用 CodeQL 操作或 CodeQL CLI 时看到此错误,应联系 GitHub 支持 告知我们。 有关详细信息,请参阅“联系 GitHub 支持”。

修复“由于位置限制而拒绝分析 SARIF 文件”

解决此问题的最佳方法通常是识别报告过多位置的查询,并将其从分析中排除。 有关此操作方法的信息,请参阅“SARIF 结果文件太大”。

修复“由于规则标记限制而拒绝分析 SARIF 文件”

需要更新 SARIF 文件或生成器,以便为每个 reportingDescriptor 对象报告的标记数组少于 10。 有关详细信息,请参阅“对代码扫描的 SARIF 支持”中的 properties.tags[]