1. 概述
Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。
1.不遵循代码标准
- sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
2.潜在的缺陷
- sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
3.糟糕的复杂度分布
- 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
4.重复
- 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。
5.注释不足或者过多
- 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6.缺乏单元测试
- sonar可以很方便地统计并展示单元测试覆盖率。
7.糟糕的设计
- 通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合
2. 安装部署
1.下载镜像
docker pull sonarqube:7.6-community
2.运行镜像
docker run -d -p 9000:9000 --name sonarqube sonarqube:7.6-community
3.创建和复制文件
cd /opt/sonarqube docker cp sonarqube:/opt/sonarqube/conf . docker cp sonarqube:/opt/sonarqube/extensions . chmod -R 777 extensions mkdir logs chmod -R 777 logs mkdir data chmod -R 777 data
4.创建启动命令start.sh
vim start.sh
GITLAB_DIR=/opt/sonarqube docker stop sonarqube docker rm sonarqube docker run -d --name sonarqube \ -p 9000:9000 \ -v ${GITLAB_DIR}/conf:/opt/sonarqube/conf \ -v ${GITLAB_DIR}/data:/opt/sonarqube/data \ -v ${GITLAB_DIR}/logs:/opt/sonarqube/logs \ -v ${GITLAB_DIR}/extensions:/opt/sonarqube/extensions \ -e SONARQUBE_JDBC_USERNAME=root \ -e SONARQUBE_JDBC_PASSWORD=1q2w3e4r \ -e SONARQUBE_JDBC_URL="jdbc:mysql://192.168.28.131:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \ sonarqube:7.6-community SONARQUBE_JDBC_USERNAME 数据库用户名 SONARQUBE_JDBC_PASSWORD 数据库密码 SONARQUBE_JDBC_URL 数据库url
5.创建数据库
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci
6.启动
sh start.sh
7.登录
http://192.168.28.134:9000
默认用户名密码:admin/admin
8.汉化
- 页面上找到Administration > Marketplace,在搜索框中输入chinese
- 出现一个Chinese Pack,点击右侧的install按钮。
- 安装成功后,会提示重启 SonarQube 服务器。
3. 静态代码测试
mvn clean compile sonar:sonar -Dsonar.host.url=http://192.168.28.134:9000
- sonar:sonar 执行sonar检查
- -Dsonar.host.url 指定sonarQube的地址