Skip to main content

编辑默认设置配置

可以编辑 code scanning 默认设置的现有配置,以更好地满足需求。

谁可以使用此功能?

具有管理员角色的组织所有者、安全管理员和组织成员

运行代码的初始分析时使用默认设置,然后可以更改配置以更好地满足需求。 可以在用户界面中自定义配置,也可以使用存储库属性添加自定义查询 或应用自定义配置文件。 请参阅 关于代码扫描的设置类型存储库属性 code scanning

自定义现有默认设置配置

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在仓库名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“安全和质量”部分中,单击 Advanced Security

  4. 在“CodeQLCode Security分析”部分的“分析”行中,选择,然后单击“查看CodeQL配置”。

  5. 在“CodeQL 默认配置”窗口中,单击“ 编辑”。

  6. (可选)在“语言”部分中,选择或取消选择用于分析的语言。

  7. (可选)在“Scan settings”部分的“Query suite”行中,选择要对代码运行的其他查询套件。

  8. (可选)若要使用标记的运行程序,请在“CodeQL 默认配置”模式对话框的“运行程序类型”部分中,选择 “标准 GitHub 运行程序 ”以打开下拉菜单,然后选择 “标记运行程序”。 然后,在“运行器标签”旁边,输入现有自托管或 GitHub 托管运行器的标签。 有关详细信息,请参阅“配置代码扫描的默认设置”。

  9. (公共预览可选)在“扫描设置”部分的“威胁模型”行中,选择 “远程和本地源”。 此选项仅适用于具有支持语言的代码的存储库: Java/Kotlin 和 C#。

  10. 要更新配置,并使用新配置运行对代码初始分析,请单击“保存更改”。**** 将来的所有分析都将使用新配置。

定义导致拉取请求检查失败的警报严重性

当满足以下条件之一时,可以使用规则集防止合并拉取请求:

  • 某个必需的工具发现了一个 code scanning 警报,且该警报的严重程度符合规则集中的定义。
  • 所需的工具分析仍在进行中。
  • 未为存储库配置所需的工具。

有关详细信息,请参阅“设置代码扫描合并保护”。 有关规则集的更多常规信息,请参阅“关于规则集”。

在默认设置中包含受污染数据的本地源

注意

风险模型功能目前为 公开预览,可能随时更改。 在 公开预览 期间,风险模型仅支持 Java/Kotlin 和 C# 分析。

如果代码库只将远程网络请求视为受污染数据的潜在来源,则建议使用默认的威胁模型。 如果代码库认为网络请求以外的源可能包含受污染的数据,则可以使用威胁模型将这些其他源添加到 CodeQL 分析中。 在公开预览期间,您可以添加您的代码库可能视为受污染数据附加来源的本地源(例如:命令行参数、环境变量、文件系统和数据库)。

可以编辑默认设置配置中使用的威胁模型。 有关更多信息,请参阅“自定义现有的默认设置配置”。

在默认设置中使用 CodeQL 模型包扩展 CodeQL 覆盖范围

注意

CodeQL 模型包目前包含在 公开预览 中,可能会更改。 C/C++、C#、Java/Kotlin、Python、Ruby 和 Rust 分析支持模型包。

CodeQL 的 CodeQL 扩展中的 Visual Studio Code 支持对 C#、Java/Kotlin、Python 和 Ruby 的依赖项建模。

如果 上,则使用 CodeQL 中包含的标准库无法识别的框架和库,你可以对依赖关系进行建模并扩展 code scanning 分析。 有关详细信息,请参阅文档中受支持语言和框架CodeQL。

对于默认设置,您需要在 CodeQL 模型包中定义附加依赖项的模型。 可以使用单个存储库的模型包在默认设置 CodeQL 中扩展覆盖范围,也可以大规模扩展组织中所有存储库的覆盖范围。

有关模型包和编写自己的模型包的详细信息 CodeQL ,请参阅 使用 CodeQL 模型编辑器

扩展存储库的覆盖范围

  1. 在存储库的 .github/codeql/extensions 目录中,复制模型包目录,该目录应包含一个 codeql-pack.yml 文件和任何 .yml 文件,后者包含要包含在分析中的库或框架的其他模型。
  2. 模型包将在您的 code scanning 分析中被自动检测并使用。
  3. 如果以后将配置更改为使用高级设置,则 .github/codeql/extensions 目录中的任何模型包也将被识别和使用。

扩展组织中所有存储库的覆盖范围

注意

