一,引言

  对于今天所分析的 SonarQube,首先我们得了解什么是 SonarQube ? SonarQube 又能帮我们做什么?我们是否在项目开发的过程中遇到人为 Review 代码审核规范?带着以上问题,开始今天的分析内容吧 !!!

1)什么是 SonarQube ?

SonarQube 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码问题。

2)SonarQube 能帮助我们做什么?

它可以与我们现有的工作流程集成,以实现跨项目分支和拉取请求的持续代码检查。

SonarQube 与 Azure DevOps 的集成允许我们在 Azure DevOps 存储库中维护代码质量和安全性。同时支持 Azure DevOps Server (本地)和 Azure DevOps Services (云端)。在 Azure Pipelines 作业中运行的 SonarQube 扩展可以自动检测正在构建的分支或拉取请求。

重点:SonarQube 也有版本的区分

  SonarQube Cloud:Saas 化的产品,托管在 AWS 上的,无需担心安装和维护

  SonarQube Server:SonarQube 服务和数据库都是需要我们安装到自己的服务器或者云端服务器,这就需要我们自行维护

两种产品基本上都涵盖了支持多种语言的代码分析,共享相同的底层静态分析引擎来捕获错误,漏洞等。那么让我们正式开始今天的内容

--------------------Azure DevOps 系列--------------------

1,Azure DevOps(一)基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译

2,Azure DevOps(二)Azure Pipeline 集成 SonarQube 维护代码质量和安全性

二,正文

1,创建 SonarQube 项目

登录 sonarCoud.io 选择 Azure DevOps 登录

点击 “+” 选择 “Analyze new project” 创建新项目

选择本次实验的代码项目,点击 “Set Up“ 进行设置

2,配置与 Azure Pipeline 的集成

点击 ”With Azure DevOps Pipelines“ 开始配置

首先需要在 Visual Studio Marketplace 获取、安装 SonarCloud 扩展

选择 "Pipelines =》“”Service connection" ,点击 “New service connection” 添加新的服务连接

在我们的新的 SonarCloud service connection 输入以下参数,参数也来源于刚刚在 sonarcloud 上创建好的项目

点击 “Verify and save”

接下来就是 Pipeline 中添加 Sonar 的 Task了,打开已经编辑好的 Azure Pipeline 的 YAML 文件

1)搜索添加 “Prepare Analysis Configuration”

输入以下参数

SonarCloud Service Endpoint 选择:“SonarCloud”

Organization 选择:“SonarQube_Test”

Project Key:“AllenMaster_NetCore_WPF_Sample”

Project Name:"NetCore_WPF_Sample"

点击 ”Add“

Project Key 可以在 SonarCloud 的项目配置中可以找到

2)搜索添加 “Run Code Analysis” 并添加 Task

3)搜索添加 “Publish Quality Gate Result” 并添加 Task

配置完成后,点击 ”Save“ 保存 YAML 文件,并将修改内容提交到 master 分支

最后,我们可以尝试运行 Pipeline,并在 SonarCloud 上查看代码分析报告

报告了主要有以下几个个指标

Bugs :代码中的重大 bug 错误,可能影响到项目的正常运行。

Code Smells:无关紧要的编码不规范问题,建议改正,点开详情可以看到规范的使用案例。

Vulnerabilities:项目中存在的漏洞,需要进行改正。

Coverage:项目的单元测试情况。

Duplications:项目中的重复代码块,建议重构。

三,结尾

  使用 sonarqube 分析项目代码代码的实验全部过程已经完成了。大家也多多操作练习,本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。

作者:Allen

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

