一 . SonarQube代码质量检查工具简介

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量

Sonar 不只是一个质量数据报告工具,更是代码质量管理平台

支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。

Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

  1. 不遵循代码标准

  2. sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。

  3. 潜在的缺陷

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。

  4. 糟糕的复杂度分布

    文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程

    序中的任何组件的改变都将可能导致需要全面的回归测试。

  5. 重复

    显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。

  6. 注释不足或者过多

    没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

  7. 缺乏单元测试

    sonar可以很方便地统计并展示单元测试覆盖率。

  8. 糟糕的设计

    通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方

    的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。

为什么要选择sonarQube?

个人使用之后认为 : sonarQube的优势如下(相比于阿里编码规约这种市面上常见类似软件):

  1. 更加优秀的图形化界面

    基本上通过界面就可以对自己项目的代码状况一目了然

  2. 可以查询出其它软件难以定位到的问题

    比如 :

    可能导致空指针异常的问题 (对象在进行使用前没有加空的判断)

    可能导致内存泄漏的问题, 在try catch 块里面,直接使用e.printStackTrace()将堆栈信息打印到内存的

    可能导致的漏洞 : 成员变量使用public定义的

    还有诸如 : 流等未关闭或者是非正常关闭都能够检测出来!

    功能非常强大!!

二. 安装:

2.1 安装SonarQube web server

  1. 首先确保安装了jdk1.8 +

  2. 到此链接 https://www.sonarqube.org/downloads/

下载sonalqube(下载社区版,是开源的),

我下载的是sonarqube-7.2.1,因为最新版7.9.1需要jdk11支持

并解压,解压完之后的目录如下 :

  1. 到解压目录的bin\macosx-universal-64(对应系统)目录下:

linux、Mac sh sonar.sh start启动

windows 双击StartSonar.bat 启动

  1. 到浏览器界面,输入 : http://localhost:9000

    如果能访问表明安装成功

2.2 安装数据库

  1. 版本要求:

    在conf目录下的sonar.properties文件下:

    有这样一行配置 :

    #----- MySQL >=5.6 && < 8.0
  2. 为sonarqube 创建一个数据库

create database sonar;
-- 创建数据库
  1. 创建sonarqube用户并进行授权
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 创建用户并设置密码
-- username 为创建的用户名
-- host 为对应的主机地址,本地就是localhost
-- password 为设置的密码
GRANT ALL ON *.* TO 'username'@'localhost';
-- 对用户进行授权操作
  1. 修改SonarQube配置文件,添加Mysql相关配置
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
# 刚刚创建的sonarQube用户
sonar.jdbc.username=sonar
# 创建用户对应的密码
sonar.jdbc.password=sonar
# 设置编码格式为UTF-8
sonar.sorceEncoding=UTF-8
# sonar登陆用户名
sonar.login=admin
# sonar登陆密码
sonar.password=admin

2.3 重新启动服务端

  1. 退出 SonarQube 服务端

在之前弹出的cmd窗口执行ctrl + c,

弹出来的提示选择Y,退出SonarQube服务

  1. 双击StartSonar.bat文件, 重新启动SonarQube

这次因为要进行数据库的初始化操作,所以需要的时间可能稍微久一点

  1. 启动成功后,浏览器输入 : http://localhost:9000 进入界面

  2. 登录

    点击界面右上角的登录按钮, 进行登录 :

    初始的账户名 : admin

    初始的密码 : admin

    附 : 一些关键配置的修改,如 主机地址,context,端口号等:

    通常情况下使用默认的配置即可!

    文件 /conf/sonar.properties

    #sonar.web.host=0.0.0.0
    #sonar.web.context=
    #sonar.web.port=9000

三. 使用

3.1. 安装必要的插件 (汉化包举例)

点击 导航栏的 Administration, 选择Marketplace

搜索 Chinese pack, 点击install进行安装

安装成功后, 重启 SonarQube !

3.2. 开始分析项目代码源代码

