如果表达式没有副作用并且其结果始终相同(就 Object.equals()
而言),则会报告该表达式。
此类表达式的示例是 a + b
、Math.max(a, b)
、a.equals(b)
、 s.substring(a,b)
。 为确保结果始终相同,已验证表达式中使用的变量在表达式匹配项之间不会更改其值。
此类表达式可能包含不可变的类(如 String
、BigDecimal
等)和实用程序类(如 Objects
、Math
,random()
除外)的方法。
Object.equals()
、 Object.hashCode()
、 Object.toString()
、
Comparable.compareTo()
和 Comparator.compare()
等常用方法也可以使用,因为没有任何可见的副作用。
使用表达式复杂性阈值选项可指定最小表达复杂性阈值。 指定更大的数字将移除关于短表达式的报告。
如果 Path.of
和 Paths.get
调用具有相同的实参,则被视为等效调用。 无论其实参有多复杂,这些调用始终会被报告。 使用不同的复杂性阈值可以调整这种行为。
2018.3 最新变化