gpt4 book ai didi

java - 对于 FindBugs,jar305.jar 中的注释是否应该优于 annotation.jar 中的类似注释?

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:57 26 4
gpt4 key购买 nike

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 (注意大写)
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

最佳答案

是的,如果可能,您应该更喜欢 JSR305 注释。为什么?因为 JSR305 是一个标准,所以尽可能遵守标准是完全有意义的。在移植我自己的应用程序时,我没有注意到任何问题或行为变化。此外,您甚至可以定义自己的@NotNull 批注,findbugs 将拾取它(只要您将其命名为 NotNull),请参阅 this blog entry for more details .

据我查看源代码所见,findbugs 在内部使用相同的分析方法。调度仅基于注释名称完成。如 blog post 中所述上面链接,看看 edu.umd.cs.findbugs.ba.NullnessAnnotationNullnessAnnotationDatabase 类,初步了解这是如何在内部完成的。看看这个包,您会发现其他注释的类似类,例如 jcip。

所以从实现的角度来看,这真的无关紧要。对于仍然不确定要使用哪些注解的每个人,我会考虑使用标准注解或自定义注解,以避免他们的代码依赖于 findbugs 库。

关于java - 对于 FindBugs,jar305.jar 中的注释是否应该优于 annotation.jar 中的类似注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com