jacoco统计代码覆盖率方案


1、本地下载jacoco,然后在启动脚本中 追加 -javaagent:C:\Users\Administrator\Desktop\jacoco-0.8.5\lib\jacocoagent.jar=includes=*,output=tcpserver,port=1027,address=10.110.81.133,append=true

2、下载ant,配置好build.xml。以下为配置示例

<?xml version="1.0" ?>












































































































































































































3、使用python实现获取jar内的class文件,代码示例如下

#!/usr/bin/python
# -*- coding:gb2312 -*-
import os
import shutil
import zipfile
import configparser
import time

def GetJarFile(apppath,cfile_path):
jfiles = []
path = apppath
if os.path.exists(cfile_path):
try:
shutil.rmtree(cfile_path)
except:
os.rmdir(cfile_path)
time.sleep(5)
try:
os.mkdir(cfile_path)
except :
print('层级删除文件后未释放,请重新启动工具尝试!')
os.system('pause')
for root, dirs, files in os.walk(path):
copy_path = root.replace(path,cfile_path)
if not os.path.exists(copy_path):
os.mkdir(copy_path)
for file in files:
if '.jar' in file:
jfile = os.path.join(root,file)
jfile_copy = os.path.join(copy_path,file)
jfiles.append(jfile_copy)
shutil.copyfile(jfile,jfile_copy)
print('第一级共有:'+ str(len(jfiles)) + '个Jar包!')
return jfiles

def JarToZip(jfiles):
zipfiles = []
for file in jfiles:
new_file = file.replace('.jar','.zip')
if os.path.exists(new_file):
os.remove(new_file)
os.rename(file,new_file)
zipfiles.append(new_file)
return zipfiles

def ZipToFile(zipfiles):
for file in zipfiles:
try:
zf = zipfile.ZipFile(file)
str1 = file.replace('.zip','')
str1 = str1.replace(' ','')
zf.extractall(path=str1)
zf.close()
os.remove(file)
except :
print(file + '解压出错!')
continue

config = configparser.ConfigParser()
config.read("config.ini",encoding='utf-8')
apppath = config.get('path', 'apppath')
cfile_path = config.get('path', 'cfile_path')
jfiles = GetJarFile(apppath,cfile_path)
zipfiles = JarToZip(jfiles)
ZipToFile(zipfiles)
jfiles_1 = GetJarfiles_1(cfile_path)
zipfiles_1 = JarToZip(jfiles_1)
ZipToFile(zipfiles_1)
print("Class生成成功!")
#os.system("pause")

4、通过计划任务定时执行 ant report 和 ant dump,生成报告和获取二进制文件

5、nginx配置html转发端口

6、集成TFS前端展示