Clover:在检测之后附加不需要的代码

时间:2013-11-12 22:41:40

标签: java maven plugins clover

我正在为Checkstyle和PMD使用3.1.0的Clover插件。

以下代码将在启动检测类

时附加
public static class __CLR3_1_0crcrhnxpu1rh{public static com_cenqua_clover.CoverageRecorder R;static{com_cenqua_clover.CoverageRecorder _R=null;try{com_cen`enter code here`qua_clover.CloverVersionInfo.An_old_version_of_clover_is_on_your_compilation_classpath___Please_remove___Required_version_is___3_1_0();if(20110531154203887L!=com_cenqua_clover.CloverVersionInfo.getBuildStamp()){com_cenqua_clover.Clover.l("[CLOVER] WARNING: The Clover version used in instrumentation does not match the runtime version. You need to run instrumented classes against the same version of Clover that you instrumented with.");com_cenqua_clover.Clover.l("[CLOVER] WARNING: 

并且后续行附加了每行检测代码

__CLR3_1_0crcrhnxpu1rh.R.inc(462);

是预期的行为吗?或者是因为检测中使用的Clover版本与错误消息中所述的运行时版本不匹配?

3 个答案:

答案 0 :(得分:1)

  

是预期的行为吗?

是的,这是预期的行为。与使用字节码的Emma / Cobertura / JaCoCo相比,Atlassian Clover的仪器基于源代码。这是您可以查看其他说明的原因。

参考:

Why does Clover use source code instrumentation

答案 1 :(得分:0)

我可以找到这个问题的根本原因。这是因为检测代码而发生的。我有CheckStyle,PMD,Find Bug和Code Coverage(Clover)的插件。 Clover检测代码以找到代码覆盖率。在这种情况下,首先执行Clover,然后执行所有其他插件。因此,CheckStyle和PMD也会针对已检测的代码运行并抛出不相关的警告。要解决此问题,请更改插件运行的顺序或排除已检测的代码。

答案 2 :(得分:0)

您问的问题似乎是如何使用三叶草来检测代码,以及PMD或其他报告工具(Checkstyle,PMD,FindBugs)不使用分析源......

在我们开始配置cloverOutputDirectory

之前,我们遇到了类似的问题
<reporting>
  <plugins>
     <plugin>
        <groupId>com.atlassian.maven.plugins</groupId>
        <artifactId>maven-clover2-plugin</artifactId>
        <configuration>
          <cloverOutputDirectory>${java.io.tmpdir}/clover/</cloverOutputDirectory>
          <!-- ... -->
        </configuration>
     </plugin>
  </plugins>
</reporting>

请参阅:https://docs.atlassian.com/maven-clover2-plugin/latest/instrument-mojo.html