相关疑难解决方法(0)

Maven Jacoco配置 - 从报告中排除类/包不起作用

我有一个maven多模块项目,我正在使用jacoco-maven进行代码覆盖率报告.不应该报告某些类,因为它们是Spring配置,我对它们不感兴趣.

我已经宣布了maven-jacoco插件如下:

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<configuration>
    <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
    <exclude>some.package.*</exclude>
    <exclude>**/*Config.*</exclude>
    <exclude>**/*Dev.*</exclude>
    <exclude>some/package/SomeClass.java</exclude>
</configuration>
<executions>
    <execution>
        <goals>
            <goal>prepare-agent</goal>
        </goals>
    </execution>
    <execution>
        <id>report</id>
        <phase>prepare-package</phase>
        <goals>
            <goal>report</goal>
        </goals>
    </execution>
    <execution>
        <id>post-unit-test</id>
        <phase>test</phase>
        <goals>
            <goal>report</goal>
        </goals>
    </execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

问题是,当我执行mvn clean verifyjacoco时,仍会报告应该已被排除的类,因为我的xml配置指出了.如何正确配置?

configuration maven jacoco jacoco-maven-plugin

80
推荐指数
5
解决办法
12万
查看次数

无法为 org.gradle.testing.jacoco.tasks.JacocoReport 类型的任务“...”设置只读属性“classDirectories”的值

我刚刚使用新版本的 Gradle 将我的 Android Studio 更新到 4.0,现在我的构建出错了。

Cannot set the value of read-only property 'classDirectories' for task ':app:testNameOfMyFlavorDebugUnitTestCoverage' of type org.gradle.testing.jacoco.tasks.JacocoReport.

到目前为止它一直工作正常,我不知道要改变什么才能让它再次工作。

android build.gradle android-gradle-plugin

40
推荐指数
2
解决办法
2万
查看次数

jacoco在使用蚂蚁时不排除课程

我无法获得jacoco/junit ant目标以从覆盖范围中排除类.我可以通过这样的方式来排除包:

<jacoco:coverage destfile="${coverage.reports.dir.xml}/output.jacoco" excludes="foo.*:bar.fiz.*:my.long.package.name.*">
Run Code Online (Sandbox Code Playgroud)

这并不排除我的测试类,因为测试类与它们测试的类在同一个包中.我已经厌倦了用正则表达式排除测试类,但它不起作用.

<jacoco:coverage destfile="${coverage.reports.dir.xml}/output.jacoco" excludes="foo.*:bar.fiz.*:**/Test.*:**/Tests.*">
Run Code Online (Sandbox Code Playgroud)

我还尝试在报告任务中包含我想要的类,但由于我们的测试类位于不起作用的相同包中.我们的构建将所有类放在同一目录中,例如buildRoot/classes/ProjectName.因此buildRoot/classes/ProjectName/foo将包含测试和非测试类的编译类.

有关如何让jacoco排除此设置中的所有测试的任何建议吗?

谢谢.

jacoco

9
推荐指数
1
解决办法
7374
查看次数

JaCoCo - 从报告中排除JSP

在JaCoCo生成的Maven站点报告中,由于我所有已编译的JSP都包含在内(并且它们很长),因此我的报道非常糟糕.我尝试了以下内容reporting:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <configuration>
        <exclude>target/classes/jsp/**/*.class</exclude>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

另一个外观相似的配置在buildPOM的prepare-package相位部分.这并不能阻止JSP类包含在报告中.怎么避免呢?

jsp maven jacoco

9
推荐指数
1
解决办法
6826
查看次数

Gradle Jacoco - 覆盖率报告包括配置中排除的类别

我在项目中添加了一组没有测试的源代码,我不希望它们破坏我的测试覆盖率统计信息.我在下一个方面配置了Jacoco:

test {
    jacoco{
        excludes = ['org/bla/**']
        includes = ['com/bla/**']
        append = false
    }
}

jacocoTestReport {
    dependsOn test
    description = "Generate Jacoco coverage reports after running tests."
    reports {
        xml.enabled true
        html.enabled true
    }
    classDirectories = fileTree(dir: 'build/classes/main', include: 'com/bla/**')
    sourceDirectories = fileTree(dir: 'scr/main/java', include: 'com/bla/**')
}
Run Code Online (Sandbox Code Playgroud)

