Java 验证断言是否已在Assertj中调用

Java 验证断言是否已在Assertj中调用,java,sonarqube,assertj,Java,Sonarqube,Assertj,我正在阅读使用Assertj验证结果的测试类。 偶尔,我会发现一个没有断言的资产 assertThat(object.getField()); 有可能在开发周期的某个地方识别这些类吗?我的第一个猜测是使用自定义声纳规则。虽然我不知道该如何定义这个方法后面应该跟一个断言(返回void的方法?)。如中所述: 由于在2.5+/3.5+中引入并在2.7+/3.7+中改进了注释,静态代码分析工具(如SpotBugs/FindBugs/ErrorProof)现在可以检测此类问题 事实上,SpotBugs很

我正在阅读使用Assertj验证结果的测试类。 偶尔,我会发现一个没有断言的资产

assertThat(object.getField());
有可能在开发周期的某个地方识别这些类吗?我的第一个猜测是使用自定义声纳规则。虽然我不知道该如何定义这个方法后面应该跟一个断言(返回void的方法?)。

如中所述:

由于在2.5+/3.5+中引入并在2.7+/3.7+中改进了注释,静态代码分析工具(如SpotBugs/FindBugs/ErrorProof)现在可以检测此类问题

事实上,SpotBugs很容易发现这个问题,因为我刚刚用AssertJ 3.9.0、Java 8和SpotBugs 3.1.1进行了测试:


因此,如果您在静态分析工具中没有看到此警告,则可能您已禁用了使用带有
@CheckReturnValue

注释的方法返回值的检查。SonarJava具有规则S2970“断言应完成”,该规则可以检测到
assertThat
,而无需AssertJ的断言,节日与真理

见: