在jacoco报告中显示jar包中的外部源代码

时间:2017-05-11 08:43:18

标签: java gradle jacoco

我们在java项目jacoco中使用gradle-plugin来计算覆盖率。 问题是我们将从XML生成的类放在一个额外的项目中并将其解析为依赖项。我们希望这些模型类的代码库也能够分析它。检查我们是否在mapper类中使用了datacontainer的所有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源包是这样的: (根)/ DE / myCompany的/.../ MyModelClasses.java

也许有人有想法

1 个答案:

答案 0 :(得分:1)

自己找到它。问题是,你需要指定类的路径。

我将jar解压缩到build文件夹中,并将additionalClassDirs和additionalSourceDirs添加到报告作业中。

这是构建文件。

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