利用SonarCloud和Azure DevOps提升代码质量
利用SonarCloud和Azure DevOps提升代码质量
在软件开发过程中,代码质量是至关重要的。为了确保代码的清洁和安全性,我们可以使用SonarCloud——一个基于云的代码质量与安全服务。SonarCloud不仅对开源项目免费,还为私有项目提供了14天的免费试用。本文将指导您如何将SonarCloud集成到Azure DevOps服务中,以实现代码质量的持续提升。
为什么选择SonarCloud?
SonarCloud支持26种编程语言,包括Java、JavaScript、C#、C/C++等,并且拥有超过5000条规则来帮助您追踪难以发现的bug和质量问题。它还提供了云CI集成,支持Travis、Azure DevOps、BitBucket、AppVeyor等多种持续集成工具。
集成步骤概览
-
创建一个新的Azure DevOps项目,例如名为“SonarExamples”的项目。
-
安装SonarCloud Azure DevOps扩展,它包含构建任务、构建模板和自定义仪表板小部件。
-
使用相同的账户登录SonarCloud,创建组织和项目,确保它们与Azure DevOps中的设置相匹配。
-
在Azure中创建Personal Access Token (PAT),并将其应用于SonarCloud,以便SonarCloud能够向Azure DevOps的拉取请求添加评论。
-
配置Azure DevOps中的分支策略,以便在创建针对特定分支的拉取请求时触发SonarCloud分析。
详细步骤
步骤1:创建并应用PAT到SonarCloud
首先,您需要在Azure DevOps中创建一个PAT,并将其应用于SonarCloud。确保PAT的范围设置为“代码”下的“读取和写入”。
步骤2:配置分支策略
在Azure DevOps中,配置分支策略以确保当任何拉取请求针对主分支时,都会触发SonarCloud分析。
步骤3:创建拉取请求并触发分析
在Azure DevOps中,对代码文件进行更改并创建新的拉取请求。如果集成配置正确,用户界面将显示正在进行的分析构建。
步骤4:审查拉取请求分析结果
分析完成后,您可以在Azure DevOps的构建摘要中查看分析报告的摘要,或者直接在SonarCloud中查看项目的分析结果。
步骤5:阻止不合格的代码合并
您可以配置Azure DevOps以阻止拉取请求合并,除非SonarCloud的质量门检查通过。
YAML
# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: 'sonar-scanner-msbuild/CSharpProject/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- checkout: self
fetchDepth: 0
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: SonarCloudPrepare@2
inputs:
SonarCloud: 'SonarCloud'
organization: 'fiayuifzrtlyudavoccb5hf5pdveliwhmozcaheibqtjoogbywuq'
scannerMode: 'MSBuild'
projectKey: 'PrivateProgram_SonarExamples'
projectName: 'SonarExamples'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
# Run Code Analysis task
- task: SonarQubeAnalyze@6
# Publish Quality Gate Result task
- task: SonarQubePublish@6
inputs:
pollingTimeoutSec: '300'
结果
通过将SonarCloud集成到Azure DevOps的CI/CD流程中,您可以自动化技术债务的测量,包括代码语义、测试覆盖率、漏洞等,并在问题合并之前发现它们。这不仅提高了代码质量,还加快了开发周期。