Sonar & SonarScanner
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等
特点
代码覆盖:通过单元测试,将会显示哪行代码被选中
改善编码规则
搜寻编码规则:按照名字,插件,激活级别和类别进行查询
项目搜寻:按照项目的名字进行查询
对比数据:比较同一张表中的任何测量的趋势
前置条件 Java jdk
在官网下载安装包,rpm后缀的文件。
可以直接在服务器上下载,wget。也可以在本地下载完后上传到服务器上,这里介绍上传的方法。
- 将rpm文件拷贝到服务器上, 放在opt目录下
scp 【本地绝对路径】 root@【ip或域名】:【服务器绝对路径】
# 如果配置了免密登录,可以直接
scp 【本地绝对路径】 【Host名称】:【服务器绝对路径】
温馨提示
上传时,需要用root用户才能上传成功,否则将无权限。
- 直接使用 rmp 命令安装,会自动配置好环境变量
rpm -ivh 【xxx.rpm】
# 查看当前java版本
java -version
安装 Sonarqube
下载社区版本的即可。Sonarqube 用来代码分析,检测代码的质量。
后续可搭配 Jenkins 一块使用。
在官网下载。
- 使用同样的方法把安装包 zip,上传到服务器的 /opt 目录下
- 由于启动Sonar,不能使用root用户,需要用普通用户。先看是否有普通用户sonar,当然也可以起其他名字
# 查看当前活跃的用户列表
w
# 查看用户、用户组
cat /etc/passwd
cat /etc/group
- 没有普通用户,需要新建普通用户
# 创建用户,新建的用户会在/home下创建用户目录
useradd 【用户名】
# 给已创建的用户设置密码
passwd 【用户名】
#修改用户命令的相关操作
usermod -help
# 删除用户
userdel 【用户名】
# 删除用户所在目录
rm -rf 【用户名】
# 用户组的添加与删除, 组的增加和删除信息会在etc目录的group文件中体现出来
groupadd 【用户组名】
groupdel 【用户组名】
- 新建完新用户后,需要给新用户设置权限
chown sonar /u 将 /u 的属主更改为"sonar"。
chown sonar:staff /u 和上面类似,但同时也将其属组更改为"staff"。
chown -hR sonar /u 将/u 及其子目录下所有文件的属主更改为"sonar"。
- 解压zip
unzip 【压缩包】
# 如果没有unzip,则需要先安装
yum install -y zip unzip
- 将解压出来的文件夹权限改为第三步创建的普通用户
chown -R sonar sonarqube
- 进入解压出来目录 bin/服务器使用系统目录 【我这里是linux-x86-64/】
- ./sonar.sh 可以看到有哪些命令
- 启动sonar
# 首次运行
./sonar.sh config
# 非首次
./sonar.sh start
- 看到 Process[ce] is up SonarQube is up , 则说明已经启动成功。默认监听 9000 端口,访问远程服务器<远程地址:9000>
若没有成功开启,那就先检查以下几个步骤:
- 是否安装java
- 是否用普通用户
- 内存足够吗
- 查看日志 /opt/sonarqube/logs
登录 SonarScanner
默认用户名、密码都为admin
汉化网页
Administration -> Marketpiace -> Plugins -> 搜索 Chinese
安装之后,需要重启网页,等待就好了
创建新项目
- 配置项目名称
- 配置项目token,如果之前创建了token,也可以用同一个
- 按照生成页面内容,配置开发机
- 配置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
- 在需要检查的项目的根目录下,配置
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, 不可以更改,否则将找不到!!!
- 配置完后,执行
sonar-scanner,在页面上既可以看到扫描结果
到这里就结束啦~