目的:检查代码覆盖率,包括对语句的覆盖,对分支或者条件的覆盖等等
实现原理:1、服务器上采集收据
2、采集数据和本地源码做匹配
3、浏览器展示匹配结果
使用工具:Sonar5.4:覆盖结果展示;
Jacoco7:用于在服务器端产生覆盖数据;
命令行方式处理匹配结果;
JDK1.8
SonarQube Scanner 3.2;
一、服务器环境搭建
1、下载Jacoco并解压上传至服务器(linux)
http://www.eclemma.org/jacoco/index.html
2、在gsxdb.properties文件中加入:指定javaangent的安装位置,指定结果文件jacoco.exec(运行后生成此文件)的位置。
-javaagent:XX/lib/jacocoagent.jar=destfile=XX/jacoco.exec
3、检验是否部署成功:
例gs项目:ps -ef | grep Main_Gs
刷新安装目录,查看是否生成了jacoco.exe文件,如果有此文件,则部署成功。
4、做功能测试时,需要关闭进程获取结果文件jacoco.exec.
二、本地环境搭建
1、下载SonarQube并解压到本地。
http://www.sonarqube.org/downloads/
2、开启SonarQube:进入本地操作系统对应的目录,如本地操作系统为windows64位,则进入D:aotusonarqube-5.4inwindows-x86-64,双击StartSonar.bat启动SonarQube。
3.验证SonarQube是否正常运作:浏览器访问http://localhost:9000/ ,然后登陆,用户名:admin,密码:admin。
4、进入对应的源码项目,
1)将服务器下载的jacoco.exec,放入目录中
2)新增配置文件:sonar-project.properties,设置项目的参数,供Sonar读取,以及Class文件的地址和结果文件的地址,供Sonar-Scanner读取。
脚本代码参考:
# must be unique in a given SonarQube instance sonar.projectKey=gs # this is the name displayed in the SonarQube UI sonar.projectName= gs #sonar.language=java sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows. # Since SonarQube 4.2, this property is optional if sonar.modules is set. # If not set, SonarQube starts looking for source code from the directory containing # the sonar-project.properties file. sonar.sources=. #sonar.binaries=C:/Users/Administrator/Desktop/codes/web/yyxw/WebRoot/WEB-INF/classes/com sonar.java.binaries=项目class文件 # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8 #Set jacoco Configuration #Code coverage tool sonar.java.coveragePlugin=jacoco #Path to the JaCoCo report file containing coverage data by unit tests. The path may be absolute or relative to the project base directory sonar.jacoco.reportPath=项目路径/jacoco.exec #Path to the JaCoCo report file containing coverage data by integration tests. The path may be absolute or relative to the project base directory sonar.jacoco.itReportPath=项目路径/jacoco.exec #sonar.jacoco.reportMissing.force.zero sonar.jacoco.reportMissing.force.zero=false
5、下载SonarQube Scanner:Sonar插件,读取sonar-project.properties用于扫描源码,将Jacoco数据结果文件对应到源码中去。SonarScanner最新版本是4.2,但需jdk11了。咱们的环境是jdk8,只能用SonarScanner3.2。
https://docs.sonarqube.org/pages/viewpage.action?pageId=11641634&navigatingVersions=true
6、安装SonarQube Scanner:将压缩包解压,粘贴复制到SonarQube所在文件夹,将文件合并即可。
7、将Sonar的bin文件目录加到系统环境变量中
8、验证环境变量是否加入成功:打开cmd,直接输入sonar-scanner.bat出现图中界面即成功。
9、cmd执行匹配结果
打开项目及sonar-project.properties文件所在目录
cd [项目代码路径],并在此路径下启动sonar,执行sonar-scanner.bat。
10、注意查看dos界面打印信息,如果有错误信息,具体查看报错原因。
执行完是Excution Success。
11、登录http://localhost:9000,打开匹配的项目,不同的颜色对应不同的覆盖程度,颜色越红覆盖得越少,颜色越绿,覆盖得越多,点击不同的版块,可以看到版块内部的覆盖情况。