如果表达式的结果可以重用,则报告同一表达式在方法(或构造函数或类初始值设定项)中的多次等效出现。

如果表达式没有副作用并且其结果始终相同(就 Object.equals() 而言),则会报告该表达式。 此类表达式的示例是 a + bMath.max(a, b)a.equals(b) s.substring(a,b)。 为确保结果始终相同,已验证表达式中使用的变量在表达式之间不会更改其值。

此类表达式可能包含不可变的类(如 StringBigDecimal 等)和实用类(如 ObjectsMath)的方法(random() 除外)。 Object.equals() , Object.hashCode() , Object.toString() , Comparable.compareTo()Comparator.compare()等常用方法也可以使用,因为没有任何可见的副作用。

使用表达式复杂性阈值选项指定最小表达复杂性阈值。 指定更大的数字将删除关于短表达式的报告。

2018.3 的新功能