Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Java方法标记为;必须使用“结果”;用于静态分析目的? < P>使用GCC编译C或C++时,可以用属性< /St>((WurnUunSueDy结果))标记函数,如果调用返回某个函数的函数,则不必将其分配给任何东西,编译器会抱怨。_Java_Annotations_Static Analysis - Fatal编程技术网

如何将Java方法标记为;必须使用“结果”;用于静态分析目的? < P>使用GCC编译C或C++时,可以用属性< /St>((WurnUunSueDy结果))标记函数,如果调用返回某个函数的函数,则不必将其分配给任何东西,编译器会抱怨。

如何将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

我在我开发的Java库中有一些方法,它们有这样的方法——调用它们然后扔掉结果总是一个bug。我希望API用户能够通过静态分析(如FindBugs或IntelliJ检查)识别此类缺陷


我想知道是否有一种方法注释常用于将方法或函数标记为“必须使用结果”。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,我已经用正确的包名更新了帖子。