gpt4 book ai didi

java - 在jacoco报告中显示来自jar包的外部源

转载 作者:行者123 更新时间:2023-12-02 13:12:03 27 4
gpt4 key购买 nike

我们在 java 项目中使用 jacoco 和 gradle-plugin 来计算覆盖率。问题是我们把从 XML 生成的类放在一个额外的项目中,并将其解析为依赖项。我们也需要这些模型类的代码覆盖率来分析它。检查我们是否在映射器类中使用了数据容器的所有 setter 方法。在模型项目中进行代码覆盖率不是一个选项。

目前 jacoco 仅在报告(html/xml/csv)中显示主项目中的类,而不显示外部 jar 的类。当我使用 eclipse 或 intellij 加载 jacoco session 时,它包含覆盖率数据。

buildscript {
...
dependencies {
...
classpath 'externalpackage:externalpackage-model'
...
}
}

compile('externalpackage:externalpackage-model:0.0.8')
testCompile('externalpackage:externalpackage-model:tests@jar')
testCompile('externalpackage:externalpackage-model:0.0.8:sources@jar')

jacoco {
toolVersion = "0.7.6.201602180812"
reportsDir = file("$buildDir/customJacocoReportDir")
}
jacocoTestReport {
reports {
xml.enabled true
csv.enabled true
html.enabled true
html.destination "${buildDir}/jacocoHtml"
}

additionalSourceDirs files('externalpackage:externalpagage:0.0.8:sources@jar')
//Doesn't work either
//additionalSourceDirs files('C:/Users/sero/Downloads/test/externalpackage-0.0.8-sources')
//additionalSourceDirs = files('C:/Users/sero/Downloads/test/externalpackage-0.0.8-sources/de/mycompany/.../MyModelClasses.java')
}

jar源码包是这样的:(根)/de/mycompany/.../MyModelClasses.java

也许有人有想法

最佳答案

我自己发现的。问题是,您还需要指定类的路径。

我将 jar 解压到构建文件夹中,并将 extraClassDirs 和 extraSourceDirs 添加到报告作业中。

这是构建文件。

configurations {
externalClasses
externalSources
}

dependencies {
externalClasses "externalpackage:externalpackage-model:0.0.8@jar"
externalSources "externalpackage:externalpackage-model:0.0.8:sources@jar"
...
}

buildscript {
...
dependencies {
...
classpath 'externalpackage:externalpackage-model'
...
}
}

compile('externalpackage:externalpackage-model:0.0.8')
testCompile('externalpackage:externalpackage-model:tests@jar')
testCompile('externalpackage:externalpackage-model:0.0.8:sources@jar')

jacoco {
toolVersion = "0.7.6.201602180812"
reportsDir = file("$buildDir/customJacocoReportDir")
}

task unzipExternalModel(type: Copy){
from zipTree(configurations.externalSources.files.first())
into "$buildDir/tmp/externalSources"
from zipTree(configurations.externalClasses.files.first())
into "$buildDir/tmp/externalClasses"
}

jacocoTestReport {
dependsOn unzipExternalModel
reports {
xml.enabled true
csv.enabled true
html.enabled true
html.destination "${buildDir}/jacocoHtml"
}
additionalSourceDirs = files("$buildDir/tmp/externalSources")
additionalClassDirs = files("$buildDir/tmp/externalClasses")
}

关于java - 在jacoco报告中显示来自jar包的外部源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com