如果扩展了CodeQL组织中所有存储库的模型包的覆盖范围,则必须将指定的模型包发布到GitHubContainer registry并且可供运行code scanning的存储库访问。 有关详细信息,请参阅“使用容器注册表”。

  1. 在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。

  2. 在组织名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

  3. 在边栏的“Security”部分中,依次单击“ Advanced Security”和“Global settings”********。

  4. 查找“Code scanning”部分。

  5. 在“展开 CodeQL 分析”旁边,单击“ 配置”。

  6. 输入对要使用的已发布模型包的引用,每行一个应用,然后单击“保存”。

    组织设置中的“展开 CodeQL 分析”视图的屏幕截图。

  7. 在组织中启用了默认设置的任何存储库上运行code scanning时,将自动检测和使用模型包。

使用配置文件自定义默认设置

可以使用存储库属性应用配置文件CodeQL来进一github-codeql-config-file步自定义默认设置。 文件中的配置与配置默认设置的合并会自动生成,因此可以添加额外的查询或排除路径,而无需切换到高级设置。 有关可以在配置文件中 CodeQL 配置的内容以及如何将其与默认设置合并的详细信息,请参阅 存储库属性 code scanning

将配置文件应用于组织中的所有存储库

自定义大规模默认设置的建议方法是为 github-codeql-config-file 存储库属性设置组织范围的默认值,以便在将更多存储库添加到组织时不需要更新各个存储库。

  1. 在 CodeQL 中央存储库中创建配置文件。 可以为此创建新存储库,也可以将文件添加到现有存储库。 然后,可以在一个位置维护组织范围的配置。 有关配置文件的格式的信息,请参阅 代码扫描的工作流配置选项

    包含配置文件的存储库可以是公共、内部或专用的。 若要使用内部或专用存储库中的文件,而不是使用默认设置进行分析的文件,必须设置 Git 源 专用注册表配置。 建议将注册表 URL 设置为包含配置文件(而不是组织 URL)的存储库的完整 URL,以便凭据仅用于向该存储库发出的请求。 请参阅“授予安全功能访问专用注册表的权限”。

  2. github-codeql-config-file为组织创建存储库属性,并将其默认值设置为配置文件的路径。 例如,如果已将配置文件 codeql.yml 提交到 main 分支 octo-org/config,则会将存储库属性的值设置为 remote=octo-org/config@main:codeql.yml

    建议先在单个存储库上测试配置文件,然后再设置组织范围的默认值。 请参阅“存储库属性 code scanning”。

  3. 将自动检测配置文件并将其与配置默认设置合并,将在 code scanning 组织中每个存储库上下次运行时生成。 已为 github-codeql-config-file 属性设置显式值的存储库继续使用该值,而不是组织范围的默认值。 有关默认和显式存储库属性值如何交互的详细信息,请参阅 管理组织中存储库的自定义属性

将配置文件应用到存储库

如果只需自定义单个存储库的默认设置,或者在将其部署到组织之前测试配置,则可以直接在该存储库上设置该属性。

  1. 创建 CodeQL 配置文件。 可以是要分析的存储库中的文件,也可以是单独存储库中的文件。 有关配置文件的格式的信息,请参阅 代码扫描的工作流配置选项

    包含配置文件的存储库可以是公共、内部或专用的。 若要使用内部或专用存储库中的文件,而不是使用默认设置进行分析的文件,必须设置 Git 源 专用注册表配置。 建议将注册表 URL 设置为包含配置文件(而不是组织 URL)的存储库的完整 URL,以便凭据仅用于向该存储库发出的请求。 请参阅“授予安全功能访问专用注册表的权限”。

  2. github-codeql-config-file 存储库的存储库属性设置为配置文件的本地或远程路径。 有关如何设置存储库属性值的详细信息,请参阅 存储库属性 code scanning,了解有关此属性可接受的值的详细信息。

  3. 配置文件将自动检测并与配置默认设置合并,将在下次 code scanning 在存储库上运行时生成。

在非活动存储库上继续扫描

默认情况下, code scanning 默认设置会在未推送或拉取请求已打开 180 天的存储库上暂停每周计划的扫描。 不过,您可以在组织中覆盖这一行为,但扫描周期不可配置。

  1. 在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。

  2. 在组织名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

  3. 在边栏的“Security”部分中,依次单击“ Advanced Security”和“Global settings”********。

  4. 在“Code scanning”部分,启用为非活跃存储库保留每 30 天运行一次计划扫描设置。

进一步自定义

如果需要更改 code scanning 配置的任何其他方面,请考虑配置高级设置。 请参阅“配置代码扫描的高级设置”。