soanrqube结合jenkins 使用shell脚本扫描java语言,c++语言,ios objectc语言,js语言汇总

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,所以打算写个脚本,根据传入参数来扫描涉及到的这些语言:

soanrqube结合jenkins 使用shell脚本扫描java语言,c++语言,ios objectc语言,js语言汇总

 

 第二个扫C++的,第三个扫objectivec的,第一个和最后一个扫java,go,js的,如下sonar_Ios的工程如下:

soanrqube结合jenkins 使用shell脚本扫描java语言,c++语言,ios objectc语言,js语言汇总

 

 设置了扫描仓库和分支,以及是要执行扫描(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
的解释是这个版本的插件激活的规则太多了,所以默认规则是关闭的,
需要你自己复制一个版本,然后按照自己的规则,激活你想要的已有的资源库的规则。如下:

soanrqube结合jenkins 使用shell脚本扫描java语言,c++语言,ios objectc语言,js语言汇总

 

点击“Ensure that a rule is enabled” 

soanrqube结合jenkins 使用shell脚本扫描java语言,c++语言,ios objectc语言,js语言汇总

 

 我使用的是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

上一篇:双极性单项桥式PWM逆变(simulink仿真)


下一篇:C++学习 --- STL常用容器之vector容器