【问题标题】:Can OpenClover work along with JDO enhancment?OpenClover 可以与 JDO 增强一起工作吗?
【发布时间】:2018-06-13 02:40:25
【问题描述】:

我们有一个使用 jdo enhancement 的 gradle 项目。基本上:

增强器对 Java 编译器生成的字节码进行后处理,添加必要的字段和方法来实现所需的持久性功能。

当我尝试使用 open clover plugin 添加测试覆盖率时 - 我的测试开始失败。这是因为 OpenClover 使用了source code instrumentation。

OpenClover 移动了“jdo-enhanced”类作为备份 - 并构建了自己的类的插桩版本,因此丢失了所有 jdo-enhancements。

考虑到这个难题,是否可以同时使用 openClover(源代码检测)和 jdo 增强功能?理论上有可能吗?

【问题讨论】:

  • 为什么不能“JDO 增强”编译的类,然后再运行 Clover 增强?
  • 据我了解,clover 正在将其“仪器”代码添加到 .java 文件中,然后对其进行编译。所以如果我在 jdo 增强后运行 clover,它会回到 .java 并忽略增强器直接修改的字节码。
  • 我实际上有点误解了jdo-enhancement,它对“字节码”而不是“源”进行后处理。所以我想我可以尝试在 clover 之后运行 jdo-enhancement 看看会发生什么(如果它会 jdo-enhance clover-instrumented 类)。

标签: jdo instrumentation test-coverage clover


【解决方案1】:

与 clover 检测不同,JDO 增强修改的是字节码,而不是源代码。 因此这些任务可以被序列化。 cloverInstrumentation -> compileCloverJava -> runJDOEnhancer

假设您有一个将 sourceSet 作为输入的 runJdoEnhancer 方法,这应该可以工作:

compileCloverJava.doLast { runJdoEnhancer(sourceSets.clover, configurations.cloverRuntime) }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2016-01-29
    • 2017-02-07
    相关资源
    最近更新 更多