SonarQube是一个开源平台,用于管理代码的质量
主要从以下七个维度检测代码质量
- 不遵循代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。 - 潜在的缺陷
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。 - 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。 - 重复率
检查重复的代码块,避免大量的复制粘贴。 - 注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降。而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。 - 单元测试覆盖率
sonar可以很方便地统计并展示单元测试覆盖率。 - 糟糕的设计
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则。通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。
Docker快速安装
使用安装包还需要安装并配置数据库环境,而且SonarQube 8.0以上版本是不支持mysql的,所以选择使用Docker快速安装1
docker pull sonarqube
镜像安装完成后,命名并在9000端口启动1
docker run -d --name sonarqube -p 9000:9000 sonarqube
9000是默认端口,其他端口启动的话在使用SonarScanner时需要修改配置文件
访问9000端口查看是否启动成功,首次启动成功后,后续使用时1
2
3
4// 启动
docker start sonarqube
// 关闭
docker stop sonarqube
安装SonarScanner
SonarScanner用于扫描项目代码,安装比较简单,官网下载安装包解压即可,‘点击安装’
一般不需要修改配置,要修改比如默认端口号之类的配置的话,编辑
conf/sonar-scanner.properties
,按官网说明修改即可。
解压完成后,需要配置环境变量1
2export SONAR_RUNNER_HOME=/your path/SonarQube/sonar-scanner
export PATH=$PATH:$SONAR_RUNNER_HOME/bin
项目配置
扫描项目代码时需要在代码根目录下创建sonar-project.properties
文件,具体见官网,下面简单介绍一下我用到的几个1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 项目ID,唯一
sonar.projectKey=siemens
# 平台显示的项目名
sonar.projectName=siemens
# 版本号
sonar.projectVersion=1.0
# 路径
sonar.sources=./
# 编程语言
sonar.language=js,ts
# 编码
sonar.sourceEncoding=UTF-8
# 测试覆盖率排除的文件
sonar.coverage.exclusions=**/*.spec.ts
# 代码扫描排除的文件
sonar.exclusions=**/*.spec.ts,**/*.scss,e2e/**/*.*
# 测试报告路径
sonar.typescript.lcov.reportPaths=coverage/lcov.info
配置好之后在项目根目录执行1
sonar-scanner
成功后访问9000端口查看报告即可