利用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流程中,您可以自动化技术债务的测量,包括代码语义、测试覆盖率、漏洞等,并在问题合并之前发现它们。这不仅提高了代码质量,还加快了开发周期。

posted @ 2024-07-02 07:16  初久的私房菜  阅读(11)  评论(0编辑  收藏  举报
作者:初久的私房菜
好好学习,天天向上
返回顶部小火箭
好友榜:
如果愿意,把你的博客地址放这里
张弛:https://blog.zhangchi.fun/