java - Sonar (jacoco)+ jmockit 垃圾邮件有异常(exception)

标签 java sonarqube jmockit jacoco

我正面临一个开始真正恼人的错误。
这是我所拥有的: 1) 使用 JaCoCo 作为覆盖工具的 Sonar 3.5。 2) Jmockit lib 使用模拟执行测试。 3) 使用 maven 自动化构建过程。

所以当我首先运行 mvn clean install 时没问题,然后我运行 mvn sonar:sonar 以及这里发生的事情:

  • Jmockit 似乎可以检测它需要的类。
  • JaCoCo 无法检测已经由 Jmockit 检测的类,并吐出大量异常,表示不可能检测已经检测过的类。 然而, Sonar 似乎对这种情况有有效的输出。
    所以第一个问题是:我能以某种方式抑制这样的异常吗?这真的很关键,因为我们 CI 系统上的日志文件大小达到 50Mb (!),这是 Not Acceptable 。在我们的 CI 机器上,大量的可用空间被这样的日志吃掉了。

以下是我遇到的异常(exception)情况:

java.lang.instrument.IllegalClassFormatException: Error while instrumenting class app/MyClass.
Caused by: java.lang.IllegalStateException: Class app/MyClass is already instrumented.

假设抑制这样的异常是不可能的,我稍微调查了一下,发现 JaCoCo(Sonar 使用的一个工具和一个不能检测已经检测过的类的工具)有这样的模式 离线检测(AFAIK Sonar 既不支持此离线检测,也不能抑制此类警告)。这个东西就是专门为这种情况而设计的。所以我尝试将 JaCoCo 设置为 Maven 中的插件,但我没有这样做,因为 JaCoCo 找不到一些执行文件。当我运行 mvn clean install 时,弹出以下错误:

[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:report (report) @ webservice-mws --- [INFO] Skipping JaCoCo execution due to missing execution data file

如果我没记错的话,这个执行文件是 JaCoCo 插件的结果。我非常沮丧,不知道该怎么办。

如果有人能帮助我,我将不胜感激!
提前致谢!

JaCoCo 插件的 pom.xml 设置:

             <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.6.2.201302030002</version>
                <executions>
                    <execution>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

最佳答案

您可以使用 Cobertura 作为 Sonar 3.5.1 上的代码覆盖率。

改变它:

  1. 以管理员身份登录
  2. 转到“设置”>“配置”
  3. 在常规设置类别 > Java
  4. 设置代码覆盖插件 = cobertura

在我的项目上表现出色 ^_-

关于java - Sonar (jacoco)+ jmockit 垃圾邮件有异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16855717/

相关文章:

Hudson + Maven + Emma/Sonar = 构建周期运行 2 倍

c# - 必须设置属性 "sonar.cs.fxcop.assembly"并且项目必须已经构建

java - Mockito 可以使用参数构造函数初始化模拟对象吗?

java - 如何只模拟一个静态方法并测试另一个

java - Phonegap 与 servlet 和数据库连接 java 文件

java - 如何在子资源 @Path 没有前导斜杠的情况下创建 JAX-RS 服务

java - 如何在 Collections.forEach() 中打印计数

java - java中遇到unicode时Sonar抛出错误

jmockit - 记录期望的位置无效

java - 借助 Java 代码在 JasperReports 中添加 FilterExpression