1.目前高版本SonarQube对JDK的要求都是8以上,对应要求的MySQL版本也都是5.7以上,所以如果JDK当前使用的是1.8,所以建议使用SonarQube7.0版本,对应JDK1.8和Mysql5.6或5.7。
2.为什么需要用到Mysql?Sonar在分析完代码后需要将报告上传到数据库,databasename=sonar,所以需要在数据库新建一个名为sonar的database,sonar初始完后会自动创建表。
3.Linux上启动sonar服务不能使用root身份,需要创建一个单独的用户,比如命名这个用户为sonar,然后给这个sonar用户赋予SonarQube目录的全部操作权限,然后切换到sonar用户,启动服务,启动命令 sh sonar.sh start,停止命令 sh sonar.sh stop;
4.启动成功后在web端访问 ip:9000可看到sonarqube页面
5.重点!!!如果提示启动成功,但是无法访问,那大概率是es服务启动出错了,sonar程序会依赖Elasticsearch,在启动的时候会去启动es服务,es对应的端口为9001,查看sonarqube下的log目录里的es.log文件,可以看到es的出错日志,大概率的会是接口报冲突,只要把sonar.properties里的es端口改掉即可,如改成9003,然后再启动sonar服务。如果你还是用的root身份启sonar服务,那么es这里也会报错,提示你不能用root身份,如果你用root身份启动报没有权限的错,那就是你没有给你的sonar用户赋予对应的操作权限,这也是上面第3点为什么要那么做的原因。
6.sonar启动成功后,接下来就要扫描代码了,需要以admin/admin身份登录,然后提示创建code码,这个码在扫描代码的时候要用到,是一个身份令牌,复制出来。
7.在项目代码一级目录下,即与pom.xml同级的目录下,执行mvn命令,以扫描eebo.ehr.training项目为例:
mvn sonar:sonar -Dsonar.projectKey=项目名 -Dsonar.projectName=项目名 -Dsonar.langua