标签: jacoco-plugin

如何配置sonar.junit.reportPaths

我曾多次尝试在 Gradle 中配置此 sonarqube 属性sonar.junit.reportPaths,但仍然收到相同的错误消息。
Gradle 版本 -> 6.7.1
SonarQube Server 版本 -> 8.9 (docker image)
Java 版本 -> openjdk 11.0.2
Intellij 版本 -> 2021.1.2
我的 Sonarqube Gradle 配置如下:

plugins {
    id 'java'
    id 'jacoco'
    id "org.sonarqube" version "3.3"
    id 'org.jetbrains.kotlin.jvm' version '1.5.20'
}
Run Code Online (Sandbox Code Playgroud)
sonarqube {
    properties {
        property 'sonar.projectName', 'Snippets of Java code'
        property 'sonar.junit.reportPaths', 'build/test-results/test'
        property 'sonar.coverage.jacoco.xmlReportPaths', 'build/reports/test/jacocoTestReport.xml'
        property 'sonar.inclusions', '*.java,*.kt'
    }
}

jacocoTestReport {
    reports {
        xml.required = true
        csv.required = false
    }
}
Run Code Online (Sandbox Code Playgroud)

我仍然收到以下消息: …

gradle sonarqube gradle-plugin java-11 jacoco-plugin

12
推荐指数
0
解决办法
6708
查看次数

由 groovy.lang.MissingPropertyException 引起无法获取 org.gradle.api.Project 类型的项目 ':lib1' 的未知属性 'android'

为了在这里解决我的问题:Applying JaCoCo to all Android Studio gradle module,我在这里应用了解决方案。到目前为止,这对于具有以下功能的模块来说效果很好

plugins {
    id("com.android.library")
}
Run Code Online (Sandbox Code Playgroud)

一旦我将所需的内容添加apply from: '../jacoco/modules.gradle'到标记为 Java 库的模块中

plugins {
    id("java-library")
}
Run Code Online (Sandbox Code Playgroud)

我得到一个

Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'android' for project ':lib1' of type org.gradle.api.Project.
Run Code Online (Sandbox Code Playgroud)

我想将其添加apply from到 java 库中,以便也为它们生成 JaCoCo 报告。我在这里想念什么?

gradle jacoco android-gradle-plugin jacoco-plugin

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

在 gradle 7.4 上使用 jacoco-report-aggregation 插件生成的合并覆盖单元和集成测试结果

我正在将我的项目迁移到 Gradle 7.4,我想使用新的插件 jacoco-report-aggregation 来生成完美合并的单元和集成测试覆盖率报告以发送到 sonarqube。

我在每个子项目上使用 jvm 测试套件。

在此之前,我曾经在每个子项目中手动合并 exec 文件,效果很好

因此,我创建了两个任务: testCodeCoverageReport 和integrationTestCodeCoverageReport 针对 TestSuiteType.UNIT_TEST 和 TestSuiteType.INEGRATION_TEST testType,并将报告发送给 sonarqube。

我的配置:

plugins {
    id "org.sonarqube" version "3.3"
    id "org.owasp.dependencycheck" version "6.4.1.1"
    id 'org.springframework.boot' version "$springBootVersion"

    // Aggregating code coverage with JaCoCo
    id 'jacoco-report-aggregation'
}



dependencies {
    jacocoAggregation project(':subproject1')
    jacocoAggregation project(':subproject2')
}


reporting {
    reports {
        testCodeCoverageReport(JacocoCoverageReport) {
            testType = TestSuiteType.UNIT_TEST
        }
        
        integrationTestCodeCoverageReport(JacocoCoverageReport) {
            testType = TestSuiteType.INTEGRATION_TEST
        }
    }
}


project.tasks["sonarqube"].dependsOn tasks.named('testCodeCoverageReport', JacocoReport)
project.tasks["sonarqube"].dependsOn tasks.named('integrationTestCodeCoverageReport', JacocoReport) 
 
sonarqube.properties {
    property "sonar.coverage.jacoco.xmlReportPaths", …
Run Code Online (Sandbox Code Playgroud)

gradle sonarqube jacoco-plugin

7
推荐指数
1
解决办法
1666
查看次数

java.lang.LinkageError:加载程序“bootstrap”尝试使用 Java11 和 Jacoco 0.8.5 为 java.lang.$JaCoCo 重复类定义

在 Jenkins 中运行测试项目时出现以下错误

Caused by: java.lang.LinkageError: loader 'bootstrap' attempted duplicate class definition for java.lang.$JaCoCo. (java.lang.$JaCoCo is in module java.base of loader 'bootstrap')

Jacoco 在父 pom 和当前测试 pom 中定义,具有不同的目标。

父pom.xml

<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.5</version>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.13</version>
        </dependency>
      </dependencies>
      <executions>
        <execution>
          <id>validate-headless</id>
          <phase>validate</phase>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
          <configuration>
            <skip>true</skip>
            <propertyName>failsafe.argLine</propertyName>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

测试项目-pom.xml

<properties>
  <maven.repo.local>${user.home}/.m2/repository</maven.repo.local>
  <itCoverageAgent>-javaagent:${maven.repo.local}/org/jacoco/org.jacoco.agent/0.8.5/org.jacoco.agent-0.8.5-runtime.jar=destfile=${basedir}/target/jacoco-it.exec</itCoverageAgent>
</properties>

<build>
  <plugins>
    <plugin>
      <artifactId>maven-failsafe-plugin</artifactId>
      <configuration>
        <argLine>${failsafe.argLine} ${itCoverageAgent}</argLine>
        <testFailureIgnore>true</testFailureIgnore>
        <reuseForks>true</reuseForks>
      </configuration>
    </plugin>
  </plugins>
</build>

<profiles>
  <profile>
    <id>coverage</id>
    <build> …
Run Code Online (Sandbox Code Playgroud)

java maven jacoco java-11 jacoco-plugin

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

Java.lang.IllegalStateException:无法解析 JaCoCo XML 报告:jacoco.exec

我正在尝试发布由 Jacoco 插件生成的覆盖率报告 - jacoco.exec。但是我得到了下面提到的声纳和 Jacoco 配置的异常。

SonarCube 版本6.7.7

[ERROR] Coverage report 'jacoco.exec' could not be read/imported. Error: {}
java.lang.IllegalStateException: Failed to parse JaCoCo XML report: jacoco.exec
    at org.sonar.plugins.jacoco.XmlReportParser.parse(XmlReportParser.java:96)
    at org.sonar.plugins.jacoco.JacocoSensor.importReport(JacocoSensor.java:73)
    at org.sonar.plugins.jacoco.JacocoSensor.importReports(JacocoSensor.java:64)
    at org.sonar.plugins.jacoco.JacocoSensor.execute(JacocoSensor.java:48)
    at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
    at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)
    at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)
    at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68)
    at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88)
    at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:177)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
    at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:291)
    at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:286)
    at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:264)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
    at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48)
    at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
    at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:121)
    at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:71)
    at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native …
