Java中没有丢弃注释

Mar*_*oll 6 java annotations static-analysis sonarqube

我和我的团队刚刚在我们的代码库中遇到了一个错误,因为我们忽略了一个不可变结构的返回值:https : //github.com/rsksmart/rskj/pull/229

我想注释方法,例如Trie.put指示用户不要丢弃该值([[nodiscard]]如 C++17 中的那样)以防止将来出现问题。

我们正在使用 SonarQube 并且能够打开来自 FindBugs 和其他程序的检查,但是如果代码不像@Override在基类中不存在的方法上使用时那样编译,那将是最好的。我试过了@CheckReturnValue,它在 IntelliJ IDE 中给了我一个警告,但没有什么可以阻止发送这样的代码。

我们可以探索哪些其他替代方法来在编译时引入更多检查?