一. 下载

sonarqube下载地址:https://www.sonarqube.org/downloads/

sonar-scanner下载地址:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner



二. 安装

       安装前确保电脑已经安装jdk1.8 +,以及MySQL >=5.6 && < 8.0,所以, mysql版本过高的话,要降级,当然sonar支持的数据库除了mysql还有其他类型的数据库,具体请参照官方文档的介绍。



2.1 安装SonarQube web server

1. 将下载好的sonarqube压缩包解压,解压后的目录如下:

Sonarqube 扫描 本地java sonarqube静态代码扫描_python

2 到解压目录的bin\windows-x86-64(我的是64位的)目录下,双击StartSonar.bat文件 启动SonarQube

3 到浏览器界面,输入 : http://localhost:9000,能够进入界面证明安装成功。



2.2 安装数据库

1. 我这里安装的MySQL5.6,具体安装请看我的博客中有关MySQL5.6的安装。

2. 为sonar创建一个数据库
create database 数据库名;  

3. 创建sonarqube用户并进行授权

CREATE USER 'username'@'host' IDENTIFIED BY 'password'; // 创建用户并设置密码
// username 为创建的用户名
host为对应的主机地址,本地就是localhost
password为设置的密码

GRANT ALL ON *.* TO '用户名'@'localhost'; //对用户进行授权操作

4. 修改SonarQube配置文件,添加Mysql相关配置
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=用户名  // 刚刚创建的sonarQube用户
sonar.jdbc.password=密码   // 创建用户对应的密码
sonar.sorceEncoding=UTF-8 // 设置编码格式为UTF-8



2.3 重启服务端

1. 退出 SonarQube 服务端
    在之前弹出的cmd窗口执行ctrl + c,
    弹出来的提示选择Y,退出SonarQube服务

2.  双击StartSonar.bat文件, 重新启动SonarQube
    这次因为要进行数据库的初始化操作,所以需要的时间可能稍微久一点

3. 启动成功后,浏览器输入 : http://localhost:9000 进入界面

4. 登录 

    点击界面右上角的登录按钮, 进行登录 :
    初始的账户名 : admin
    初始的密码  :  admin

如上 , SonarQube的安装已经OK!

附 : 一些关键配置的修改,如 主机地址,context,端口号等:
通常情况下使用默认的配置即可!
文件 /conf/sonar.properties
#sonar.web.host=0.0.0.0 
#sonar.web.context=
#sonar.web.port=9000



三. 使用



3.1. 安装必要的插件 (最重要的是汉化包)

点击导航栏的 config, 选择应用市场搜索Chinese pack, 点击install进行安装 安装成功后, 重启SonarQube ! 如下图 : 进入到了很友好的中文界面!

Sonarqube 扫描 本地java sonarqube静态代码扫描_c#_02

到这里,Sonar服务就安装成功了,下面就是怎样利用sonar来分析你所写的代码了。

3.2 使用sonar-scanner进行静态代码扫描

1 将下载的压缩包解压缩到任意目录。解压后的目录如下:

Sonarqube 扫描 本地java sonarqube静态代码扫描_bc_03

2 打开Sonar Scanner根目录下的/conf/sonar-scanner.properties文件,配置如下:

Sonarqube 扫描 本地java sonarqube静态代码扫描_Sonarqube 扫描 本地java_04

3 配置环境变量

新建系统变量:SONAR_SCANNER_HOME=Sonar Scanner根目录;

修改系统变量path,新增%SONAR_SCANNER_HOME%\bin(不新建SONAR_SCANNER_HOME直接新增path亦可);

4 打开cmd面板,输入如下图,则表示环境变量设置成功:

Sonarqube 扫描 本地java sonarqube静态代码扫描_Sonarqube 扫描 本地java_05

5 开始使用项目进行分析代码,在这里我是使用一个已经编译好的完整项目来分析的,且项目能够正常运行的友情提示,为了保险起见,可以新建一个目录,然后将该项目拷贝此目录下,然后在项目根目录下新建sonar-project.properties文件,内容如下:

Sonarqube 扫描 本地java sonarqube静态代码扫描_Sonarqube 扫描 本地java_06

6 设置完后,打开cmd面板,进入项目根目录下,然后输入“sonar-scanner”命令,执行代码分析:

Sonarqube 扫描 本地java sonarqube静态代码扫描_python_07

 分析成功的界面为:

Sonarqube 扫描 本地java sonarqube静态代码扫描_bc_08

当然,若分析代码失败,可以输入sonar-scanner -X,进而找到为什么分析失败,这就好比项目开发中的debug模式。

7 然后打开http://localhost:9000 (SonarQube服务器),输入账号密码,即可查看代码分析结果,如图:

Sonarqube 扫描 本地java sonarqube静态代码扫描_python_09



三. 下面是我在执行sonar-scanner的过程中遇到的问题,仅供参考

1  解决sonar scanner扫描报错Please provide compiled classes of your project with sonar.java.binaries property问题:

只需在项目的sonar-project.properties文件中添加如下语句:

sonar.java.binaries=项目路径/target/classes,如上面第五点中最后一行。



以上只介绍了利用sonar-scanner进行静态代码分析,后面将会介绍使用maven的方式进行分析和在开发工具里面集成sonar进行分析代码