0、背景说明

初次认识Sonar是因为当前团队负责研发过程管理追踪,总部对Sonar扫描发现重大缺陷有指标要求,然后带着好奇去了解了一下,Sonar是什么?Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量。再一看,支持的语言真多,其中就有我曾经最喜欢的Ruby,抱着一个曾经的技术人的好奇精神,我手痒了。

1、下载SonarQube

访问https://www.sonarqube.org/下载,自己实验用,免费的Community版本就行了,下载了8.2.0.32929版本。

下载完成后双击原地解压。

cd ~/Downloads/sonarqube-8.2.0.32929/bin/macosx-universal-64 
./sonar.sh start

成功后,浏览器打开localhost:9000

发现没成功

./sonar.sh console

仔细阅读报错信息,java版本太低,当前版本10,要求11以上

2、升级java

brew upgrade java

一阵等待后,升级完成,按最后的提示将环境变量配好

java --version

发现java已升级到当前最新版13.0.2

3、浏览器操作

重启sonar

./sonar.sh start

浏览器打开localhost:9000,成功 登陆,默认账号密码都是admin 新建project,按提示操作 创建项目-1 创建项目-2 创建项目-3

4、下载Scanner

按提示,Mac版Scanner下载

下载完后解压打开 ~/.bashrc 新增一行

export PATH="$PATH:/XXXXXX/sonar-scanner-4.2.0.1873-macosx/bin"
source ~/.bashrc

5、开始扫描

cd到一个Rails项目的文件夹,然后把浏览器那块代码贴到console里执行就好了

sonar-scanner \
  -Dsonar.projectKey=TT \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=f8e6baf416d30f0132a19719961d6d55656a7057

静静地等待执行完成

6、报错处理

发现报错,忘记截图了,大致效果就是可以看到error个数,但是无法追踪定位error和查看原因。 解决办法:关闭sonorqube

cd ~/Downloads/sonarqube-8.2.0.32929/bin/macosx-universal-64 
./sonar.sh stop

删除~/Downloads/sonarqube-8.2.0.32929/data/es6下的所有文件夹,胆小不敢直接rm -rf,手动进文件夹看了看是什么备份了才删 然后

./sonar.sh start

7、浏览器看结果

浏览器打开http://localhost:9000 不看不知道,一看吓一跳,随便找了几个老项目,一堆的bug,而且暴露了我不写unit_test并且大量复制粘贴代码的坏毛病,点看bug看详情,也有很多bad_practice以及非常低级的错误。 创建项目-1 创建项目-2 创建项目-3

8、进一步探索

尝试了一下可以手动配置扫描规则,比如有些规则太严格了,可以手动配置去掉,浏览器端就可以操作。

对于发现的问题,可以修改处理后重新扫描,看到数字蹭蹭往下掉,还有曲线图,很适合技术宅。

综上,作为一个不再写代码的人,我对这个工具还是很有好感的,试了一下,好像不支持Objective—C。

网上搜了下,有个叫fortify的工具可以支持,下载中,实践后分享。