Run Code Online (Sandbox Code Playgroud)

java jacoco sonarqube jacoco-maven-plugin jacoco-plugin

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

jacoco 检查中的错误 - 参数“规则”丢失或无效

这是我在运行 mvn jacoco:check for a maven application 时遇到的错误。因此,不会生成报告。

 [ERROR] Failed to execute goal org.jacoco:jacoco-maven-plugin:0.8.3:check (default-cli) on project 

    Netflix: The parameters 'rules' for goal org.jacoco:jacoco-maven-plugin:0.8.3:check are missing or invalid -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.jacoco:jacoco-maven-plugin:0.8.3:check (default-cli) on project Netflix: The parameters 'rules' for goal org.jacoco:jacoco-maven-plugin:0.8.3:check are missing or invalid
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
Run Code Online (Sandbox Code Playgroud)

这是我在 pom.xml 中的 jacoco 插件。我觉得规则没问题。我想知道缺少什么...

<plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <phase>test</phase>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <!-- Sets the …
Run Code Online (Sandbox Code Playgroud)

testing maven jacoco jacoco-maven-plugin jacoco-plugin

4
推荐指数
1
解决办法
2758
查看次数

JaCoCo gradle 插件忽略版本

摇篮版本:6.1.1

Android Gradle 插件:4.0.0

当尝试运行我的 jacoco 覆盖范围时,它似乎没有考虑版本。当我查看 HTML 报告时,它显示“使用 JaCoCo 0.7.9.201702052155 创建”,尽管我已经进行了toolVersion = "0.8.5"设置。该报告也没有修复我期望在 0.8.3 中与 Kotlin 相关的问题,作为二次确认,这不起作用。

apply plugin: 'jacoco'

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

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
    jacoco.excludes = ['jdk.internal.*']
}

project.afterEvaluate {
    (android.hasProperty('applicationVariants')
            ? android.'applicationVariants'
            : android.'libraryVariants').all { variant ->
        def variantName = variant.name
        def unitTestTask = "test${variantName.capitalize()}UnitTest"
        def uiTestCoverageTask = "create${variantName.capitalize()}CoverageReport"

        tasks.create(name: "${unitTestTask}Coverage", type: JacocoReport, dependsOn: [
                "$unitTestTask",
                "$uiTestCoverageTask"
        ]) {
            group = "Reporting"
            description = "Generate Jacoco …
Run Code Online (Sandbox Code Playgroud)

gradle jacoco android-gradle-plugin jacoco-plugin

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

升级到 AGP 4.2.0,无法生成 Jacoco 代码覆盖率报告

Jacoco代码覆盖率运行良好,直到我将Android Gradle 插件升级到4.2.0,不仅生成了应用程序模块代码覆盖率,对于模块它也不起作用。任何想法如何解决这个问题。

android jacoco android-gradle-plugin gradle-kotlin-dsl jacoco-plugin

3
推荐指数
2
解决办法
395
查看次数

配置 jacocoTestReport 以读取多个 .exec 文件作为输入

在我的 gradle 版本中,我有 2 个这样的测试任务:

task testAAA(type: Test) {
    filter {

        includeTestsMatching "*AAA*"
    }

    finalizedBy jacocoTestReport
}
Run Code Online (Sandbox Code Playgroud)

task testBBB(type: Test) {
    filter {

        includeTestsMatching "*BBB*"
    }

    finalizedBy jacocoTestReport
}
Run Code Online (Sandbox Code Playgroud)

这会在 build/jacoco 中生成 2 个 .exec 文件:

  • 测试AAA.exec

  • testBBB.exec

我想生成一个单一的覆盖率报告,它从两个/所有 .exec 文件中获取输入,我试过这个:

jacocoTestReport {
    executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")

    reports {
        xml.enabled true
    }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试时,我收到此错误:

Execution failed for task ':Project1:jacocoTestReport'.
> Unable to read execution data file Project1/build/jacoco/test.exec

Project1/build/jacoco/test.exec (No such file or directory)

Run Code Online (Sandbox Code Playgroud)

当我明确提供 executionData 规范时,为什么 jacocoTestReport 寻找“test.exec”?

java gradle jacoco jacoco-plugin

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