我希望让我的代码更具可读性,并使用集成开发环境代码检查和/或静态代码分析(FindBugs和Sonar)等工具来避免NullPointerExceptions。许多工具似乎与彼此的@NotNull
/@NonNull
/@Nonnull
注释不兼容,在我的代码中列出所有这些工具很难读懂。对哪一个是“最好的”有什么建议吗?下面是我找到的等价注解列表:
javax.validation.constraints.NotNull
为运行时验证而创建,而不是静态分析。
edu.umd.cs.findbugs.annotations.NonNull
由 ()及其后续的静态分析使用,因此声纳(现在是)
SpotBugs documentation,FindBugs documentation
javax.annotation.Nonnull
这可能也适用于FindBugs,但处于非活动状态。(另请参阅:) source
org.jetbrains.annotations.NotNull
由IntelliJ IDEA集成开发环境用于静态分析。
lombok.NonNull
用于控制中的代码生成。
占位符注释,因为没有标准。
androidx.annotation.NonNull
Android中提供的标记注释,由注释包提供
org.eclipse.jdt.annotation.NonNull
由Eclipse用于静态代码分析
发布于 2021-11-02 15:26:20
如果你使用的是Spring5.x/ SpringBoot 2.x,你绝对应该使用Spring注解(org.springframework.lang),因为它们为你提供了一个默认的包范围的null检查和注解@NonNullFields
和@NonNullApi
。您甚至不会与其他依赖项中的其他NotNull/NonNull
注释发生冲突,因为您正在使用@NonNullFields/@NonNullApi
。必须在名为package-info.java的文件中使用注释,该文件位于包的根目录下:
@NonNullFields
@NonNullApi
package org.company.test;
要从null检查中排除某些字段、参数或返回值,只需显式使用@Nullable
注释。除了使用@NonNullFields/@NonNullApi
,您还可以在任何地方设置@NonNull
,但在默认情况下,使用@NonNullFields/@NonNullApi
激活null检查可能更好,并且只使用@Nullable
执行特定的异常。
IDE (Intellij)将突出显示违反null条件的代码。如果设置正确,每个开发人员都可以假定字段、参数和返回值不能为空,除非有@Nullable
注释。有关更多信息,请查看此article。
https://stackoverflow.com/questions/4963300
复制相似问题