但无论如何,在生成报告时,Jacoco还包括来自org.bla的

有人能帮我吗 ?

编辑

经过一些调试后,似乎所有默认输出都添加到org.gradle.testing.jacoco.tasks.JacocoReport#classDirectories私有方法中org.gradle.testing.jacoco.plugins.JacocoPlugin#addDefaultReportTasks

使用此类代码时可见:

jacocoTestReport {
    classDirectories = files('build/classes/main/com/bla')
    println("-----------------------------------------------------------")
    getAllClassDirs().each { File file ->
        println(file.absolutePath)
    }
    println("-----------------------------------------------------------")
    getAdditionalClassDirs().each{ File file ->
        println(file.absolutePath)
    }
} …
Run Code Online (Sandbox Code Playgroud)

gradle jacoco

9
推荐指数
1
解决办法
1万
查看次数

使用Sonarrunner和Gradle从Jacoco报告中排除软件包

有没有办法从SonarQube中排除包(由gradle + sonar-runner配备)覆盖率报告(由jacoco生成),而不将它们完全排除在项目之外?

以下是我到目前为止尝试的内容:

版本信息

  • SonarQube 4.5.1
  • Gradle 2.2.

Jacoco配置

// JaCoCo test coverage configuration
tasks.withType(Test) { task ->
    jacoco {
        append = false

        // excluded classes from coverage defined in above configuration
        excludes = excludedClasses()
    }

    jacocoTestReport {
        doFirst {
            classDirectories = fileTree(dir: "${buildDir}/classes/main/").exclude(excludedClasses())
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Sonarrunner配置

用于从声纳分析中排除包的属性设置.将此添加到我的配置会导致包在Sonar中根本不显示的情况.

property 'sonar.exclusions', excludedClasses().join(',')
Run Code Online (Sandbox Code Playgroud)

用于从jacoco中排除包的属性设置.设置此选项会导致包裹被排除在覆盖率分析之外,但会显示0%会累积到不良总分.

property 'sonar.jacoco.exclusions', excludedClasses().join(',')
Run Code Online (Sandbox Code Playgroud)

gradle jacoco sonar-runner

8
推荐指数
4
解决办法
2万
查看次数

排除不适用于 Jacoco Gradle 插件

我正在为我的项目设置 Jacoco Gradle 插件。该插件运行良好并生成覆盖率报告,但它不排除我会排除的包。

我想包含的类在 com/xxx/ws/hn/** 中,我想排除的类在 com/xxx/ws/enterprise/** 中。

这是我的 Gradle 脚本:

apply plugin: "jacoco"

jacoco {
    toolVersion = "0.6.2.201302030002"
    reportsDir = file("$buildDir/reports/jacoco")
}

test {
    jacoco{
        excludes = ["com/xx/ws/enterprise/**/*"]
        includes = ["com/xxx/ws/hn/**/*"]
        append = false
    }
}

jacocoTestReport {
    dependsOn test
    description = "Generate Jacoco coverage reports after running tests."
    executionData = files('build/jacoco/test.exec')
    reports {
        xml.enabled true
        html.enabled true
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?我尝试了各种排除模式,包括“。” 包的分隔符而不是“/”,但似乎没有任何作用。任何帮助将不胜感激。

java gradle jacoco

6
推荐指数
1
解决办法
1797
查看次数

Jacoco 如何正确排除包

我正在使用 Jacoco Maven 插件版本 0.8.1(使用 Java 8 / Maven 3.1.0)。无法让 Jacoco 使用路径排除。我想排除这些包:

  • my.package.model
  • my.package.exception

我试过的:

<build>
      <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.1</version>
                <executions>
                    <execution>
                        <id>prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>  
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <exclude>my.package.model</exclude>
                        <exclude>my.package.exception</exclude>
                    </excludes>
                </configuration>
            </plugin>
      </plugins>
</build>

<reporting>
        <plugins>
             <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.1</version>
                <configuration>
                    <excludes>
                        <exclude>my.package.model</exclude>
                        <exclude>my.package.exception</exclude>
                    </excludes>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)

还有(就excludes部分而言):

<excludes>
     <exclude>my.package.model**</exclude>
     <exclude>my.package.exception**</exclude>
</excludes>

<excludes>
     <exclude>my/package/model/**/*</exclude>
     <exclude>my/package/exception/**/*</exclude>
</excludes>

<excludes>
     <exclude>*/my/package/model/**/*</exclude>
     <exclude>*/my/package/exception/**/*</exclude>
</excludes>

<excludes>
     <exclude>**/my/package/model/**/*</exclude>
     <exclude>**/my/package/exception/**/*</exclude>
</excludes>

<excludes> …
Run Code Online (Sandbox Code Playgroud)

java maven jacoco

6
推荐指数
2
解决办法
2万
查看次数

JaCoCo gradle 插件排除

我想从 JaCoCo 中排除一些类,但排除似乎不起作用。

例如,我想排除所有以 Dao 结尾的 Java 类(例如 com.company.EmplyeeDao)。

我已经尝试了以下代码,但当我将其推送到声纳/使用 JacocoTestReport 时,它仍然显示。

test {
    jacoco {
        append = true
        destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
        classDumpFile = file("$buildDir/jacoco/classpathdumps")
        excludes = ['*Dao']
}
}
Run Code Online (Sandbox Code Playgroud)

我将其与 Android 结合使用。到底是怎么回事?

android gradle jacoco

5
推荐指数
1
解决办法
2万
查看次数

Gradle jacoco覆盖报告有多个子模块?

有没有人知道如何为包含多个gradle子模块的codecoverage的java jacoco报告配置gradle文件?

我当前的方法只显示当前子模块的代码覆盖,但不显示兄弟 - 子模块的代码覆盖.

我有这个项目结构

- build.gradle (1)
- corelib/
    - build.gradle (2)
    - src/main/java/package/Core.java
- extlib/
    - build.gradle (3)
    - src/main/java/package/Ext.java
    - src/test/java/package/Integrationtest.java
Run Code Online (Sandbox Code Playgroud)

当我执行gradlew :extlib:check :extlib:jacocoTestReportjunit-test 时,执行"Integrationtest.java"并生成一个codecoverage报告,该报告不包含像Core.java这样的issib类的codecoverage

结果应该包括Ext.java和Core.java的代码库

我已经读过了

但没有发现任何线索

这是gradle文件的内容

// root build.gradle (1)
// Top-level build file where you can add configuration options 
// common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)
// build.gradle (2) subproject …
Run Code Online (Sandbox Code Playgroud)

java code-coverage gradle jacoco

5
推荐指数
2
解决办法
8676
查看次数

从 Jenkins 中的 Jacoco 覆盖范围中排除包

由于我的 Jenkins 管道失败,尝试从覆盖率报告中排除包。我有一个包含所有 POJO:s 的子项目。我不想为所有这些编写 uittest。因此,他们会降低分支/线路覆盖率,使覆盖率低于阈值并使我的构建失败。

应该可以排除一些软件包,但我无法让它工作。

我有以下 jacoco.gradle 文件:

apply plugin: 'jacoco'  
apply plugin: 'java'  
jacoco {  
  toolVersion = "0.8.2"  
}  

jacocoTestReport {  
reports {  
  xml.enabled true  
  csv.enabled false  
  html.enabled true  
}  

afterEvaluate {  
  classDirectories = files(classDirectories.files.collect {  
     fileTree(dir: it, exclude: '**xxx/yyy/zzz/**')  
  })  
}  

task coverage { dependsOn 'jacocoTestReport' }  

check.dependsOn 'jacocoTestReport'  
Run Code Online (Sandbox Code Playgroud)

我的 sonar.gradle 文件中的以下内容:

apply plugin: 'org.sonarqube'  

sonarqube {  
properties {  
  property "sonar.forceAnalysis", "true"  
  property "sonar.forceAuthentication", "true"  
  property "sonar.java.coveragePlugin", "jacoco"  
  property "sonar.login", ""  
  property "sonar.password", ""  
 }  
} …
Run Code Online (Sandbox Code Playgroud)

java gradle jenkins jacoco sonarqube

3
推荐指数
1
解决办法
7590
查看次数