gpt4 book ai didi

java - 是否有 Sonar、Findbugs 或 PMD 规则来检测 CodePro 检测到的这种可能的 NPE?

转载 作者:行者123 更新时间:2023-11-29 09:03:44 24 4
gpt4 key购买 nike

假设我有这样一段代码:

Map<String, Object> mappy = 
(Map<String, Object>)pExtraParameters.get(ServiceClientConstants.EXTRA_PARAMETERS);

if (pSSResponseBean!=null) {
mappy.put(AddressResearchContext.CSI_RESPONSE_BEAN, (AddressNotFoundResponseBean)pSSResponseBean); // this line may throw null pointer
}

是否存在将“mappy”标记为可能为空的 Sonar、Findbugs 或 PMD 规则?显然 CodePro 标记了这一点,如果可能的话,我需要提供类似的东西。

最佳答案

问题在于 FindBugs 将未注释的项目视为使用 @Nullable 进行注释,这导致它忽略针对它们的空性检查。您可以创建一个带有自定义 @ReturnValuesAreCheckForNullByDefault 注释(修改 @ReturnValuesAreNonnullByDefault )的空 java.util 包,但它将应用于每个该包中每个类中的方法。

@ReturnValuesAreCheckForNullByDefault
package java.util;

import edu.umd.cs.findbugs.annotations.ReturnValuesAreCheckForNullByDefault;

另一种选择是创建使用 @CheckForNull 注释的 Map facade。

public class AnnotatedMap<K, E> implements Map<K, E>
{
private final Map<K, E> wrapped;

@CheckForNull
public E get(K key) {
return wrapped.get(key);
}
...
}

更新:查看我的previous answer有关实现此建议的完整详细信息的类似问题。

关于java - 是否有 Sonar、Findbugs 或 PMD 规则来检测 CodePro 检测到的这种可能的 NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16071978/

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