下载镜像

1
docker pull sonarqube:8.6-community

启动镜像

1
2
3
4
5
mkdir -p /data/sonarqube/data
mkdir -p /data/sonarqube/extensions
mkdir -p /data/sonarqube/logs

docker run -d --name sonarqube --restart=always -p 9000:9000 -p 9092:9092 -v /data/sonarqube/data:/opt/sonarqube/data -v /data/sonarqube/extensions:/opt/sonarqube/extensions -v /data/sonarqube/logs:/opt/sonarqube/logs sonarqube:8.6.1-community

登录SonarQube

http://ip:9000/

默认账号密码 admin,admin

修改默认密码

安装中文插件

点击restart等待重启即可

项目检测

创建项目

创建令牌

分析项目

复制命令在代码目录下执行

看到Buiild Success代表代码检测完毕

可看到项目对应的bugs和漏洞

常用插件:

  • Chinese Pack – 中文语言包
  • Checkstyle – Java 代码规范检查
  • Crowd – Crowd 插件,实现统一登录
  • JaCoCo – Java 代码覆盖率
  • PMD – Java 静态代码扫描
  • ShellCheck Analyzer – Shell 代码规范检查
  • SonarCSS、SonarHTML、SonarJS等 – Sonar 针对不同编程语言代码分析

自动构建

生成jenkins专属令牌

jenkins关联SonarQube

安装插件

添加凭据 Secret对应创建的令牌

在系统配置中配置插件

在全局工具配置中配置

可使用自动安装或包,本文使用指定本地包

下载地址:https://github.com/SonarSource/sonar-scanner-cli/releases/download/4.4.0.2170/sonar-scanner-cli-4.4.0.2170-linux.zip

项目结构,该项目需要进入ymall目录进行打包

增加构建选项Execute SonarQube Scanner

构建控制台输出

查看SonarQube,新代码代表更新的代码漏洞是否新增,全部代码为老代码

问题:

启动SonarQube时MySQL报错

1
Exception in thread "main" org.sonar.process.MessageException: Unsupported JDBC driver provider: mysql

原因是SonarQube 7.9以上版本已不再支持mysql,启动语句需要更改

以前版本的启动命令

1
docker run -d --restart=always --name sonarqube -p 9000:9000 -p 9092:9092 -e "SONARQUBE_JDBC_USERNAME=sonar" -e "SONARQUBE_JDBC_PASSWORD=sonar" -e "SONARQUBE_JDBC_URL=jdbc:mysql://192.168.50.57:3306/sonar?useUnicode=true&characterEncoding=utf8&useSSL=false"  -v /data/sonarqube/conf:/opt/sonarqube/conf -v /data/sonarqube/data:/opt/sonarqube/data -v /data/sonarqube/extensions:/opt/sonarqube/extensions -v /data/sonarqube/logs:/opt/sonarqube/logs  sonarqube:7.5-community

现在版本的启动命令

1
docker run -d --name sonarqube --restart=always -p 9000:9000 -p 9092:9092 -v /data/sonarqube/data:/opt/sonarqube/data -v /data/sonarqube/extensions:/opt/sonarqube/extensions -v /data/sonarqube/logs:/opt/sonarqube/logs  sonarqube:8.6.1-community

jenkins构建时报错

1
Cannot run program "/opt/sonar-scanner-cli/bin/sonar-scanner" (in directory /root/.jenkins/workspace/ymall") error=13, Permission denied

授权sonar-scanner

1
chmod -R 777 sonar-scanner-cli/