如何在默认情况下指示成员字段是@Nonnull?
我的问题是对这一问题的后续行动。
在以前版本的FindBugs中,可以使用@DefaultAnnotation(Nonnull.class)
或@DefaultAnnotationForFields(Nonnull.class)
来指示包中的所有字段都应该被视为@Nonnull
。 在当前版本的FindBugs(2.0)中,不推荐使用@DefaultAnnotation
和@DefaultAnnotationForFields
,我们都应该使用JSR-305。 但JSR-305似乎并未涵盖(现已弃用)FindBugs注释所涵盖的所有内容。
javadoc确实提出了许多替代方案:
-
@ParametersAreNonnullByDefault
。 这(显然)仅适用于参数,而不适用于成员字段。 -
@CheckReturnValue
,应用于类型或包时。 同样,这不适用于成员字段。 -
@TypeQualifierDefault
。 也许这可以做我想要的,但我不明白它是如何工作的,除了一些神秘的javadoc之外,我无法找到任何有关其用法或意图的文档或示例。 我认为这将有助于我创建自己的注释,但我可以确定所有工具(FindBugs,Eclipse等)都能正确地解释这个新注释(甚至根本没有)吗?
javadoc没有提供有关如何处理其弃用的任何提示。
因此,使用当前版本的FindBugs和/或JSR-305,我应该如何指出特定包中(甚至某个类中)的所有成员字段都应该被视为@Nonnull
? 它甚至可能吗?
我有一个类似的问题,发现以下似乎适用于findbugs(2.0.1-rc2)
使用以下注释定义创建java文件
@Nonnull @TypeQualifierDefault(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FieldsAreNonNullByDefault { }
类似地,强制来自方法的所有返回值都是非null
@Nonnull @TypeQualifierDefault(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface ReturnTypesAreNonNullByDefault { }
然后正常注释包。
我在测试中使用了以下内容(package-info.java)
@javax.annotation.ParametersAreNonnullByDefault @com.habit.lib.lang.FieldsAreNonNullByDefault @com.habit.lib.lang.ReturnTypesAreNonNullByDefault package com.mypackagename.subpkg;
- @Nullable / @NotNull与IntelliJ IDEA,Maven和JSR 305
- jar305.jar中的注释是否应优先于FindBugs的annotation.jar中的类似注释?
- 强制maven无法修复非空的违规行为
- 是否有任何Checkstyle / PMD / Findbugs规则强制“else if”在同一条线上?
- FindBugs 2.0漏洞列表排名?
- 将Eclipse与FindBugs一起使用时,您是否可以将错误标记为错误并将其从错误列表中删除?
- FindBugs错误:从实例方法写入静态字段
- 代码分析器:PMD和FindBugs
- SuppressWarnings不适用于FindBugs