sonarqube7.3 + nexus3 分析项目组成员代码状况,并定期生成报表
通常情况下, 一个比较核心的项目都是有一个项目组的成员进行维护
如果产品经理想要了解项目进展, 了解项目组每个成员工作状况
以及每个组员的代码质量
使用sonarqube + nexus是一种不错的选择
1. sonarqube 和 nexus的使用介绍
1.1 sonarqube的安装使用
参照之前的博客即可, 博客链接:
SonarQube7.3安装和使用说明
1.2 nexus安装使用
1.2.1 nexus的作用
对于我们的项目组来说, nexus的作用在于:
通过私有仓库的构建
每次发布版本时,项目组各个成员统一提交代码到svn
然后将更新之后的代码打包放置到私仓
对私仓的jar包进行一个整体的测试,测试结果通过后发布版本给全国各地
测试未能通过的版本不予发布
这样做的好处在于 : 方便进行版本管理和控制
保证发布版本的稳定性
1.2.2 maven5.4 + nexus的安装
如果是项目组的私仓, 建议安装在linux服务器下
首先下载安装maven:
maven官网下载链接
在/usr/local(推荐)下创建maven目录
mkdir /usr/local/maven
使用 工具 将 下载的maven压缩包 上传到该目录下
执行命令 : tar -zxvf apache-maven-3.5.3-bin.tar.gz
解压成功后执行命令 : mvn -v
出现如下提示: 证明安装成功
Maven home: /usr/local/maven/apache-maven-3.5.3
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/local/java/jdk1.8.0_131/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
接下来下载安装nexus3:
nexus官网下载链接
在/usr/local下创建nexus目录
mkdir /usr/local/nexus
使用 工具 将 压缩包 上传到该目录下
执行命令 : tar -zxvf nexus-3.10.0-04-unix.tar.gz
nexus默认的端口号是8181,由于我们的8181端口号已经被spark占用,所以需要修改端口号,修改方式如下:
执行命令 :
vim /usr/local/nexus/nexus-3.10.0-04/etc/nexus-default.properties
将 application-port修改为56789 , 保存并退出.
进入到bin目录下执行命令 : ./nexus run &
出现如下提示 : Started Sonatype Nexus oss , 证明启动成功!
启动成功后,浏览器输入 : 192.168.1.54:56789进入界面查看
看到的应该是如下炫酷的界面,证明安装成功!
1.2.3 nexus的使用与配置
可以参考如下博客:
maven私仓搭建——nexus3
2. 编写代码实现使用sonar分析项目代码,并生成报表的功能
已将代码分享到百度网盘,链接如下:
使用sonar生成报表代码
代码也同步到了github上面,可以直接去下载:
SonarReport github链接:
最终会生成一个命名为index.html的报表(直接使用浏览器打开即可)
将代码打成jar包,放到linux上面
报表效果如下:
两张报表统计了项目组里各个项目,各个成员, 各种问题的代码总数
这个报表就是项目经理每周想要看到,来对项目组成员工作进行评估的
可是如果每周都生成一份,是不是要一个人每周五执行一遍编译代码,提交代码,
执行程序,发送报表的重复操作呢? 当然不需要!
3. 更新私仓上的SVN到本地, 将代码提交到sonar,并通过定时调度每周定时生成报表
3.1 maven的settings.xml里面添加相关依赖
配置文件位置 : $MAVEN_HOME/conf/settings.xml
在profiles标签里面添加如下内容
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.1.54:9000
</sonar.host.url>
<!-- sonar username -->
<sonar.login>username</sonar.login>
<!-- sonar password -->
<sonar.password>password</sonar.password>
</properties>
</profile>
通过上述配置, 我们可以使用sonar管理私仓上面的项目
3.2 编译私仓上面代码,将代码提交到sonar后,执行jar包生成报表
项目里面有多个模块, 写法类似,我只截取出其中的一个
脚本如下:
#!/bin/bash
# 想要分析的svn项目的本地路径
pom_common_dir=/data/mroxdrmerge/bigdata-common
# 项目不存在,退出
if [ ! -f "${pom_common_dir}/pom.xml" ]; then
echo "ERROR:项目不存在"
exit 1;
fi
#获取绝对路径
pom_common_dir=`cd "$pom_common_dir"; pwd`
echo "================================="
echo "模快更新开始"
echo "路径为:${pom_common_dir}"
#svn更新代码
echo "开始更新common代码"
svn update ${pom_common_dir}
exitCode=$?
if [[ $exitCode -ne 0 ]];then
echo "ERROR:common 代码更新失败"
return 1;
fi
#将最新代码提交到sonar系统
mvn -f=${pom_common_dir}/pom.xml sonar:sonar
#执行jar包生成报表(jar包的参数是 sonar地址:sonar端口号)
java -jar /home/hmaster/xmr/SonarReport-1.0-SNAPSHOT.jar 192.168.1.54:9000
# 默认的文件是index.html 将其重命名为带有当天日期的
current_dir=`pwd`
date=`date +%Y%m%d`
if [ -f "${current_dir}/index.html" ]; then
mv "${current_dir}/index.html" "${current_dir}/index_${date}.html"
fi
生成的文件如下 :index_20181130.html
提交到sonar的状态截图:
3.3 编写定时调度脚本,每周定时生成报表
3.3.1 定时调度简介
之前写过一篇linux定时调度crontab使用的博客,博客链接如下 :
3.3.2 定时调度脚本编写
crontab -e 编写定时调度脚本,每一行代表一个定时调度任务
#每周五下午三点执行脚本 updatesvn.sh, 并将日志重定向到 updatesvn.txt
* 15 * * 5 cd /home/hmaster/xmr/ && ./updatesvn.sh >> /home/hmaster/xmr/updatesvn.txt
综上, 我们实现了每周定时生成表表来分析项目组成员代码质量,
工作任务的功能!