Skip to main content

关于代码扫描的设置类型

根据你的需求, GitHub 提供 code scanning默认或高级设置。

关于默认设置

          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 覆盖范围。

自定义默认设置

运行代码的初始分析时使用默认设置,然后可以更改配置以更好地满足需求。

配置选项

对于默认设置的现有配置,可编辑:

  • 语言默认设置会进行分析。
  • 分析期间运行的查询套件。 有关可用查询套件的详细信息,请参阅“CodeQL 查询套件”。
  • 要用于分析的威胁模型(公开预览)。 所选的威胁模型将决定哪些受污染数据的来源被视为应用程序的风险。 在公开预览期间,仅用于分析Java/Kotlin 和 C#的威胁模型。 有关威胁模型的更多信息,请参阅“在默认设置中包含受污染数据的本地源”。

如果你的代码库依赖于标准库CodeQL未识别的库或框架,还可以通过使用CodeQL模型包,在默认设置中扩展CodeQL的覆盖范围。 有关详细信息,请参阅在默认设置中使用 CodeQL 模型包扩展 CodeQL 覆盖率

所有 code scanning 设置类型之间共享的其他配置选项都可用。 请参阅“code scanning 的存储库属性”。

可用运行程序

可以对自承载运行程序或CodeQL托管运行程序上支持的所有GitHub语言使用默认设置。

可以通过为运行程序提供默认 code-scanning 标签来为默认设置分配自承载运行程序,也可以选择为它们提供自定义标签,以便单个存储库可以使用不同的运行程序。

除非有特定用例,否则建议为运行程序只分配默认的 code-scanning 标签。 但是,你可能想要使用自定义标签来:

  • 将更强大的自托管运行程序分配给关键存储库,以便更快地进行 code scanning 分析。
  • 在特定平台上运行你的code scanning分析(例如 macOS)。
  • 对您的GitHub托管和自托管运行器的工作负载进行精细控制。

关于高级设置

如果您需要对 code scanning 配置进行更精细的控制,应该改为配置高级设置。 需要对code scanning进行自定义时,code scanning的高级设置非常有用。 可以通过code scanning与GitHub Actions或外部的持续集成或持续交付/部署(CI/CD)系统进行设置。

如果使用多个配置运行代码扫描,则警报有时会有多个分析源。 如果警报有多个分析源,你可在警报页上查看每个分析源的警报状态。 有关详细信息,请参阅“关于代码扫描警报”。

使用 GitHub Actions

通过创建和编辑 GitHub Actions 工作流文件,可以定义如何生成编译的语言、选择要运行的查询、选择要扫描的语言、使用矩阵生成等。 还可以访问用于控制工作流的所有选项,例如:更改扫描日程安排、定义工作流触发器、指定要使用的专业运行器。

使用第三方 CI/CD 系统

作为在code scanning中使用GitHub运行GitHub Actions的替代方案,可以在外部 CI/CD 系统中分析代码,然后将结果上传到GitHub。

          CodeQL CLI这是一种独立的命令行工具,可用于分析代码。 可以将结果 CodeQL CLI 添加到第三方系统,或使用另一个第三方静态分析工具,该工具可以生成静态分析结果交换格式 (SARIF) 2.1.0 数据。 有关详细信息,请参阅 [AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/about-the-codeql-cli) 和 [AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning)。

在外部生成的code scanning警报与在code scanningGitHub内部生成的警报显示方式相同。

后续步骤

可以同时为组织中的单个存储库、多个存储库或所有存储库启用默认设置。

若要改为配置高级设置,请参阅 配置代码扫描的高级设置