基于Win10极简SonarQube C#代码质量分析

博客有些好些时间未更新了,这几个月的时间里,离开了实习的公司、大学毕了业、来了新公司、转了户口,有点忙,最近总算稍微闲下来了,打算重新拾起博客,坚持写下去。

言归正转,什么是SonarQube ?

 SonarQube(曾用名Sonar(声纳))是一个优秀的开源代码分析系统管理系统,支持超过25+种编程语言,对.Net Core当然也是支持的。

最近公司做的项目是用的Framework开发的,久仰SonarQube大名,今天在本地搭建SonarQube之后对项目进行分析,效果惊人。揪出了系统中潜藏的若干Bug,功不可没,所以在这里搭建的方法分享给大家,希望对大家有所帮助。

基于Win10极简SonarQube C#代码质量分析_第1张图片

在网上找一些资料,关于Sonar的介绍在Linux平台下较多,所以我下面的介绍主要是基于Win平台的,其他平台大同小异。

安装Sonar主要有以下几步:

安装JAVA SDK

Sonar是一款基于JAVA开发的工具,安装JAVA SDK的过程在此不再叙述,建议安装好之后配置好JAVA_HOME的环境变量,以下是下载地址。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

安装SonarQube

首先到官网下载安装包,值得注意的是,该安装包是不分平台的,下载下来之后,选择Windows的文件夹中StartSonar.bat文件运行即可。

https://www.sonarqube.org/#downloads

基于Win10极简SonarQube C#代码质量分析_第2张图片

如果java环境安装正常,Sonar应该是能正常启动的,启动后浏览。启动效果如下:

基于Win10极简SonarQube C#代码质量分析_第3张图片

刚刚装好是英文的,我是安装了中文包,如何安装中文包,后面会叙述。

配置Sonar

我们需要对Sonar进行简单配置,使其能连接上MySQL数据库。

打开MySQL数据库,执行以下指令。

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;

该操作是为Sonar创建数据库并添加该数据库的用户,数据库名称是sonar ,用户名是sonar,密码是sonar。

基于Win10极简SonarQube C#代码质量分析_第4张图片

打开sonar.properties将内容替换成如下:

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

其中sonar.jbc.url是mysql数据库的连接字符串。

重新启动Sonar(关闭运行startsonar.bat控制台,并在任务管理器中关闭所有和java有关的进程,重新运行startsonor.bat),使用管理员账户登录(admin/admin)。

登录之后,安装中文包,如下,安装之后需要点击重新启动,启动之后,Sonar就变成中文的了。

基于Win10极简SonarQube C#代码质量分析_第5张图片

 

Sonar-Scanner for MSBuild安装与配置

下载并解压SonarQube Scanner for MSBuild,它是C# Framework的分析插件。

https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/4.3.1.1372/sonar-scanner-msbuild-4.3.1.1372-net46.zip

解压之后,设置SonarQube Scanner for MSBuild的环境变量,如我的解压路径是:C:\MyWorkSpace\Tools\sonar-scanner-msbuild-4.3.1.1372-net46,则把该路径添加到path下:

基于Win10极简SonarQube C#代码质量分析_第6张图片

 

修改SonarQube.Analysis.xml文件

要修改的地方只是关于sonarQube服务器的一些配置,关于服务器URL、USER、PASSWORD等,修改如下:

xml version="1.0" encoding="utf-8" ?>

<SonarQubeAnalysisProperties  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sonarsource.com/msbuild/integration/2015/1">

  
  <Property Name="sonar.host.url">http://localhost:9000Property>

  <Property Name="sonar.login">adminProperty>
  <Property Name="sonar.password">adminProperty>
 

  
  
  <Property Name="sonar.jdbc.url">jdbc:mysql://localhost:3306/sonar?useUnicode=true;characterEncoding=utf8;rewriteBatchedStatements=true;useConfigs=maxPerformance;useSSL=falseProperty>
  <Property Name="sonar.jdbc.username">sonarProperty>
  <Property Name="sonar.jdbc.password">sonarProperty>
 

SonarQubeAnalysisProperties>

接下来,重要的一步,找到你电脑中的MSBuild.exe并添加到path环境变量,便于后面在命令行中调用MSBuild,我的是在vs 2017的安装目录下

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64

基于Win10极简SonarQube C#代码质量分析_第7张图片

 

C# 项目分析

CMD进入C#项目所在的根目录,依此执行以下三条命令。

MSBuild.SonarQube.Runner.exe begin /k:"xxh.xzc.api" /n:"xhh.xzc.api" /v:"1.0"
MSBuild.exe /t:Rebuild
MSBuild.SonarQube.Runner.exe end

 

参数说明:

/key(简写k):对应projectKey即项目的唯一代码,如两套源代码使用同一个projectKey那扫描的结果将混在一起,所以一个项目需要有一个单独的projectKey

/name(简写n):对应projectName即项目的名称,为项目的一个显示的名称,建立使用完整的项目名称

/version(简写v):对应projectVersion即项目的版本,项目在不同的时期版本也是不一样的,如果方便,可以在sonarQube的服务器中查看到不同的版本代码其中问题的变化

三条命令分别是分析的前期准备,MSBuild编译,将报告上传给SonarQube。

 

查看分析结果

基于Win10极简SonarQube C#代码质量分析_第8张图片

最后,进入http://localhost:9000/projects  查看分析结果吧,惊喜不惊喜?

界面中功能强大,很多认为绝对发现不了的Bug都展现出来了,还可以查看单元测试的覆盖率,相信如果坚持使用该工具,一定会对编码习惯有很大帮助。

快快搭建一个SonarQube看看自己的代码有没有BUG!! 大笑

 

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

 

参考文献:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild

你可能感兴趣的:(基于Win10极简SonarQube C#代码质量分析)