仅使用声纳云为 dotnet 项目分析新的\更新的代码

问题描述

我们为 C# .Net 代码设置了拉取请求分析。观察到旧代码(未修改)正在考虑用于分析,这是意料之外的,这阻碍了我们使用质量门。

新的代码条件是根据设置为 1 的“天数”条件设置的。

即便如此,PR/短分支分析报告了旧代码中存在的问题(未作为拉取请求的一部分进行更新/编辑),由于这个问题,我们无法启用质量门。

azure devops 管道中使用了以下任务:

  • 准备声纳云分析
  • 运行代码分析
  • 发布质量关口结果
  • 使用的 ALM:Azure DevOps CI 系统中的 Git 使用了 Azure DevOps
  • 存储库的语言:C# .Net

解决方法

这是一个示例 SonarQube 管道配置,它在每次合并到主分支时执行。

Example pipeline steps

步骤:

  1. Node 是为构建目的而安装的
  2. 启动准备分析,下载扫描、配置和规则集所需的内容
  3. Nugget 包管理器已安装
  4. 已启动 Nugget 恢复
  5. 解决方案已构建(重要步骤)
  6. 代码分析正在检查先前构建的解决方案中包含的每个 .cs 文件
  7. 严格的质量门是扫描结果
  8. 自定义构建步骤,如果质量门失败,则会中断管道

这可能很明显,但请确保您在对 SonarQube 进行准备分析和运行代码分析之间构建 C# 解决方案,以便提供 SonarQube 将分析的更新代码。

“从 SonarQube 获取结果”步骤是一个 powershell 脚本,它调用 SonarQube API 以获取启动扫描的质量门结果,以便在发现问题时失败。