8

使用 GCC 编译 C 或 C++ 时,您可以使用属性((warn_unused_result)) 标记函数,如果您调用返回某些内容然后不将其分配给任何内容的函数,这将导致编译器抱怨。

我在我开发的 Java 库中有一些方法,它们具有这样的方法 - 调用它们然后丢弃结果总是一个错误。我希望 API 用户能够通过静态分析来识别此类错误,例如使用 FindBugs 或 IntelliJ 检查。

我想知道是否有一个方法注释通常用于将方法或函数标记为“必须使用结果”。FindBugs 为标准库提供了一些特殊情况的错误查找器,但一般的方法会很有用。

4

3 回答 3

8

完全有一个标准注释,它是@CheckReturnValue. FindBugs 有它;参见例如这里

Guava 在内部使用它——例如在JSR 305的配置方法中Splitter

于 2013-05-06T16:21:09.867 回答
3

利用

import javax.annotation.CheckReturnValue;
.
.
.
@CheckReturnValue

Google容易出错的项目 wiki上提供了一些很好的 @CheckReturnValue 示例。(如果您喜欢 FindBugs 等静态分析工具,则绝对应该检查error-prone;它适用于源代码/AST 而不是字节码,这使其成为 FindBugs 等工具的补充。)

于 2013-05-09T16:35:34.980 回答
0

如果您在 2019 年或之后阅读此内容:使用@edu.umd.cs.findbugs.annotations.CheckReturnValueavailable from注释该方法com.github.spotbugs:spotbugs-annotationsSpotBugs是 FindBugs 的一个积极维护的继任者。

于 2019-11-24T12:05:42.593 回答