关于默认设置
code scanning 的默认设置是为存储库启用 code scanning 的最快、最简单、维护量最低的方法。 根据存储库中的代码,默认设置将自动创建自定义 code scanning 配置。 启用默认设置后,将使用 CodeQL 扫描存储库中使用 CodeQL 支持的语言编写的代码:
- 每次推送到存储库的默认分支或任何受保护的分支时。 有关受保护分支的详细信息,请参阅“关于受保护分支”。
- 根据存储库的默认分支或任何受保护的分支创建或提交拉取请求时,不包括分支中的拉取请求。
- 每周一次。
支持的语言
如果符合条件的存储库将来可能至少包含一种 CodeQL 支持的语言,我们建议为这些存储库启用默认设置。 如果在不包含任何 CodeQL 支持的语言的存储库上启用默认设置,则默认设置将不会运行任何扫描或使用任何 GitHub Actions 分钟。 如果将 CodeQL 支持的语言添加到仓库的默认分支,则默认设置将自动开始扫描 CodeQL 支持的语言,并使用 GitHub Actions 分钟。 有关 CodeQL 支持的语言的详细信息,请参阅“关于使用 CodeQL 进行代码扫描”。
如果存储库中的代码发生更改,以包含任何 CodeQL 支持的语言,则 GitHub 将自动更新 code scanning 配置以包含新语言。 如果 code scanning 因新配置而失败,GitHub 将自动恢复以前的配置,因此存储库不会失去 code scanning 覆盖范围。
自定义默认设置
运行代码的初始分析时使用默认设置,然后可以更改配置以更好地满足需求。
如果需要更精细地控制 code scanning 配置,则应改为配置高级设置。
配置选项
对于默认设置的现有配置,可编辑:
- 语言默认设置会进行分析。
- 分析期间运行的查询套件。 有关可用查询套件的详细信息,请参阅“CodeQL 查询套件”。
- 要用于分析的风险模型 (公共预览版)。 所选的威胁模型将决定哪些受污染数据的来源被视为应用程序的风险。 在 公共预览版 期间,威胁模型仅支持对 Java/Kotlin 和 C# 的分析。 有关威胁模型的更多信息,请参阅“在默认设置中包含受污染数据的本地源”。
如果代码库依赖于 CodeQL 中包含的标准库无法识别的库或框架,则也可以使用 CodeQL 模型包在默认设置中扩展 CodeQL 覆盖范围。 有关详细信息,请参阅在默认设置中使用 CodeQL 模型包扩展 CodeQL 覆盖率。
可用运行程序
可以在自托管运行程序或 GitHub 托管运行程序上对所有 CodeQL 支持的语言使用默认设置。
可以通过为运行程序
指定默认 code-scanning 标签来分配适用于默认设置的自托管运行程序,也可以选择为它们提供自定义标签,以便单个存储库可以使用不同的运行程序。
除非有特定用例,否则建议为运行程序只分配默认的 code-scanning 标签。 但是,你可能想要使用自定义标签来:
- 将更强大的自托管运行程序分配给关键存储库,以便更快地进行 code scanning 分析。
- 在特定平台(例如 macOS)上运行 code scanning 分析。
- 对 GitHub 托管的运行程序和自托管运行程序的工作负荷进行精细控制。
关于高级设置
需要自定义 code scanning 时,code scanning 的高级设置非常有用。 可以用 GitHub Actions 或者外部持续集成或持续交付/部署 (CI/CD) 系统来设置 code scanning。
如果使用多个配置运行代码扫描,则警报有时会有多个分析源。 如果警报有多个分析源,你可在警报页上查看每个分析源的警报状态。 有关详细信息,请参阅“关于代码扫描警报”。
使用 GitHub Actions
通过创建和编辑 GitHub Actions 工作流文件,可以定义如何生成编译的语言、选择要运行的查询、选择要扫描的语言、使用矩阵生成等。 还可以访问用于控制工作流的所有选项,例如:更改扫描日程安排、定义工作流触发器、指定要使用的专业运行器。
使用第三方 CI/CD 系统
作为使用 GitHub Actions 在 GitHub 中运行 code scanning 的替代方法,可以在外部 CI/CD 系统中分析代码,然后将结果上传到 GitHub。
CodeQL CLI 是可用于分析代码的独立代码行工具。 你可以将 CodeQL CLI 添加到你的第三方系统,或使用可以将结果生成为静态分析结果互换格式(SARIF)2.1.0 数据的另一个第三方静态分析工具。 有关详细信息,请参阅 关于 CodeQL CLI 和 对代码扫描的 SARIF 支持。
外部生成的 code scanning 警报的显示方式与 GitHub 内部生成的警报相同。
后续步骤
可以同时为组织中的单个存储库、多个存储库或所有存储库启用默认设置。
- 有关单个存储库,请参阅 配置代码扫描的默认设置。
- 有关批量启用,请参阅 配置大规模代码扫描的默认设置。
若要改为配置高级设置,请参阅 配置代码扫描的高级设置。