当前位置: 首页 > news >正文

做网站开公司太原建站的模板

做网站开公司,太原建站的模板,wordpress 开发飞猪接口,wordpress缓存单个页面6.2.2 覆盖率文件解析jacoco-parser由于移动端的特殊性,jacoco插件无法直接在java项目中直接引用,然后解析覆盖率文件。于是就开发了一下android端的工具 ,打包成jar包来解析覆盖率文件。1,项目整体情况早期这个工具只有EC文件解析…

6.2.2 覆盖率文件解析jacoco-parser

由于移动端的特殊性,jacoco插件无法直接在java项目中直接引用,然后解析覆盖率文件。于是就开发了一下android端的工具 ,打包成jar包来解析覆盖率文件。

1,项目整体情况

早期这个工具只有EC文件解析功能,后来做覆盖率合并的时候,我又添加上了覆盖率数据的去除和添加功能,形成jacoco-parser2.0.jar,针对这个工具的功能,会有另外的文章介绍,此处只介绍覆盖率EC文件的解析。

2,覆盖率文件解析类

通过在项目中添加jacoco插件,然后引用插件的类处理EC文件,根据探针解析出对应的覆盖率数据在文件中的行,再反查对应的函数,输出为json文件。
i
import com.google.gson.Gson
import org.jacoco.core.analysis.Analyzer
import org.jacoco.core.analysis.CoverageBuilder
import org.jacoco.core.analysis.ICounter
import org.jacoco.core.tools.ExecFileLoader
import java.io.File/********************************************************************************  Read jacoco exec file, java class file, and source file to produce coverage lines.* @author songxianfeng@kuaishou.com*/
data class CoverageInfo(val filename: String,var covered: Set<Int>,var nocovered: Set<Int>
)class JacocoParserOperation {val Covered = setOf(ICounter.FULLY_COVERED, ICounter.PARTLY_COVERED)val NoCovered = setOf(ICounter.NOT_COVERED)fun readJacocoECFileContent(ecFileNames:Array<File>,classesDir:File,sourceDir: Array<File>,output: File){val ecFileLoader = ExecFileLoader()for (file in ecFileNames) {ecFileLoader.load(file)}val coverageBuild = CoverageBuilder()val analyzer = Analyzer(ecFileLoader.executionDataStore, coverageBuild)analyzer.analyzeAll(classesDir)val sourceFileGroup = sourceDir.map {it.walk().filter { file -> file.isFile }.toSet()}.fold(setOf<File>()) { s, e -> s + e}.groupBy { it.name }val bundle = coverageBuild.getBundle("")val coverageMap = mutableMapOf<String, CoverageInfo>()bundle.packages.map { pkg ->//println("${pkg.name} - ${pkg.sourceFiles} - ${pkg.lineCounter}")for (c in pkg.classes) {val sourceFile =sourceFileGroup[c.sourceFileName]?.findLast { f -> f.path.indexOf(c.packageName) > 0 } ?: continuevar coverageInfo = coverageMap[sourceFile.toString()]if (coverageInfo == null) {coverageInfo = CoverageInfo(sourceFile.toString(), setOf(), setOf())}
//                println("class: ${c.name}, source: ${c.sourceFileName}")for (i in c.firstLine..c.lastLine) {if (c.getLine(i).status in Covered) {coverageInfo.covered += i} else if (c.getLine(i).status in NoCovered) {coverageInfo.nocovered += i}}coverageMap[sourceFile.toString()] = coverageInfo}}//        coverageMap.forEach { (k, v) -> println("$k -> $v") }val gson = Gson()val content = gson.toJson(coverageMap)output.writeText(content)}
}

3,工具使用方法

(1)先对项目进行打包
在项目根目录下执行以下命令:
./grwdlew jar

(2)调用工具解析文件
java -jar ./build/libs/jacoco-parser-2.0-SNAPSHOT.jar 
-e /Users/***/first_merged.ec 
-c /Users/****/build_classes_8900 
-s /Users/****/packages 
-o /*****/ecparse.json
  • -e 指定EC文件路径
  • -c 项目源码文件对应的类文件
  • -s 项目的源码文件路径
  • -o 解析后的输出结果,格式为{"文件路径":[函数列表],"文件路径1":[函数列表1]}
http://www.dtcms.com/a/599110.html

相关文章:

  • vs python 网站开发优秀网站管理员
  • 西安哪里有做网站的中铁建设集团官方网站
  • 好看的手机网站推荐广州网站建设商家
  • 电商网站建设小强wordpress上传失败
  • 装饰工程设计东莞网站建设展示型网站设计与制作团队
  • OpenRefine:一款免费开源、功能强大的数据清洗工具
  • 工控人如何做自己的网站运动网站建设主题
  • TensorRT笔记(2):解析样例中Logger日志类的设计
  • 南京领动做网站怎么样佛山制作网站公司推荐
  • 苏州建网站哪个好做定制的网站
  • 江苏网站建设流程朔州市建设监理公司网站
  • AI销冠是什么?熊猫智汇公司如何利用它提升企业效率?
  • 并发编程 | 提高程序效率的关键技术
  • 电子商务网站建设 项目规划书iis网站
  • 网站规划与建设实验心得企业网络营销策划必须以什么为核心
  • Bash Glob 通配符详细指南:从 POSIX 标准到高级用法
  • 景观设计论文seo关键词优化排名推广
  • 小米手机网站的风格设计莱州教育网站
  • 上海自适应网站设计网络营销策划书实施计划
  • 自己怎做网站后台正规医院看男科大概多少钱
  • NebulaChat 框架学习笔记
  • 网站规划建设方案模板网站建设和美工
  • 怎样用自己电脑做网站c2c电子商务平台有哪些?
  • 专业设计网站有哪些建设部的官方网站
  • CottonCloudsProcreate软笔刷套装打造柔和棉云质感日漫风插画创作资源
  • 山儿网站建设公司小程序 制作公司
  • 做暧昧网站无锡做网站的企业
  • 中堂做网站wordpress下载软件
  • 天津微外卖网站建设郑州大型网站建设电话
  • 《编程工具上架应用商店的避坑+引流全攻略》