首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有Sonar、Findbug或PMD规则来检测CodePro检测到的这种可能的NPE?

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

Stack Overflow用户
提问于 2013-04-17 23:25:34
回答 1查看 750关注 0票数 2

假设我有这样的代码块:

代码语言:javascript
复制
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
}

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

EN

回答 1

Stack Overflow用户

发布于 2013-04-18 05:32:18

问题是,FindBugs把未注释的项目当作是用@Nullable注释的,这导致它忽略了对它们的空检查。您可以创建一个带有自定义@ReturnValuesAreCheckForNullByDefault注释(修改@ReturnValuesAreNonnullByDefault)注释的空@ReturnValuesAreCheckForNullByDefault包,但它将应用于该包中每个类中的每个方法。

代码语言:javascript
复制
@ReturnValuesAreCheckForNullByDefault
package java.util;

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

另一个选项是创建使用Map注释的@CheckForNull外观。

代码语言:javascript
复制
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以获得类似的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16071978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档