我正在阅读使用Assertj验证结果的测试类。 偶尔,我发现了断言没有断言。
{{1}}
是否有可能在开发周期的某个地方识别这些类?我的第一个猜测是使用自定义声纳规则。虽然我不知道如何定义这个方法应该跟一个断言(一个返回void的方法?)。
答案 0 :(得分:4)
SonarJava正在使用规则S2970“断言应该是完整的”,它可以检测assertThat
而不会断言AssertJ,Fest和Truth。
答案 1 :(得分:2)
正如the AssertJ FAQ所说:
SpotBugs / FindBugs / ErrorProne等静态代码分析工具现在可以检测到这些问题,这要归功于2.5 + / 3.5+中引入的
CheckReturnValue
注释以及2.7 + / 3.7 +中的改进。
事实上,SpotBugs很容易发现这个问题,因为我刚刚使用AssertJ 3.9.0,Java 8和SpotBugs 3.1.1进行了测试:
因此,如果您在静态分析工具中没有看到此警告,可能是您已禁用使用@CheckReturnValue
注释的方法返回值的检查。