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

言归正转,什么是SonarQube ?

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

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

在网上找一些资料,关于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

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

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

配置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。

打开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就变成中文的了。

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下:

修改SonarQube.Analysis.xml文件

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

<?xml version="1.0" encoding="utf-8" ?>
<!--This file defines properties which would be understood by the SonarQube Scanner for MSBuild, if not overridden (see below)By default the SonarScanner.MSBuild.exe picks-up a file named SonarQube.Analysis.xml in the folder itis located (if it exists). It is possible to use another properties file by using the /s:filePath.xml flagThe overriding strategy of property values is the following:- A project-specific property defined in the MSBuild *.*proj file (corresponding to a SonarQube module) can override:- A property defined in the command line (/d:propertyName=value) has which can override:- A property defined in the SonarQube.Analysis.xml configuration file [this file] which can override:- A property defined in the SonarQube User Interface at project level which can override:- A property defined in the SonarQube User Interface at global level which can't override anything.Note that the following properties cannot be set through an MSBuild project file or an SonarQube.Analysis.xml file:sonar.projectName, sonar.projectKey, sonar.projectVersionThe following flags need to be used to set their value: /n:[SonarQube Project Name] /k:[SonarQube Project Key] /v:[SonarQube Project Version]-->
<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:9000</Property><Property Name="sonar.login">admin</Property><Property Name="sonar.password">admin</Property><!-- Required only for versions of SonarQube prior to 5.2 --><Property Name="sonar.jdbc.url">jdbc:mysql://localhost:3306/sonar?useUnicode=true;characterEncoding=utf8;rewriteBatchedStatements=true;useConfigs=maxPerformance;useSSL=false</Property><Property Name="sonar.jdbc.username">sonar</Property><Property Name="sonar.jdbc.password">sonar</Property></SonarQubeAnalysisProperties>

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

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

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。

查看分析结果

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

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

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

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

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

转载于:https://www.cnblogs.com/CoderAyu/p/9416376.html

基于Win10极简SonarQube C#代码质量分析相关推荐

  1. 【代码审计】使用SonarQube进行代码质量分析管理

    2019独角兽企业重金招聘Python工程师标准>>> 在之前的开发中,代码的工作量化和质量化都是一个问题,随着近几年互联网行业的快速发展,代码已经可以来工作量化和质量化,今天我们来 ...

  2. sonar是一款静态代码质量分析工具

    sonar介绍 sonar是一款静态代码质量分析工具,支持Java.Python.PHP.JavaScript.CSS等25种以上的语言: 而且能够集成在IDE.Jenkins.Git等服务中,方便随 ...

  3. 基于Python的2013-2018全国城市空气质量分析

    基于Python的2013-2018全国城市空气质量分析 项目摘要 本项目使用pandas/numpy工具包对557424条空气质量数据进行导入及清洗,并使用matplotlib/seaborn/py ...

  4. 程序猿福音——sonarqube,代码质量检测一条龙服务,本文带你一探究竟

    目的 借助sonar平台分析和管理项目代码质量 sonar是一个用于代码质量管理的开放平台,sonar提供潜在bug.漏洞.代码重复率等指标,进而提升项目代码质量. sonar-scanner 命令 ...

  5. sonarqube怎么分析php项目,SonarQube代码质量分析平台介绍

    1.使用需求 随着互联网产品迭代越来越快,客户对产品的要求也越来越高,因此如何高质量的交付代码,及时地对代码质量进行分析并给出合理的解决方案就成为了当下必须要解决的一个问题.SonarQube 就是一 ...

  6. 2022爬取微博评论-极简40行代码

    思路:找到用户评论内容的位置,分析各个xhr里的不同,解析html,提取一页数据,通过循环判断拿到整条微博评论内容的数据,存储数据. 分析:网页源代码未找到评论相关的内容,打概率是通过异步加载的,把挡 ...

  7. 使用反射+注解封装一个基于Sqlite极简的android数据库框架

    数据库 背景 GreenDao 封装 创建数据库 对象映射表 数据库操作 扩展 总结 背景 目前市面上已经有比较好用的数据库框架,比如GreenDao和OrmLite,而且功能也很齐全,那为什么还要多 ...

  8. 推荐一款免费开源的代码质量分析工具

    文章目录 一.简介 二.环境安装 三.使用说明 四.其他报错 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position ...

  9. linux注册硬盘中断,基于Linux底层硬盘中断辅助代码的分析与设计

    #include #include "blk.h" #define MAJOR_NR 3 #define CMOS_READ(addr) ({outb_p(0x80|addr,0x ...

最新文章

  1. 【Python】全方面解读Python的格式化输出
  2. Android SDK tools,platform-tools,build-tools 区别
  3. ICBU可控文本生成技术详解
  4. mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...
  5. python实现dos攻击_dos攻击原理及攻击实例
  6. 基于mysql的springmvcjar_糊涂jar_SpringMVC+Spring+Mybatis项目实战[SSM/MySQL/AJAX/IDEA]_Java视频-51CTO学院...
  7. Python 分析到底是谁操纵《庆余年》上了热搜?
  8. web前端移动开发必须知道那些基础
  9. vrml行走和静止的人代码_CAE二次开发的核心不是代码
  10. 如何将c语言中的文件,急求如何将下列C语言程序数据存储到文件中?
  11. python基础之小数据池,is和==区别 编码问题
  12. XML与Java 解析方式
  13. 八皇后问题遗传算法c语言,用 遗传算法 解决八皇后问题
  14. 商淘多b2b2c商城系统怎么在个人电脑上安装_真正开源免费可商用的电子商务系统...
  15. 将 Word 转换为 Markdown格式【详细版本】2022.5.6
  16. 华三s3100v3时区配置_H3C S3100V3-SI交换机设置NTP时间
  17. 请去Windows应用商店查看有关xxx的更多信息 解决办法
  18. 微信小程序 修改 顶部电量 时间的颜色
  19. linux系统重启后找不到硬盘,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
  20. 解决域名在部分网络上打不开问题

热门文章

  1. linux下代码写错了怎么更改_AWS全面上市开源Linux发行版,专为容器操作系统设计...
  2. dom4j读取xml信息
  3. Linux系统关闭或重新启动主机的命令详解
  4. nginx屏蔽服务器类型信息,简单的禁止CURL 访问服务器nginx
  5. 怎么让e-charts折线图只有6个刻度_简单6步,打开图表定制之门
  6. 开源API网关Kong基本介绍和安装验证
  7. cmake指定gcc版本
  8. 《剑指offer》数字在排序数组中出现的次数
  9. 《剑指offer》链表中倒数第k个结点
  10. Django非常简单的安装方法