随着 SonarQube 上的项目越来越多,我们希望能够对这些项目按照一定的指标进行筛选,比如:
Size
为L
且Duplications
在5% - 10%
之间的项目Coverage
在60%
以上的项目
Sonar 界面中提供的筛选功能,只能按照指定的范围进行筛选,并且每个指标除了第一个和最后一个范围,中间的范围都是包含下面范围的。例如 Coverage
指标提供的范围是:
- ≥ 80%
- 70% - 80%
- 50% - 70%
- 30% - 50%
- < 30%
选择 50% - 70%
这个范围时,是包含下面 30% - 50%
和 < 30%
两个范围的,即只能过滤覆盖率在 70% 以下的项目,无法更加精细的进行过滤。
Sonar 中也没找到能够将项目总览信息导出的方式,所以就有了这样一个小工具:
sonar-exp
- 源码:https://github.com/AlphaHinex/go-toolkit/tree/main/sonar-exp
- Release 页面:https://github.com/AlphaHinex/go-toolkit/releases/tag/v2.3.0
- 预编译二进制包括:
sonar-exp_darwin_amd64
sonar-exp_darwin_arm64
sonar-exp_linux_amd64
sonar-exp_linux_arm64
sonar-exp_win_amd64.exe
导出工具使用了 Sonar Web API 中的两个内部接口:
并支持按项目名称或 key 进行过滤,项目数据已 csv 格式输出,可以重定向至文件,如:
$ ./sonar-exp -host http://localhost:9000 -t xxxxx -q ds-3 > ds3.csv
$ cat ds3.csv
Project,Bugs,Vulnerabilities,Hotspots Reviewed,Code Smells,Coverage,Duplications,Lines,NCLOC Language Distribution,Size,Duplications*Lines,Bug/Lines*1k%,Code Smells/Lines*1k%
ds-305-master,10,4,0.0,3396,0.0,20.0,60080,java=59046;xml=1034,M,12016.000000,0.166445,56.524635
ds-317-dev,78,11,0.0,4256,0.0,35.7,98510,java=97850;xml=660,M,35168.070312,0.791798,43.203735
Project | Bugs | Vulnerabilities | Hotspots Reviewed | Code Smells | Coverage | Duplications | Lines | NCLOC Language Distribution | Size | Duplications*Lines | Bug/Lines*1k% | Code Smells/Lines*1k% |
---|---|---|---|---|---|---|---|---|---|---|---|---|
ds-305-master | 10 | 4 | 0.0 | 3396 | 0.0 | 20.0 | 60080 | java=59046;xml=1034 | M | 12016.000000 | 0.166445 | 56.524635 |
ds-317-dev | 78 | 11 | 0.0 | 4256 | 0.0 | 35.7 | 98510 | java=97850;xml=660 | M | 35168.070312 | 0.791798 | 43.203735 |
拿到 csv 格式数据后,即可自由进行过滤条件设置了。