小编Dim*_*fis的帖子

JaCoCo 规则元素的含义以及如何组合它们

我试图理解 JaCoCo 规则,但周围没有很多很好的例子。我看到的每个线程都循环使用文档中的相同示例。

我看到 3 个不同的指标:

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

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

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

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

<limit>
    <counter>LINE</counter>
    <value>COVEREDRATIO</value>
    <minimum>80%</minimum>
</limit>
Run Code Online (Sandbox Code Playgroud)

我可以替换LINEINSTRUCTION例如吗?如果,这意味着什么?

还来自文档:

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

RATIOvsCOUNT很清楚,但我可以互换使用它们吗?IE:

<limit>
    <counter>LINE</counter>
    <value>TOTALCOUNT</value>
    <minimum>3</minimum>
</limit>
Run Code Online (Sandbox Code Playgroud)

如果,上述规则意味着什么?从生成的报告中,INSTRUCTION并且BRANCH始终处于比率 哈科科报告

jacoco jacoco-maven-plugin

7
推荐指数
1
解决办法
5877
查看次数

将“this”分配给构造函数中的私有字段

我环顾四周,但找不到关于this在私有字段中分配是 Java 中的反模式的明确答案。考虑以下基于单例模式的示例:

public class Foo {

    private static Foo INSTANCE;

    private Foo() {
        INSTANCE = this;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是,在声明时,this没有完全初始化,所以它不安全,因为如果任何其他调用会使用该static字段,它可能会找到一个没有完全初始化的实例。

那是正确的吗?这是我们应该避免的事情吗?如果是,为什么?有没有办法确保这些调用是安全的(因为我们不在INSTANCE构造函数中进一步使用)?

java

1
推荐指数
1
解决办法
93
查看次数

标签 统计

jacoco ×1

jacoco-maven-plugin ×1

java ×1