使用maven的方式进行分析

3.2.1 编辑maven 的settings.xml文件
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://loaclhost:9000</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>

其中sonar.host.url 值就是 上文启动的sonar 服务器地址。

3.2.2 对maven项目进行分析

到项目所在的文件路径下:

使用命令提示符或者是power shell执行 如下命令:

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar

出现: BUILD SUCCESS 标识之后

刷新界面查看 :

3.3 配置分析参数

强制参数:

  1. Server

    sonar.host.url http://localhost:9000
  2. Project Configuration

    sonar.projectKey Maven :

    sonar.sources Maven 默认的源码路径

可以配置的参数:

  1. Project identity

    sonar.projectName 项目名称

    sonar.projectversion 项目版本

  2. Authentication

    sonar.login 分析该项目的用户名称

    sonar.password 分析该项目的用户密码

3.4. 程序员用户使用说明

SonarQube Web管理者通过配置和设置以下参数值对项目源代码进行:

复杂度、覆盖率、文档、重复、问题、可维护性、可靠性、安全性、大小等约束和规范。

sonar中的质量阈管理以下内容。

复杂度
复杂度
复杂度/类
复杂度/文件
复杂度/方法
覆盖率
分支覆盖
集成测试的新分支覆盖
新代码的分支覆盖率
覆盖率
新集成测试覆盖
新覆盖率
集成测试分支覆盖
集成测试覆盖
集成测试覆盖行
集成测试未覆盖分支
集成测试未覆盖行
代码覆盖率
集成测试的新行覆盖
新代码覆盖率
代码行
集成测试的新行覆盖
覆盖的新代码
总体分支覆盖率
总体新分支覆盖率
总体覆盖率
总体新覆盖率
总体代码覆盖率
总体新代码覆盖率
总体覆盖的新行数
总体未覆盖分支
总体未覆盖的新分支
总体未覆盖代码
总体未覆盖新行数
单元测试忽略数
未覆盖分支
集成测试未覆盖的新分支
未覆盖新分支
未覆盖的代码
集成测试未覆盖的行
未覆盖的新代码
单元测试持续时间
单元测试错误数
单元测试失败数
单元测试成功 (%)
单元测试数
文档
注释行
注释 (%)
公共API
公共注释的API (%)
公共未注释的API
重复
重复块
重复文件
重复行
重复行(%)
问题
阻断违规
确认问题
严重违规
误判问题
提示违规
违规
主要违规
次要违规
新阻断违规
新严重违规
新提示违规
新违规
新主要违规
新次要违规
开启问题
重开问题
不修复的问题
可维护性
新代码的技术债务
坏味道
达到可维护性A级所需的工作
新增坏味道
技术债务
技术债务比率
新代码技术债务比率
Management
Burned budget
Business value
Team size
可靠性
Bugs
新增Bugs
可靠性修复工作
新代码的可靠性修复工作
安全性
新增漏洞
安全修复工作
新代码的安全修复工作
漏洞
大小

目录
文件
方法
生成的行数
生成的代码行数
行数
代码行数
项目
语句