Azure DevOps(二)Azure Pipeline 集成 SonarQube 维护代码质量和安全性的更多相关文章

  1. 在 k8s 中的 jenkins 集成 sonarqube 实现代码质量检查

    不乱于心,不困于情,不畏将来,不念过往,如此安好 --<不宠无惊过一生>丰子恺 概述 关于在 k8s 中安装 jenkins 和 sornarqube 可以查看下面的文章: 在 k8s 中 ...

  2. Azure DevOps (TFS) 与 Office 集成

    Azure DevOps Service 或者Azure DevOps Server 都支持与office工具集成,实现在office中完成工作项的导入导出和批量修改等功能.用户可以使用自己熟悉的of ...

  3. Azure DevOps (二) 实现Git仓库和钉钉的联动

    上一篇文章中我们提到了azure为我们提供了可自定的web hook,于是我打算实践一下 我假设了一种场景就是,我希望我可以及时收到团队中所有开发人员的代码提交记录,于是乎我想通过web hook打通 ...

  4. [Azure Devops] 使用 Azure Pipelines 实现 CI

    1. 什么是 Azure Pipelines Azure Pipelines 会自动构建和测试代码项目,以将其提供给其他人.它适用于任何语言或项目类型.Azure Pipelines 结合了持续集成 ...

  5. Azure DevOps to Azure AppServices

    Azure DevOps is a complete solution for software development, from planning to building to deploymen ...

  6. [Azure Devops] 使用 Azure Boards 管理工作

    1. 什么是 Azure Boards 通过 Azure Boards 网络服务,团队可以管理其软件项目.它提供了丰富的功能,包括 Scrum 和看板的本地支持.可定制的仪表板和集成报告.这些工具可以 ...

  7. [Azure Devops] 使用 Azure Repos 管理代码

    1. 什么是 Azure Repos Azure Repos 是一组版本控制工具,可用于管理代码.无论您的软件项目是大型项目还是小型项目,都应尽快使用版本控制. 版本控制系统是可帮助您跟踪随时间变化对 ...

  8. jenkins集成sonarQube实现代码质量检查

    1.sonarQube的简介 SonarQube是一款自动化代码审查工具,用于检测代码中的错误.漏洞和代码异味.它可以与你现有的工作流集成,以支持跨项目分支和拉取请求的连续代码检查. 其工作流程如下: ...

  9. 微软Azure DevOps 使用docker 持续集成 dotnet

    azure 环境设置 登录azure 地址 https://dev.azure.com/ 使用微软账号就可以进行登录. 点击右上角新建项目 项目信息,尽量用小写 创建项目 修改默认的dockerfil ...

  10. 持续集成高级篇之Jenkins Pipeline 集成sonarqube

    系列目录 前面章节中我们讲到了Sonarqube的使用,其实Sonarqube获取msbuild结果主要是执行三个命令,开始标记,执行msbuild,结束标记,这些都是命令,是非常容易集成到我们ci流 ...

随机推荐

  1. centos7.6 挂载镜像配置本地yum源

    镜像下载 http://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/ 配置本地yum源 1.安装Centos后默认的Yum源如下 [roo ...

  2. MyBatis-Plus插入值后返回主键

    LZ做练手设计的时候有这样一个订单需求,先插入订单表数据(t_order),再写入订单详情表(t_orderDetail),详情表需要有一个与t_order的外键约束 t_order ( oid    ...

  3. 2019.11.14 typeScript环境搭建

    当前环境为windows系统,在VSCode下搭建typeScript环境.在mac系统下同window系统一样,只是安装好ts环境后可能会报tsc命令不能使用的错误,这个时候需要找到tsc命令所在的 ...

  4. 转载C#文件下载的实现

    一.//TransmitFile实现下载     protected void Button1_Click(object sender, EventArgs e)    {        /*     ...

  5. 通过cpolar内网穿透 https://blog.csdn.net/CpolarLisa/article/details/128148698

    远程办公:通过cpolar内网穿透,远程桌面控制家里公司内网电脑_Cpolar Lisa的博客-CSDN博客 https://blog.csdn.net/CpolarLisa/article/deta ...

  6. react+ant-design-proTable 设置搜索条件中的默认值

    需求: 这个规则组ID的 下拉列表是通过向后端请求获取的,如何设置自定义渲染列表,并且默认有值 let groupLists = [] as any, //规则组列表 defaultValue = ' ...

  7. linux驱动设备分类

    1. linux驱动设备分类 1.1 字符设备 -c 1.没有文件系统 2.应用程序和驱动程序之间进行数据交互时,数据是以"字节"进行数据交换,并且是按照固定的顺序传输的,数据是实 ...

  8. Caused by: java.lang.NoSuchMethodError

    ERROR [localhost-startStop-1] - Context initialization failedorg.springframework.beans.factory.BeanD ...

  9. python内置函数map()

    map()函数 介绍 map()是python的一个内置函数,其作用是返回一个迭代器,该迭代器将function函数应用于可迭代对象的每个项,并产生结果. map函数的语法: map(function ...

  10. 取出预训练模型中间层的输出(pytorch)

    1 遍历子模块直接提取 对于简单的模型,可以采用直接遍历子模块的方法,取出相应name模块的输出,不对模型做任何改动.该方法的缺点在于,只能得到其子模块的输出,而对于使用nn.Sequensial() ...