Sonar & SonarScanner

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等

特点

  • 代码覆盖:通过单元测试,将会显示哪行代码被选中

  • 改善编码规则

  • 搜寻编码规则:按照名字,插件,激活级别和类别进行查询

  • 项目搜寻:按照项目的名字进行查询

  • 对比数据:比较同一张表中的任何测量的趋势

前置条件 Java jdk

官网open in new window下载安装包,rpm后缀的文件。

可以直接在服务器上下载,wget。也可以在本地下载完后上传到服务器上,这里介绍上传的方法。

  1. 将rpm文件拷贝到服务器上, 放在opt目录下
scp 【本地绝对路径】 root@【ip或域名】:【服务器绝对路径】

# 如果配置了免密登录,可以直接
scp 【本地绝对路径】 【Host名称】:【服务器绝对路径】 

温馨提示

上传时,需要用root用户才能上传成功,否则将无权限。

  1. 直接使用 rmp 命令安装,会自动配置好环境变量
rpm -ivh 【xxx.rpm】

# 查看当前java版本
java -version

安装 Sonarqube

下载社区版本的即可。Sonarqube 用来代码分析,检测代码的质量。

后续可搭配 Jenkins 一块使用。

官网open in new window下载。

  1. 使用同样的方法把安装包 zip,上传到服务器的 /opt 目录下
  2. 由于启动Sonar,不能使用root用户,需要用普通用户。先看是否有普通用户sonar,当然也可以起其他名字
# 查看当前活跃的用户列表
w

# 查看用户、用户组
cat /etc/passwd
cat /etc/group
  1. 没有普通用户,需要新建普通用户
# 创建用户,新建的用户会在/home下创建用户目录
useradd 【用户名】
# 给已创建的用户设置密码
passwd 【用户名】
#修改用户命令的相关操作
usermod -help
# 删除用户 
userdel 【用户名】
# 删除用户所在目录
rm -rf 【用户名】

# 用户组的添加与删除, 组的增加和删除信息会在etc目录的group文件中体现出来
groupadd 【用户组名】
groupdel 【用户组名】
  1. 新建完新用户后,需要给新用户设置权限
chown sonar /u		           将 /u 的属主更改为"sonar"chown sonar:staff /u	        和上面类似,但同时也将其属组更改为"staff"chown -hR sonar /u	         将/u 及其子目录下所有文件的属主更改为"sonar"
  1. 解压zip
unzip 【压缩包】

# 如果没有unzip,则需要先安装
yum install -y zip unzip
  1. 将解压出来的文件夹权限改为第三步创建的普通用户
chown -R sonar sonarqube
  1. 进入解压出来目录 bin/服务器使用系统目录 【我这里是linux-x86-64/】
  2. ./sonar.sh 可以看到有哪些命令
  3. 启动sonar
# 首次运行
./sonar.sh config 

# 非首次
./sonar.sh start
  1. 看到 Process[ce] is up SonarQube is up , 则说明已经启动成功。默认监听 9000 端口,访问远程服务器<远程地址:9000>

若没有成功开启,那就先检查以下几个步骤:

  1. 是否安装java
  2. 是否用普通用户
  3. 内存足够吗
  4. 查看日志 /opt/sonarqube/logs

登录 SonarScanner

默认用户名、密码都为admin

汉化网页

Administration -> Marketpiace -> Plugins -> 搜索 Chinese

安装之后,需要重启网页,等待就好了

创建新项目

  1. 配置项目名称
  2. 配置项目token,如果之前创建了token,也可以用同一个
  3. 按照生成页面内容,配置开发机
  • 配置Sonar环境变量,可全局使用 sonar-scanner
vim ~/.bash_profile

# 配置sonar环境

# export SCANNER_HOME="你下载的sonar-scanner地址"
export SONAR_RUNNER_HOME=/Users/kk/software/sonar+scanner/sonar-scanner/bin
export PATH=$PATH:$SONAR_RUNNER_HOME

# 配置完后 执行.bash_profile
source ~/.bash_profile

# 查看sonar版本,成功输出则说明配置成功
sonar-scanner -v
  1. 在需要检查的项目的根目录下,配置sonar-project.properties

按照页面给的粘贴复制即可

sonar-scanner \
  -Dsonar.projectKey=test-third \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://127.0.0.1:9000 \
  -Dsonar.login=生成的token

# Dsonar.sources=.  点默认读的就是src下 多个文件夹用逗号隔开


#  其他写法
sonar.projectKey=test-third
sonar.sources=src, examples, types
sonar.sourceEncoding=UTF-8
sonar.host.url=http://127.0.0.1:9000
sonar.login=生成的token

注意!!

在项目根目录下配置的文件名一定要是sonar-project.properties, 不可以更改,否则将找不到!!!

  1. 配置完后,执行 sonar-scanner ,在页面上既可以看到扫描结果

到这里就结束啦~
Last Updated:
Contributors: kk