Sonar (SonarQube)是一个开源平台,用于管理源代码的质量Sonar 不仅是一个质量数据报告工具,更是代码质量管理平台mysql
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。linux
Sonar能够从如下七个维度检测代码质量,而做为开发人员至少须要处理前5种代码质量问题。程序员
sonar能够经过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。web
文件、类、方法等,若是复杂度太高将难以改变,这会使得开发人员 难以理解它们, 且若是没有自动化的单元测试,对于程sql
序中的任何组件的改变都将可能致使须要全面的回归测试。shell
显然程序中包含大量复制粘贴的代码是质量低下的,sonar能够展现 源码中重复严重的地方。数据库
没有注释将使代码可读性变差,特别是当不可避免地出现人员变更 时,程序的可读性将大幅降低 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。macos
sonar能够很方便地统计并展现单元测试覆盖率。编程
经过sonar能够找出循环,展现包与包、类与类之间的相互依赖关系,能够检测自定义的架构规则 经过sonar能够管理第三方segmentfault
的jar包,能够利用LCOM4检测单个任务规则的应用状况, 检测藕合。
我的使用以后认为 : sonarQube的优点以下(相比于阿里编码规约这种市面上常见相似软件):
基本上经过界面就能够对本身项目的代码情况一目了然
好比 :
可能致使空指针异常的问题 (对象在进行使用前没有加空的判断)
可能致使内存泄漏的问题, 在try catch 块里面,直接使用e.printStackTrace()将堆栈信息打印到内存的
可能致使的漏洞 : 成员变量使用public定义的
还有诸如 : 流等未关闭或者是非正常关闭都可以检测出来!
功能很是强大!!
下载sonalqube(下载社区版,是开源的),
我下载的是sonarqube-7.2.1,由于最新版7.9.1须要jdk11支持
并解压,解压完以后的目录以下 :
linux、Mac sh sonar.sh start
启动
windows 双击StartSonar.bat
启动
若是能访问代表安装成功
版本要求:
在conf目录下的sonar.properties文件下:
有这样一行配置 :
#----- MySQL >=5.6 && < 8.0
为sonarqube 建立一个数据库
create database sonar; -- 建立数据库
建立sonarqube用户并进行受权
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; -- 建立用户并设置密码 -- username 为建立的用户名 -- host 为对应的主机地址,本地就是localhost -- password 为设置的密码 GRANT ALL ON *.* TO 'username'@'localhost'; -- 对用户进行受权操做
修改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
在以前弹出的cmd窗口执行ctrl + c,
弹出来的提示选择Y,退出SonarQube服务
此次由于要进行数据库的初始化操做,因此须要的时间可能稍微久一点
登陆
点击界面右上角的登陆按钮, 进行登陆 :
初始的帐户名 : admin
初始的密码 : admin
附 : 一些关键配置的修改,如 主机地址,context,端口号等:
一般状况下使用默认的配置便可!
文件 /conf/sonar.properties
#sonar.web.host=0.0.0.0 #sonar.web.context= #sonar.web.port=9000
点击 导航栏的 Administration, 选择Marketplace
搜索 Chinese pack, 点击install进行安装
安装成功后, 重启 SonarQube !
使用maven的方式进行分析
<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 服务器地址。
到项目所在的文件路径下:
使用命令提示符或者是power shell执行 以下命令:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar
出现: BUILD SUCCESS 标识以后
刷新界面查看 :
强制参数:
Server
sonar.host.url http://localhost:9000
Project Configuration
sonar.projectKey Maven <groupId>:<artifactId>
sonar.sources Maven 默认的源码路径
能够配置的参数:
Project identity
sonar.projectName 项目名称
sonar.projectversion 项目版本
Authentication
sonar.login 分析该项目的用户名称
sonar.password 分析该项目的用户密码
SonarQube Web管理者经过配置和设置如下参数值对项目源代码进行:
复杂度、覆盖率、文档、重复、问题、可维护性、可靠性、安全性、大小等约束和规范。
sonar中的质量阈管理如下内容。
复杂度 复杂度 复杂度/类 复杂度/文件 复杂度/方法 覆盖率 分支覆盖 集成测试的新分支覆盖 新代码的分支覆盖率 覆盖率 新集成测试覆盖 新覆盖率 集成测试分支覆盖 集成测试覆盖 集成测试覆盖行 集成测试未覆盖分支 集成测试未覆盖行 代码覆盖率 集成测试的新行覆盖 新代码覆盖率 代码行 集成测试的新行覆盖 覆盖的新代码 整体分支覆盖率 整体新分支覆盖率 整体覆盖率 整体新覆盖率 整体代码覆盖率 整体新代码覆盖率 整体覆盖的新行数 整体未覆盖分支 整体未覆盖的新分支 整体未覆盖代码 整体未覆盖新行数 单元测试忽略数 未覆盖分支 集成测试未覆盖的新分支 未覆盖新分支 未覆盖的代码 集成测试未覆盖的行 未覆盖的新代码 单元测试持续时间 单元测试错误数 单元测试失败数 单元测试成功 (%) 单元测试数 文档 注释行 注释 (%) 公共API 公共注释的API (%) 公共未注释的API 重复 重复块 重复文件 重复行 重复行(%) 问题 阻断违规 确认问题 严重违规 误判问题 提示违规 违规 主要违规 次要违规 新阻断违规 新严重违规 新提示违规 新违规 新主要违规 新次要违规 开启问题 重开问题 不修复的问题 可维护性 新代码的技术债务 坏味道 达到可维护性A级所需的工做 新增坏味道 技术债务 技术债务比率 新代码技术债务比率 Management Burned budget Business value Team size 可靠性 Bugs 新增Bugs 可靠性修复工做 新代码的可靠性修复工做 安全性 新增漏洞 安全修复工做 新代码的安全修复工做 漏洞 大小 类 目录 文件 方法 生成的行数 生成的代码行数 行数 代码行数 项目 语句