【问题标题】:What does JaCoCo rule elements mean and how to combine themJaCoCo 规则元素是什么意思以及如何组合它们
【发布时间】:2022-03-26 02:30:53
【问题描述】:

我正在尝试理解 JaCoCo 规则,但周围没有很多很好的例子。我看到的每个线程都在传播来自docs 的相同示例。

我看到了 3 个不同的指标:

  • 元素类型(BUNDLE、PACKAGE、CLASS、SOURCEFILE 或 METHOD)
  • 限制(指令、行、分支、复杂性、方法、类)
  • 值(TOTALCOUNT、COVEREDCOUNT、MISSEDCOUNT、COVEREDRATIO、MISSEDRATIO)

我理解“元素类型”代表了每条规则的范围,很公平。

  • BUNDLE:代表整个项目
  • 包:每个 java 包
  • CLASS:顾名思义,一个类
  • SOURCEFILE:这与CLASS 有何不同?这与内部类有关吗?
  • METHOD:范围适用于每种方法

现在,限制和价值如何进入范围?例如:

<limit>
    <counter>LINE</counter>
    <value>COVEREDRATIO</value>
    <minimum>80%</minimum>
</limit>

例如,我可以用INSTRUCTION 替换LINE 吗?如果,这是什么意思?

也来自文档:

如果限制是指比率,则它必须在 0.0 到 1.0 的范围内,其中小数位数也将决定错误消息的精度。

RATIO vs COUNT 很清楚,但我可以互换使用它们吗?即:

<limit>
    <counter>LINE</counter>
    <value>TOTALCOUNT</value>
    <minimum>3</minimum>
</limit>

如果,上面的规则是什么意思? 从生成的报告中,INSTRUCTIONBRANCH 始终处于比率

【问题讨论】:

    标签: jacoco jacoco-maven-plugin


    【解决方案1】:

    所以,关于 BUNDLE, SOURCEFILECLASS 的问题的一部分刚刚在 JaCoCo 组中得到了 answered here

    基本上,

    • BUNDLE - 组合在一起的 Maven 模块中的所有类都将根据规则进行检查
    • SOURCEFILE - 将根据规则检查每个 Java 文件
    • CLASS - 将根据规则检查每个 Class 文件

    混淆开始于SOURCEFILECLASS,但您需要了解Java 文件可以有多个类。例如,这里是 Shape.java,它有 2 个类 - ShapeTriangle

    public abstract class Shape {
    }
    
    class Triangle extends Shape {
    }
    

    SOURCEFILE 将根据Shape.java 检查规则,而CLASS 将根据ShapeTriangle 检查规则。

    例如,这里是一个规则配置

    <rule>
        <element>SOURCEFILE</element><!-- Here I change it for SOURCEFILE and CLASS values -->
        <limits>
            <limit>
                <counter>INSTRUCTION</counter>
                <value>TOTALCOUNT</value>
                <maximum>1</maximum>
            </limit>
        </limits>
    </rule>
    

    以下是SOURCEFILE 配置的输出。

    [WARNING] Rule violated for source file io/codejournal/maven/jacocodemo/Shape.java: instructions total count is 6, but expected maximum is 1
    

    当您使用 CLASS 配置运行相同的东西时,输出分别针对每个类。

    [WARNING] Rule violated for class io.codejournal.maven.jacocodemo.Triangle: instructions total count is 3, but expected maximum is 1
    [WARNING] Rule violated for class io.codejournal.maven.jacocodemo.Shape: instructions total count is 3, but expected maximum is 1
    

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 2010-11-22
      • 2015-02-02
      • 1970-01-01
      • 2011-10-02
      • 2015-05-09
      • 2015-03-06
      • 2018-01-02
      • 1970-01-01
      相关资源
      最近更新 更多