如何将Java方法标记为;必须使用“结果”;用于静态分析目的? < P>使用GCC编译C或C++时,可以用属性< /St>((WurnUunSueDy结果))标记函数,如果调用返回某个函数的函数,则不必将其分配给任何东西,编译器会抱怨。
我在我开发的Java库中有一些方法,它们有这样的方法——调用它们然后扔掉结果总是一个bug。我希望API用户能够通过静态分析(如FindBugs或IntelliJ检查)识别此类缺陷如何将Java方法标记为;必须使用“结果”;用于静态分析目的? < P>使用GCC编译C或C++时,可以用属性< /St>((WurnUunSueDy结果))标记函数,如果调用返回某个函数的函数,则不必将其分配给任何东西,编译器会抱怨。,java,annotations,static-analysis,Java,Annotations,Static Analysis,我在我开发的Java库中有一些方法,它们有这样的方法——调用它们然后扔掉结果总是一个bug。我希望API用户能够通过静态分析(如FindBugs或IntelliJ检查)识别此类缺陷 我想知道是否有一种方法注释常用于将方法或函数标记为“必须使用结果”。FindBugs为标准库提供了一些特例bug查找程序,但是有一种通用的方法会很有用。这方面有一个完全标准的注释,它是@CheckReturnValue。FindBugs拥有它;见例 番石榴在内部使用它,例如从。使用 import javax.anno
我想知道是否有一种方法注释常用于将方法或函数标记为“必须使用结果”。FindBugs为标准库提供了一些特例bug查找程序,但是有一种通用的方法会很有用。这方面有一个完全标准的注释,它是
@CheckReturnValue
。FindBugs拥有它;见例
番石榴在内部使用它,例如从。使用
import javax.annotation.CheckReturnValue;
.
.
.
@CheckReturnValue
Google上有一些@CheckReturnValue的好例子。(如果您喜欢FindBugs之类的静态分析工具,那么您一定要去看看;它是在源代码/AST上工作的,而不是字节码,这使它成为FindBugs之类工具的补充。)如果您在2019年或以后阅读此文章:使用
@edu.umd.cs.findbugs.annotations.CheckReturnValue
对该方法进行注释,可从com.github.spotbug:spotbug annotations
获得。是FindBugs的主动维护继承者。IntelliJ IDEA默认情况下,如果忽略返回结果,将显示一条警告。我不认为会发生这种情况。是否有必须为此启用的特定检查?这里是:我明白了,谢谢。我想我可以在我的项目中发布这样一个列表,但是基于注释的方法会更简洁。也许我会向JetBrains.ErrorProxy提交一个功能请求,现在也有这样一个检查:有没有办法让IntelliJ IDEA自动将其添加到任何使用返回值创建的新函数中?您关于SpotBugs的说法是正确的,但您可能指的是“edu.umd.cs.findbugs.annotations.CheckReturnValue”感谢您标记此Christophe,我已经用正确的包名更新了帖子。