Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量

前言

现如今大家越来越认识到质量前移的重要性。如果一开始就写出优质的、经过测试的代码,那么后面的测试阶段将会减少很多不必要的时间。如果开发人员迫于业务压力,一味追求项目开发进度,往往会容易形成大量的“烂代码”。一般的烂代码体现在逻辑混乱、复杂度高、易读性差、没有单元测试和缺乏必要的注释。如果把这样的“烂代码”编译交付测试团队,那么测试人员势必会发现很多低级缺陷,甚至连冒烟测试都无法通过,这样势必会浪费很多时间,延误测试进度。所以,回到开始,为何不一开始就是写出优质代码呢?

代码评审

我们都知道很多公司都在推行 DevOps、推行测试前移,就是让测试人员尽早参与研发过程中来,有很多团队推行了测试人员参与代码评审流程,但是往往效果不是很理想,原因通常是由于测试人员代码能力有限,不熟悉业务代码逻辑,当然也就无法发现正确问题,这样也就而导致测试团队的代码评审变成了摆设。那么问题来了,有什么办法解决这种状况吗?如果测试人员在执行代码评审的时候可以借助一些代码扫描工具,然后针对这些扫描出的问题再进一步分析,这样轻易地可以发现一些真正代码问题。

SonarQube简介

在实际的项目中,我们一般使用的多种编程语言,那么我们需要针对多种编程语言的一种扫描工具。目前主流的是使用 SonarQube 代码质量分析平台。

SonarQube是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测, 如 Java、Python、Groovy、C#、C、C++等几十种编程语言的检测。

它主要的核心价值体现在如下几个方面:

  • 检查代码是否遵循编程标准:如命名规范,编写的规范等。
  • 检查设计存在的潜在缺陷:SonarQube通过插件Findbugs、Checkstyle等工具检测代码存在的缺陷。
  • 检测代码的重复代码量:SonarQube可以展示项目中存在大量复制粘贴的代码。
  • 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
  • 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。

SonarQube平台由4个组件组成: Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量_02

  1. 一个SonarQube服务器包含三个子进程(web服务(界面管理)、搜索服务、计算引擎服务(写入数据库))
  2. 一个SonarQube数据库配置SonarQube服务
  3. 多个SonarQube插件位于解压目录extensions\plugins目录
  4. 一个或者多个SonarQube Scanners 用于分析特定的项目

SonarQube主要工作流程:

Visual Studio 中使用 SonarLint 分析 C# 代码_测试人员_03

  1. 开发人员使用开发工具(IDE)上传代码到 GitLab (源代码管理器);
  2. Jenkins(CI系统)SCM自动拉取代码到到编译服务器;
  3. SonarScanners 扫描该代码检查质量,将分析结果推送到 SonarQube 平台,进而持久化数据库存储;
  4. 开发&测试人员可以使用IDE插件 SonarLint 来同步 SonarQube 结果(java和js版本等)并可以实时在线分析分析
  5. 领导可以通过 Web 访问 SonarQube 质量平台,项目代码质量趋势一目了然

使用 SonarLint

SonarQube 除了搭配 Jenlins 持续扫描代码质量外,我们还可以在IDE中使用 SonarLint ,让开发在开发阶段就及早发现可能存在的代码问题。

演示环境

  • Windows 10
  • SonarQube 7.4
  • Visual Studio Enterprise 2017
  • SonarLint 4.8.0
  • .NET Framework 4.6.1

安裝 SonarLint

VisualStudio 中 【工具】 - > 【扩展和更新】

Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量_04

选择 【联机】 - > 输入【SonarLint】- > 选择【SonarLint for Visual studio】下载 Visual Studio 中使用 SonarLint 分析 C# 代码_Server_05

Visual Studio 中使用 SonarLint 分析 C# 代码_测试人员_06

Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量_07

重启 IDE

Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量_08

Visual Studio 中使用 SonarLint 分析 C# 代码_Server_09

连接 SonarQube Server

先打开我们本地的项目 打开【分析】 - > 【管理 SonarQube 连接】

Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量_10

Visual Studio 中使用 SonarLint 分析 C# 代码_测试人员_11

按【Connect...】连接 SonarQube Server

Visual Studio 中使用 SonarLint 分析 C# 代码_Server_12

输入 SonarQube Server 地址以及大家的用户名密码

Visual Studio 中使用 SonarLint 分析 C# 代码_Server_13

连接上 SonarQube Server后,会出现目前 server 所有的项目,选择当前本地项目需要绑定的项目。

绑定后会从 server 上下载 该项目分析结果和规则到本机。

Visual Studio 中使用 SonarLint 分析 C# 代码_Server_14

自动分析

SonarLint 可以自动在 IDE 上检查出目前 server 上分析出的问题。

Visual Studio 中使用 SonarLint 分析 C# 代码_代码质量_15

点击左侧的小灯泡,SonarLint 会解释该规则检查的理由。

Visual Studio 中使用 SonarLint 分析 C# 代码_测试人员_16

手动分析

Visual Studio 中使用 SonarLint 分析 C# 代码_Server_17

SonarLint 可手动检查整个本地项目和当前的类

点击【分析】- > 【针对解决方案】or 【当前类】 SonarLint 会将所有的检查到的问题显示在IDE下方。

Visual Studio 中使用 SonarLint 分析 C# 代码_测试人员_18