[sonarqube的使用] sonarqube安装的更多相关文章

  1. SonarQube代码质量管理工具安装与使用(sonarqube5.1.2 + sonar-runner-dist-2.4 + MySQL5.x)

    1. SonarQube安装(sonarqube5.1.2 + sonar-runner-dist-2.4) 1.1 前提条件 1) 已安装Java环境(version:1.7+) 2) 已安装MyS ...

  2. SonarQube代码质量管理平台安装与配置

    1.安装说明 操作用户:root 软件下载目录:/root/opt 无root权限时,放到自定义目录即可 ================ 2.预置条件 1.需要JDK1.6+支持: 2.需要Mysq ...

  3. .net持续集成sonarqube篇之 sonarqube与jenkins集成(插件模式)

    系列目录 Jenkins通过插件集成Sonarqube 通过上一节我们了解了如何配置以使jenkins ci环境中可以执行sonarqube构建,其实Sonarqube官方也提供了jenkins插件以 ...

  4. SonarQube代码质量管理平台安装与使用

    Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaS ...

  5. SonarQube代码质量管理平台安装与使用--转载

    原文:http://blog.csdn.net/hunterno4/article/details/11687269 Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量, ...

  6. Linux中 SonarQube代码质量管理平台安装

    SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube安装 1.环境准备 (1)sonarQube 下载地址https://www.sonarqu ...

  7. SonarQube 7.x 的安装使用 + 集成Maven 使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 下载地址:http://www.sonarqube.org/do ...

  8. .net持续集成sonarqube篇之sonarqube安装与基本配置

    系列目录 Sonarqube下载与安装 Sonarqube下载地址是:https://www.sonarqube.org/downloads/下载版本有两个,一个是长期支持版,另一个是最新版,此处安装 ...

  9. SonarQube + Jenkins代码审查环境安装文档 v1.2

    1. 安装SonarQube 1.1. 下载 下载地址:https://www.sonarqube.org/downloads/ 本次使用安装包为:sonarqube-7.4.zip 需要提前准备jd ...

随机推荐

  1. React 现代化测试

    测试的动机 测试用例的书写是一个风险驱动的行为, 每当收到 Bug 报告时, 先写一个单元测试来暴露这个 Bug, 在日后的代码提交中, 若该测试用例是通过的, 开发者就能更为自信地确保程序不会再次出 ...

  2. 基于STM32F429和Cube的ov2640程序

    1.ov2640和DCMI介绍 OV2640 是 OV(OmniVision)公司生产的一颗 1/4 寸的 CMOS UXGA(1632*1232)图 像传感器.该传感器体积小.工作电压低,提供单片 ...

  3. 去掉input框的数字箭头

    input::-webkit-outer-spin-button,input::-webkit-inner-spin-button { -webkit-appearance: none;}input[ ...

  4. Spring学习之旅(九)--SpringMVC高级技术

    文件上传 在 Web 应用中,允许用户上传文件是很常见的需求.文件上传通常是采用 multipart 格式,而 DispatcherServlet 并没有任何解析 multipart 请求数据的功能, ...

  5. Android自动化测试探索(五)代码覆盖率统计

    Android 代码覆盖率统计 本周开始准备统计Android自动化用例的代码覆盖率,将最终使用的方法记录下来. 覆盖率监测的原理 覆盖率监测的原理跟iOS上的原理差不多,大致的思路参考下吧, iOS ...

  6. 理解Js的parseInt(转)

    parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字:如果不是,该方法将返回 NaN,不再继续执行其他操作.但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测 ...

  7. cogs 1377. [NOI2011] NOI嘉年华 (dp

    题意:给你n个活动的起止时间,要你从中选一些活动在2个会场安排(不能有两个活动在两个会场同时进行),使活动较少的会场活动数最大,以及在某个活动必须选择的前提下,求该答案. 思路:由于n很小,时间很大, ...

  8. CodeForces -Codeforces Round #496 (Div. 3) E2. Median on Segments (General Case Edition)

    参考:http://www.cnblogs.com/widsom/p/9290269.html 传送门:http://codeforces.com/contest/1005/problem/E2 题意 ...

  9. “玲珑杯”ACM比赛 Round #18 1147 - 最后你还是AK了(思维,边的贡献)

    题目链接:http://www.ifrog.cc/acm/problem/1147 题解:这题很容易想到的是边的贡献也就是每条边最多被取到几次,和点的贡献类似,那些加边只要加在边贡献大的边上就行.然后 ...

  10. selenium爬虫

    Web自动化测试工具,可运行在浏览器,根据指令操作浏览器,只是工具,必须与第三方浏览器结合使用,相比于之前学的爬虫只是慢了一点而已.而且这种方法爬取的东西不用在意时候ajax动态加载等反爬机制.因此找 ...