gpt4 book ai didi

java - 有什么方法可以将@Nullable 假定为默认值吗? (使用 FindBugs 或任何其他免费工具)

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:28 26 4
gpt4 key购买 nike

考虑这样的代码

public void m1(String text) {
if(text == null)
text = "<empty>";

System.out.println(text.toLowerCase());
}

这是一个有问题的版本:

public void m1(String text) {
System.out.println(text.toLowerCase());
}

如果传递了空值,可能会抛出 NullPointerException。我希望静态分析工具(例如 FindBugs)报告此问题。 FindBugs(至少在默认情况下)要求我明确指定 @Nullable 注释,但未成功。

public void m1(@Nullable String text) {
System.out.println(text.toLowerCase()); // FindBugs: text must be nonnull but is marked as nullable
}

问题是如果我忘记注释了,bug就会漏掉!!!

如何让 FindBugs(或任何其他免费工具)默认采用 @Nullable?

最佳答案

根据 Javadoc :

@DefaultAnnotationForParameters indicates that all members of the class or package should be annotated with the default value of the supplied annotation class.

(顺便说一句,@DefaultAnnotation@DefaultAnnotationForFields@DefaultAnnotationForMethods 的 Javadocs 包含完全相同的文本)。

但根据chapter 10 of FindBugs Manual :

This is same as the DefaultAnnotation except it only applys to method parameters.

虽然理论上是这样

@DefaultAnnotationForParameters(value = Nullable.class)

@DefaultAnnotationForParameters({Nullable.class})

应该可以,两者都不

我不知道 FindBugs 是否支持这个但是 JSR 305您还可以使用应用于包、类或方法的 @ParametersAreNullableByDefault 注释。 Unfortunately FindBugs 1.3.9 ignores @ParametersAreNonnullByDefault and similar annotations (used on packages or on types).

关于java - 有什么方法可以将@Nullable 假定为默认值吗? (使用 FindBugs 或任何其他免费工具),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2791862/

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