如果表达式没有副作用并且其结果始终相同(就 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 最新变化