昨天搭建sonarqube,今天打算扫描一个项目文件,然后在http://localhost:9000/希望能够看到结果。
然后经历了各种坑,几乎崩溃要放弃了。终于今天解决了。
扫描一个helloworld简单的项目,非常顺利,立即就上去了。
一旦扫描一个比较大的项目就各种错误。
下面总结一下遇到了哪些问题及怎么解决的。
先说一下手顺。(指扫描项目手顺,搭建环境见上一篇)
1.下载sonar-scanner,以前可能叫sonar-runner。
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
我是win版 下载 配置环境变量
SONAR_SCANNER_HOME
D:sonar-scanner
path加一下 ;%SONAR_SCANNER_HOME%in;
2.在你要扫描的工程下面加一个文件
sonar-project.properties
sonar.projectKey=HelloWorld sonar.projectName=HelloWorld sonar.projectVersion=1.0 sonar.sources=C:\Users\zhangcheng\IdeaProjects\HelloWorld\src sonar.java.binaries=C:\Users\zhangcheng\IdeaProjects\HelloWorld\out sonar.language=java sonar.sourceEncoding=UTF-8 sonar.exclusions=**/*.js
3.maven 来执行扫描也可以,暂时没有研究
然后cmd 到你项目的目录C:\Users\zhangcheng\IdeaProjects\HelloWorld
执行sonar-scanner -v
你能看到版本号,代码sanner安装没问题,可以跑。
然后开始各种坑了。
各种什么js出错,node.js出错。TypeScript出错。npm出错。
最后好不容易解决了各种扫描问题,好像上传post到sonarqube出错,原来是post有限制
我默认的是4M 要改成大一点。
各种js出错,本来想跳过的不扫描,于是在sonar-project.properties文件里
配置了
sonar.exclusions=**/*(!.java),**/*.js,C:\Users\zhangcheng\IdeaProjects\helloworld\src\test\**,
也不知道有没有用,感觉还是在扫描js,仿照了idea的排除设置,好像还是没用。
错误 Failed to get Node.js version.No TypeScript files will be analyzed. You can exclude TypeScript files from analysis with 'sonar.exclusions' property
上了这个官方网址按照步骤一步一步啃
https://docs.sonarqube.org/display/PLUG/SonarTS
第1,2步都做过了,第3步 下sonarTS,看了下我的插件,是最新的sonarqube,已经自带了有的。
第四部node.js没有,下载安装
https://nodejs.org/en/
再扫描还是错误
ERROR: Failed to get Node.js version.No TypeScript files will be analyzed. You can exclude TypeScript files from analysis with 'sonar.exclusions' property.
做上图第5步,安装typescript,npm下载安装
在你的项目的路径输入npm -g install typescript
一直出错 用阿里云的镜像下 公司有proxy估计下不了,折腾了半天终于下来了。
不行的话来这三步
npm config set registry https://registry.npm.taobao.org npm config set disturl https://npm.taobao.org/dist npm -g install typescript
正确图
npm -g install typescript 错误图
安装成功的话你可以 tsc -v 一下
有版本信息就成功了。
下面在sonar-scanner 重新扫描
debug模式的话可以 sonar-scanner -X 来扫描,可以看到不少错误。
终于扫描都过去了。report也生成了。52M,压缩了15M
看样子是上传出错了。
D:sonarqube-7.8logsweb.log 去看日志
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16704755 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
果然是mysql的上传包有限制大小。
到mysql 的sql去查一下
show VARIABLES like '%max_allowed_packet%';
果然
max_allowed_packet 是 4194304
4M默认的
用命令改一下
set global max_allowed_packet = 6*1024*1024*10;
改到60M
这边坑我半天,设置60M后一查 还是4194304 好像没有反应一样,
于是我重启mysql ,重启电脑,各种坑,说有可能一重启就回滚了,设置的60M就失效了。
这个命令设置只是临时的。woc
而且我设置了一直没有反应,原来要等一会儿,不能太急,
Navicat for MySQL这个查有点滞后,我用MySQL Workbench 8.0 CE查,立即看到改成60M了,
于是迫不及待的去扫描一下,终于终于。。
上传成功了。
赶快去sonarqube去看一下。http://localhost:9000/projects
太急人家还在处理中呢
过了一会儿,终于就能看见了。
完工。
mysql改post包大小,说改配置文件
D:mysql-5.7.26-winx64my.ini
我加了一行
max_allowed_packet = 60M
好像没有反应,不知道怎么回事,电脑也重启了,mysql 也重启了。崩溃