当前位置: 首页>編程日記>正文

sonarqube + nexus 分析项目组成员代码状况,并生成报表

sonarqube + nexus 分析项目组成员代码状况,并生成报表

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进入界面查看

看到的应该是如下炫酷的界面,证明安装成功!
TIM图片20181130154804.png

1.2.3 nexus的使用与配置

可以参考如下博客:
maven私仓搭建——nexus3

2. 编写代码实现使用sonar分析项目代码,并生成报表的功能

已将代码分享到百度网盘,链接如下:
使用sonar生成报表代码

代码也同步到了github上面,可以直接去下载:
SonarReport github链接:
最终会生成一个命名为index.html的报表(直接使用浏览器打开即可)

将代码打成jar包,放到linux上面

报表效果如下:

报表一:
TIM图片20181203084430.png

报表二:
TIM图片20181203084824.png

两张报表统计了项目组里各个项目,各个成员, 各种问题的代码总数
这个报表就是项目经理每周想要看到,来对项目组成员工作进行评估的可是如果每周都生成一份,是不是要一个人每周五执行一遍编译代码,提交代码,
执行程序,发送报表的重复操作呢? 当然不需要!
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" ]; thenecho "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 ]];thenecho "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" ]; thenmv "${current_dir}/index.html" "${current_dir}/index_${date}.html"fi
生成的文件如下 :index_20181130.html

提交到sonar的状态截图:
TIM图片20181130161410.png

3.3 编写定时调度脚本,每周定时生成报表
3.3.1 定时调度简介
之前写过一篇linux定时调度crontab使用的博客,博客链接如下 :

linux下的定时调度crontab:

3.3.2 定时调度脚本编写
crontab -e 编写定时调度脚本,每一行代表一个定时调度任务#每周五下午三点执行脚本 updatesvn.sh, 并将日志重定向到 updatesvn.txt
* 15 * * 5 cd /home/hmaster/xmr/ && ./updatesvn.sh >> /home/hmaster/xmr/updatesvn.txt

定时调度执行日志:
TIM图片20181203090525.png

综上, 我们实现了每周定时生成表表来分析项目组成员代码质量,
工作任务的功能!
4.参考文档链接

SonarQube7.3安装和使用说明
maven私仓搭建——nexus3
linux下的定时调度crontab


https://www.fengoutiyan.com/post/16197.html

相关文章:

  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機