使用GCC编译C或C ++时,可以使用属性((warn_unused_result))标记函数,如果调用返回某些内容的函数,则会导致编译器抱怨将它分配给任何东西。
我在开发的Java库中有一些方法有这样的方法 - 调用它们然后丢弃结果总是一个bug。我希望API用户能够通过静态分析识别这些错误,例如使用FindBugs或IntelliJ检查。
我想知道是否存在通常用于将方法或函数标记为“必须使用结果”的方法注释。 FindBugs为标准库提供了一些特殊的bug查找程序,但一般方法很有用。
答案 0 :(得分:6)
完全有一个标准的注释,它是@CheckReturnValue
。 FindBugs拥有它;见例如here
Guava在内部使用它 - 例如in the configuration methods for Splitter
- 来自JSR 305。
答案 1 :(得分:2)
使用
import javax.annotation.CheckReturnValue;
.
.
.
@CheckReturnValue
Google error-prone project wiki提供了一些@CheckReturnValue的好例子。 (如果你喜欢像FindBugs这样的静态分析工具,你一定要查看error-prone;它适用于源/ AST而不是字节码,这使它成为FindBugs等工具的补充。)
答案 2 :(得分:0)
如果您要在2019年或以后阅读本文,请使用@javax.annotation.CheckReturnValue
中的com.github.spotbugs:spotbugs-annotations
对该方法进行注释。 SpotBugs是FindBugs的积极维护者。