Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

基于 CodeQL 的代码质量分析

有关由 CodeQL 提供支持的 Code Quality 分析的工作方式、所使用的工作流以及在拉取请求中报告的状态检查的信息。

数据可复用.code-quality.code-quality-preview-note %}

CodeQL 支持的分析

Code Quality 使用 CodeQL 对拉取请求和默认分支执行基于规则的分析。

  •         **默认分支**的发现结果会显示在存储库“安全性”选项卡下的“常规发现”仪表板中。
    
  •         **拉取请求**的结果以`github-code-quality[bot]`的注释形式显示。
    

在可能的情况下,会为发现结果提供 Copilot自动修复 建议。

支持语言的查询列表

每一条 Code Quality 规则都是以 CodeQL 查询的形式编写,然后通过 GitHub Actions 运行。

这些规则由 GitHub 和开源开发人员不断优化。

  •         [AUTOTITLE](/code-security/code-quality/reference/codeql-queries/csharp-queries)
    
  •         [AUTOTITLE](/code-security/code-quality/reference/codeql-queries/go-queries)
    
  •         [AUTOTITLE](/code-security/code-quality/reference/codeql-queries/java-queries)
    
  •         [AUTOTITLE](/code-security/code-quality/reference/codeql-queries/javascript-queries)
    
  •         [AUTOTITLE](/code-security/code-quality/reference/codeql-queries/python-queries)
    
  •         [AUTOTITLE](/code-security/code-quality/reference/codeql-queries/ruby-queries)
    

有关 CodeQL 项目的详细信息,请参阅 https://codeql.github.com/

用于代码质量分析的工作流

可以在存储库的 “操作” 选项卡上查看 Code Quality 的所有工作流运行。 该动态工作流称为“代码质量”。

默认情况下,数据变量.code-quality.workflow_name_actions %} 工作流在标准 数据变量.product.github %} 运行器上运行,但您可以将 数据变量.product.prodname_code_quality_short %} 配置为使用具有特定标签的运行器。 这些内容可能由 GitHub 或自行托管。

如果组织配置了专用注册表的缓存,这些注册表将可用于代码质量分析,以用于解析依赖项。

有关详细信息,请参见:

  •         [AUTOTITLE](/code-security/code-quality/how-tos/enable-code-quality)
    
  •         [AUTOTITLE](/code-security/securing-your-organization/enabling-security-features-in-your-organization/giving-org-access-private-registries#code-quality-access-to-private-registries)
    

拉取请求状态检查

当代码质量分析在拉取请求上运行时,“CodeQL - 代码质量 / Analyze”检查会显示在拉取请求底部的“检查”区域中。

由扫描识别的任何代码问题都在合并请求的注释中报告。 该评论由 github-code-quality[bot] 生成,并包含一条 Copilot自动修复 建议。

状态验证失败

工作流无法运行。 例如,你的 Actions 分钟数预算已用尽。 请参阅 查看日志来诊断故障

合并被阻止:检测到代码质量问题

扫描发现代码中的问题超出了存储库的代码质量分支规则设置的质量门。 在合并拉取请求之前,您需要解决这些问题。 请参阅“解决拉取请求中的阻塞”。