sonrqube版本6.7.7
关于jenkins和sonarqube的安装不在本博客中详细讲解,可参考我的其他博客:
https://www.cnblogs.com/zndxall/p/9336879.html (jenkins集成soanrqube)
https://www.cnblogs.com/zndxall/p/12095769.html (linux上sonar的安装和总结)
soanrqube插件很多在应用市场是下载不了的,同样给出了下载插件的博客:https://www.cnblogs.com/zndxall/p/13534244.html
由于公司代码仓比较多,涉及到java,js,go,c++,objectivec,不想一个工程一个工程的配置soanrqube,所以打算写个脚本,根据传入参数来扫描涉及到的这些语言:
第二个扫C++的,第三个扫objectivec的,第一个和最后一个扫java,go,js的,如下sonar_Ios的工程如下:
设置了扫描仓库和分支,以及是要执行扫描(run),还是要获取扫描结果(result),其他工程的配置是一样的,区别只是仓库名。
下面详细介绍各语言的扫描
1.扫描java语言:
这是最好配置的了,很简单,只需要设置下扫描语言就可以了,sonar-project.properties如下设置:
sonar.projectKey=sonar_test_java sonar.projectName=sonar_test_java sonar.projectVersion=1.0.0 sonar.sourceEncoding=UTF-8 sonar.language=java #扫描语言 sonar.java.binaries=./ sonar.sources=./ #扫描所有代码,如果你需要指定目录的话 换成目录即可,比如test1
然后在sonar-project.properties的同级目录下执行sonar-runner即可,稍后就能在sonarqube服务器上看到扫描结果。
2.扫描js语言
sonar.projectKey=sonar_test_js sonar.projectName=sonar_test_js sonar.projectVersion=1.0.0 sonar.sourceEncoding=UTF-8 sonar.language=js sonar.java.binaries=./ sonar.sources=./
很明显,区别只是把语言换成了js
然后在sonar-project.properties的同级目录下执行sonar-runner即可,稍后就能在sonarqube服务器上看到扫描结果。
3.扫描go
和上面的java和js是一样的,把语言换成go就可以了
4.扫描C/C++
这个花费了我很久的时间,首先是插件问题,最新的1.3.2插件不要用,不然默认规则数是0,扫不出来,因为我看插件网站上https://github.com/SonarOpenCommunity/sonar-cxx/releases
的解释是这个版本的插件激活的规则太多了,所以默认规则是关闭的,
需要你自己复制一个版本,然后按照自己的规则,激活你想要的已有的资源库的规则。如下:
点击“Ensure that a rule is enabled”
我使用的是1.3.0版本的。
明天接着写。。。。。
报错处理:
1.ERROR: Caused by: The rule 'OCLint:compiler warning' does not exist.
解决:加“-extra-arg=-Wno-everything”,如下:
oclint-json-compilation-database -- -max-priority-1 10000-max-priority-2 10000 -max-priority-3 10000 -extra-arg=-Wno-everything -rc LONG_LINE=150 -report-type pmd -o oclint.xml
2.ERROR: Caused by: The rule 'OCLint:compiler error' does not exist
没找到解决办法。。。
3.log日志报错:Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4522715 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
解决:https://www.cnblogs.com/zndxall/p/13531151.html
参考:
http://www.uml.org.cn/jchgj/201808103.asp?artid=21046?weiid=2390