问题描述
我们为 C# .Net 代码设置了拉取请求分析。观察到旧代码(未修改)正在考虑用于分析,这是意料之外的,这阻碍了我们使用质量门。
新的代码条件是根据设置为 1 的“天数”条件设置的。
即便如此,PR/短分支分析报告了旧代码中存在的问题(未作为拉取请求的一部分进行更新/编辑),由于这个问题,我们无法启用质量门。
azure devops 管道中使用了以下任务:
- 准备声纳云分析
- 运行代码分析
- 发布质量关口结果
- 使用的 ALM:Azure DevOps CI 系统中的 Git 使用了 Azure DevOps
- 存储库的语言:C# .Net
解决方法
这是一个示例 SonarQube 管道配置,它在每次合并到主分支时执行。
步骤:
- Node 是为构建目的而安装的
- 启动准备分析,下载扫描、配置和规则集所需的内容
- Nugget 包管理器已安装
- 已启动 Nugget 恢复
- 解决方案已构建(重要步骤)
- 代码分析正在检查先前构建的解决方案中包含的每个 .cs 文件
- 严格的质量门是扫描结果
- 自定义构建步骤,如果质量门失败,则会中断管道
这可能很明显,但请确保您在对 SonarQube 进行准备分析和运行代码分析之间构建 C# 解决方案,以便提供 SonarQube 将分析的更新代码。
“从 SonarQube 获取结果”步骤是一个 powershell 脚本,它调用 SonarQube API 以获取启动扫描的质量门结果,以便在发现问题时失败。