自己搭建Sonar代码扫描

  • 必要软件
  • 安装Mysql
  • 安装SonarQube 7.7
  • 搭建sonar-scanner


必要软件

1、SonarQube 下载地址:https://www.sonarqube.org/downloads/。

因为新版本必须安装java11,且不支持mysql 所以本文选择低版本:SonarQube 7.7

下载界面如下:

sonar扫描java和xml sonar扫描go_mysql


选择社区版本即可

2、sonar-scanner的下载地址:

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/下载界面如下:

sonar扫描java和xml sonar扫描go_下载地址_02


选择4.3.0.2102版本,因为我在windows上搭建,所以选择windows安装包

3、mysql, SonarQube 7.7支持的mysql版本为 >=5.6且小于8.0

所以本文选择5.6版本。下载安装过程就省略了。

4、jdk1.8

安装Mysql

版本是5.6 过程略,安装完成后新建数据库 sonar

安装SonarQube 7.7

下载SonarQube 7.7后,打开下载目录下的conf下的sonar.properties文件,找到配置mysql连接字符串地方。
完整配置信息如下:

#----- DEPRECATED 
#----- MySQL >=5.6 && <8.0
# Support of MySQL is dropped in Data Center Editions and deprecated in all other editions
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=xxx
sonar.sorceEncoding=UTF-8

其他不用改

完成后,点击bin下StartSonar.bat执行

sonar扫描java和xml sonar扫描go_mysql_03


看到如下界面,就搭建成功:

sonar扫描java和xml sonar扫描go_bc_04


然后可以访问http://localhost:9000/,可以看到如下页面:

sonar扫描java和xml sonar扫描go_bc_05


默认密码是 admin/admin

中文包下载地址

https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases 然后把包放入sonarqube-7.7\extensions\plugins下(如果有旧版本进行删除),重启服务成功。

此处就不再安装中文包了

搭建sonar-scanner

1、修改配置文件:conf目录下的sonar-scanner.properties
全文如下:

#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
#sonar.host.url=http://localhost:9000
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=xxx
sonar.sourceEncoding=UTF-8

2、修改mysql的配置文件 my.ini

修改配置max_allowed_packet=64M,完成后重启mysql服务

通过show variables like ‘%max_allowed_packet%’; 命令查看是否生效

3、配置sonar-scanner环境变量:

sonar扫描java和xml sonar扫描go_mysql_06

4、登录 http://localhost:9000/

按如下步骤创建 project:

1)

sonar扫描java和xml sonar扫描go_mysql_07

2)

sonar扫描java和xml sonar扫描go_bc_08

默认密码 admin/ admin

3)创建新的project

sonar扫描java和xml sonar扫描go_bc_09


4)填入project-key,识别项目

sonar扫描java和xml sonar扫描go_下载地址_10


5)生成 token,输入选择开发语言和开发框架

sonar扫描java和xml sonar扫描go_下载地址_11


6)执行 scanner

cmd进入到需要扫描的项目的目录(pom.xml所在目录)

执行如下命令:

mvn sonar:sonar -Dsonar.projectKey=生成的projectkey -Dsonar.host.url=http://localhost:9000 -Dsonar.login=生成的token -Dsonar.java.binaries=项目路径/target/classes

7)如果有错误,可以到

sonarqube-7.7\logs\web.log中查看相应的错误信息8)扫描结束后,可以看到项目的bug和 漏洞数量和级别

(这里只是采用默认的规则扫描)

sonar扫描java和xml sonar扫描go_mysql_12