【发布时间】:2011-09-13 10:54:09
【问题描述】:
在FindBugs 分布中,annotations.jar不是jsr305.jar 的子集。但是,似乎有几个注释是重复的(完全重复或非常接近)。如果可以选择,我应该更喜欢jsr305.jar 中的注释吗?
请注意,我不仅想知道使用来自jsr305.jar 的注释会“更好”,因为它们代表了一个标准。相反,如果我更喜欢特定注释的jsr305.jar 版本,我想知道 FindBugs 工具是否会执行相同(或更好)的分析。可能会出现一些 jsr305.jar 注释应该是首选的情况,而另一些则不应该。
在撰写本文时,我正在使用 FindBugs 1.3.9,即 the most recent version。在这个版本中,我看到以下选项(如果有其他选项,请更新此table):
edu.umd.cs.findbugs.annotations.CheckForNull → javax.annotation.CheckForNull
edu.umd.cs.findbugs.annotations.CheckReturnValue → javax.annotation.CheckReturnValue
edu.umd.cs.findbugs.annotations.NonNull → javax.annotation.Nonnull(NB 大写)
edu.umd.cs.findbugs.annotations.Nullable → javax.annotation.Nullable
edu.umd.cs.findbugs.annotations.When → javax.annotation.meta.When
另外,所有的JCIP annotations 都是重复的:
net.jcip.annotations.GuardedBy → javax.annotation.concurrent.GuardedBy
net.jcip.annotations.Immutable → javax.annotation.concurrent.Immutable
net.jcip.annotations.NotThreadSafe → javax.annotation.concurrent.NotThreadSafe
net.jcip.annotations.ThreadSafe → javax.annotation.concurrent.ThreadSafe
【问题讨论】:
-
对不起,我还没有意识到你的问题的范围。但是,我使用 findbugs 自己的注释将我所有的项目都转换为标准化的,并且没有注意到任何变化。只是我个人的观察。如果我没记错的话 findbugs 使用相同的代码进行验证。稍后我将查看代码。同时,我投票删除了我的答案,因为它并没有真正回答你的问题:)
-
是的,但是您的评论是一个很好的答案!请考虑将其作为答案。再次感谢。
-
我修改了我的答案。仍在寻找一些不言自明的代码部分和几个好的链接。我认为指向一个必须遵循的大量类文件才能理解我的观点没有多大意义。
标签: java annotations static-analysis findbugs