Gre*_*tes 12 java annotations static-analysis findbugs
在FindBugs的分布,annotations.jar是不是的一个子集jsr305.jar.但是,几个注释似乎是重复的(要么完全要么非常密切).jsr305.jar如果我有选择,我是否应该更喜欢注释?
请注意,我不仅仅想知道jsr305.jar仅仅因为它们代表标准而使用注释会"更好" .相反,我想知道如果我更喜欢jsr305.jar特定注释的版本,FindBugs工具是否会执行相同(或更好)的分析.可能是某些jsr305.jar注释应该是首选的,但其他注释则不应该.
我正在使用FindBugs 1.3.9,这是本文撰写时的最新版本.在此版本中,我看到以下选项(如果有其他选项,请更新此表):
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
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
是的,如果可能的话,您应该更喜欢JSR305注释.为什么?因为JSR305是一个标准,所以尽可能坚持标准是完全合理的.在移植我自己的应用程序时,我没有注意到任何问题或行为的变化.此外,您甚至可以定义自己的@NotNull注释,findbugs会选择它(只要您将其命名为NotNull),请参阅此博客条目以获取更多详细信息.
据我所知,通过查看源代码,findbugs在内部使用相同的分析方法.调度仅基于注释名称完成.如上面链接的博客文章中所述,请查看edu.umd.cs.findbugs.ba.NullnessAnnotation和NullnessAnnotationDatabase类,以获取内部完成此操作的初始视图.看看这个包,你会发现其他注释类似于jcip的类.
所以从实现的角度来看,这无关紧要.对于每个仍然不确定使用哪个注释的人,我会考虑使用标准注释或自定义注释来避免它们的代码依赖于findbugs库.
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |