gpt4 book ai didi

java - Jacoco仪器 'Missing @CsvField annotation on field'

转载 作者:行者123 更新时间:2023-12-02 12:51:25 29 4
gpt4 key购买 nike

我正在尝试使用 TeamCity CI 工具的 Jacoco 代码覆盖分析器插件,但是在 Jacoco 检测时有一些类失败,导致错误:

java.lang.annotation.AnnotationFormatError:字段 com.myApp.MyClass.$jacocoData 上缺少 @CsvField 注释

我正在使用 JSefa 库将对象序列化为 csv,我有涵盖序列化的测试,但是当尝试使用 Jacoco 覆盖运行程序运行测试时,我收到了提到的错误,它提示名称为 jacocoData 的字段应该由 Jacoco 仪器创建。

我知道我可以跳过这些类的检测,但这不是我想要的,因为我将丢失它们的覆盖率指标。

最佳答案

我不知道“Apache JSefa”是什么意思:在 Apache Software Foundation 中找不到具有此类名称的项目,能够找到一个相当旧的 http://jsefa.sourceforge.net/ ,但它不属于 Apache Software Foundation,即使它使用 Apache 许可证也是如此。

无论如何,您很可能遇到 JaCoCo FAQ 中描述的情况。如

My code uses reflection. Why does it fail when I execute it with JaCoCo?

To collect execution data JaCoCo instruments the classes under test which adds two members to the classes: A private static field $jacocoData and a private static method $jacocoInit(). Both members are marked as synthetic.

Please change your code to ignore synthetic members. This is a good practice anyways as also the Java compiler creates synthetic members in certain situation.

即您引用的“JSefa”库不会忽略合成字段,而应该忽略。

所以没有太多选择:

  • 任一库都应该得到修复。检查库的版本 - 也许您使用的是旧版本,并且这已经在新版本中修复了?如果未修复,则向库供应商报告问题。
  • 或者不使用此库/使用另一个库来执行相同的操作
  • 或者类应该被排除在代码覆盖率的计算之外

关于java - Jacoco仪器 'Missing @CsvField annotation on field',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595085/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com