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

Java 在jacoco报告中显示来自jar包的外部源,java,gradle,jacoco,Java,Gradle,Jacoco,我们在java项目中使用jacoco和gradle插件来计算覆盖率。 问题是我们将从XML生成的类放在一个额外的项目中,并将其作为依赖项解决。我们还需要这些模型类的codecoverage来分析它。检查是否在映射器类中使用了数据容器的所有setter方法。不要选择模型项目中的代码覆盖率 目前,jacoco只在报告(html/xml/csv)中显示主项目中的类,而不显示外部jar的类。当我用eclipse或intellij加载jacoco会话时,它包含覆盖率数据 buildscript { ...

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

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

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源程序包如下所示: (root)/de/mycompany/../MyModelClasses.java


也许有人有个主意

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

我将jar解压缩到build文件夹中,并将AdditionalClassDir和AdditionalSourceDir添加到报表作业中

这是构建文件

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") 
}

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

我将jar解压缩到build文件夹中,并将AdditionalClassDir和AdditionalSourceDir添加到报表作业中

这是构建文件

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") 
}

您正在谈论将“我们的类是从XML生成的”放入jacoco报告中。通常,您希望将生成的类从所有类型的代码分析中排除,因为如果生成了类,即使覆盖率很低,也无法更改任何内容。而且:生成的类通常只是数据容器,不提供任何逻辑-测试(和计算来自)getter/setter的覆盖率没有多大用处。没错,数据类不需要测试。但是这个问题的要求有点不同。我们需要验证我们的所有测试都使用这些数据容器的setter方法。有了这些,我们希望验证我们没有忘记在映射器类中设置任何字段。通常,您希望将生成的类从所有类型的代码分析中排除,因为如果生成了类,即使覆盖率很低,也无法更改任何内容。而且:生成的类通常只是数据容器,不提供任何逻辑-测试(和计算来自)getter/setter的覆盖率没有多大用处。没错,数据类不需要测试。但是这个问题的要求有点不同。我们需要验证我们的所有测试都使用这些数据容器的setter方法。有了这些,我们希望验证我们没有忘记在映射器类中设置任何字段。注意,为了获得源输出,我必须将复制任务一分为二(不支持将
设置为
两次)。注意,为了获得源输出,我必须将复制任务一分为二(不支持将
设置为
两次)