为了静态分析,如何将Java方法标记为“必须使用结果”?

问题描述 投票:7回答:3

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

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

我想知道是否存在通常用于将方法或函数标记为“必须使用结果”的方法注释。 FindBugs在标准库中有一些特殊情况的bug查找程序,但是一般的方法会很有用。

java annotations static-analysis
3个回答
8
投票
完全有一个标准的注释,它是@CheckReturnValue。 FindBugs拥有它;参见例如here

番石榴在内部使用它-例如in the configuration methods for Splitter-来自Splitter


2
投票
使用

JSR 305

@ CheckReturnValue的一些很好的示例在Google import javax.annotation.CheckReturnValue;
.
.
.
@CheckReturnValue
上可用。 (如果您喜欢诸如FindBugs之类的静态分析工具,则一定要签出error-prone project wiki;它可以在源/ AST上运行,而不是在字节码上运行,这使它与诸如FindBugs之类的工具互补。)

0
投票
[如果您要在2019年或以后阅读此内容:请使用error-prone中的@javax.annotation.CheckReturnValue注释该方法。 SpotBugs是FindBugs的积极继任者。
© www.soinside.com 2019 - 2024. All rights reserved.