一:简介
Sonar一个Web系统,展现了静态代码扫描的结果,结果是可以自定义的 ,支持多种语言的原理是它的扩展性。
![f30a1f844ae72c52c453a244c744d844.png](https://i-blog.csdnimg.cn/blog_migrate/350a98bbec3edd0055f9999067e3f8ca.jpeg)
![a1165c36c1ffcecce2bc2dafe5f2e142.png](https://i-blog.csdnimg.cn/blog_migrate/7c49ff81ea8322482741c86294c20b63.jpeg)
二:JDK安装
SonarQube7.8版本需要jdk1.8或者更高的版本。
三:SonarQube安装
1. SonarQube 下载
SonarQube 下载地址 注意:要下载7.8版本,因为7.8版本以上的不再支持mysql数据库了,下载后简单解压一下即可。
直接点击Community Edition即可,不用点下拉的选项。
![79fce5410b847f151a9c270e4f7b67f1.png](https://i-blog.csdnimg.cn/blog_migrate/f7f29347dcbc16a3e21565f3948f780c.jpeg)
![2bc7ec8d5eef9918090e72ff05954303.png](https://i-blog.csdnimg.cn/blog_migrate/ca7f167a49ca303fe58c9fc5dc7c020d.jpeg)
2. 启动SonarQube Web服务
通过命令行启动 ./sonar.sh start
- start 启动web项目
- console 查看start的命令打印的日志,即查看logs/sonar.log文件内容
![214e23036853d87764c45a145fdebb57.png](https://i-blog.csdnimg.cn/blog_migrate/552ba8016e40fc4100cbaa93b3490f89.jpeg)
访问SonarQube Web地址 http://localhost:9000
![3edd076d0bf44bcaf145fab5ab12dbf6.png](https://i-blog.csdnimg.cn/blog_migrate/e7bd52073575f330c2a7381fda634582.jpeg)
3. 配置数据库信息
# 需要预先创建好数据库CREATE DATABASE `sonar` DEFAULT CHARACTER SET utf8;
/sonarqube-7.8/conf/sonar.properties
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance# 数据库的用户名sonar.jdbc.username=root# 数据库密码sonar.jdbc.password=root123sonar.sorceEncoding=UTF-8# SonarQube Web服务登录的用户名和密码sonar.login=adminsonar.password=admin
![e343c0ec7c3f5783b8fabe7cc0a6e695.png](https://i-blog.csdnimg.cn/blog_migrate/21165ee64d883efda93567e2c723443d.jpeg)
4. 重启命令restart
restart命令执行后会初始化数据库表
![08ae15decbfb9879f1dfadae743bdd2c.png](https://i-blog.csdnimg.cn/blog_migrate/54680736b707caa063a11676cc866ee1.jpeg)
![3092f5fa113193441768c2f9786d3950.png](https://i-blog.csdnimg.cn/blog_migrate/af5507f9e303d012daccbe1ea65c5be2.jpeg)
5. 使用用户名和密码再次访问SonarQube Web
http://localhost:9000 输入用户名和密码,即在sonar.properties文件中配置的login和password值,admin amdin
![b6ee52cfcd9742fee494e229ded82e8b.png](https://i-blog.csdnimg.cn/blog_migrate/fb405fd36e73529d5076363d5bfe8dc9.jpeg)
6. 安装中文包插件
![7fa049892a3ecd8eb605c885439beedb.png](https://i-blog.csdnimg.cn/blog_migrate/d87dab353d752f91c02436fbcbcf3f11.jpeg)
重启使插件生效
![4fc9da30e146b3b38c24d1e82fd7da74.png](https://i-blog.csdnimg.cn/blog_migrate/820e67f3bd08c6512a35b943cd1137e9.jpeg)
![d301f0c1c659e5696ad67e09b66712de.png](https://i-blog.csdnimg.cn/blog_migrate/10bab7789fdcc55956166a8de340c524.jpeg)
四:SonarScanner安装
1. 下载SonarScanner
SonarScanner下载地址
配置sonar-scanner-4.0.0.1744-macosx/conf/sonar-scanner.properties数据库信息
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformancesonar.jdbc.username=rootsonar.jdbc.password=root123
2. 添加环境变量
vi ~/.bash_profileexport SONAR_RUNNER_HOME=/Users/mengday/Softwares/sonar/sonar-scanner-4.0.0.1744-macosxexport PATH=$SONAR_RUNNER_HOME/bin:$PATHsoruce ~/.bash_profile# 查看sonar-scanner命令是否生效sonar-scanner --version
![6a585a3caa84e0a029a28b6ef37b602a.png](https://i-blog.csdnimg.cn/blog_migrate/fa5a9cff5fb9e002588994e75f65ccc1.jpeg)
3. 在一个maven项目中配置sonar-project.properties文件
本文使用了springboot-pay-example 这个项目作为演示的,可以到github上限下载下来,然后在idea中打开。
在一个项目的根路径下创建sonar-project.properties文件,并设置属性值
![3c6e164b6fa14b7209359c1cae9ab04b.png](https://i-blog.csdnimg.cn/blog_migrate/a4e5db88bc791f3e0975e2a061f0bf54.jpeg)
sonar-project.properties
sonar.projectKey=my:projectsonar.projectName=springboot-pay-examplesonar.projectVersion=1.0sonar.sources=srcsonar.java.binaries=target/classes
- sonar.projectName是项目名字,
- sonar.sources是源文件所在的目录,
- sonar.java.binaries SonarQube新版相对于之前的版本新增要求必须指定项目class文件的目录,如果不配置会报错,注意target/classes目录必须存在,为了确保target/classes存在,先通过maven clean install一下
# 切换到项目根目录下cd /Users/mengday/Projects/learning/springboot-pay-example# 开始代码扫描分析sonar-scanner
![01cea33b4a4d205be4edbc0d68ff4941.png](https://i-blog.csdnimg.cn/blog_migrate/a07c0b64da0b7b411c57ef730aa4cb5b.jpeg)
4. 查看代码分析结果
![745e6b606cacfd3d164cd9bd64e1e2ba.png](https://i-blog.csdnimg.cn/blog_migrate/09891a1cc06d0da1d9afd1cc0f5ff0d8.jpeg)
这里分析出来2个Bug
![1156abc168f0420fa9d963282386661f.png](https://i-blog.csdnimg.cn/blog_migrate/f7e3d109d23ec183f0d863220e4bdf54.jpeg)
![87810c7c82c2f3bd5883dbacb5c59c0d.png](https://i-blog.csdnimg.cn/blog_migrate/bd4e674eaca0c9d49929c2317dfe1a4e.jpeg)
点开第二个查看具体问题代码
![a9f479c3fd87763ef2b6cead4308c8b5.png](https://i-blog.csdnimg.cn/blog_migrate/058a1db2533e74b355efd0206319f21c.jpeg)