PMD:如何处理不需要在instanceof之前检查null

时间:2012-05-02 13:34:41

标签: null instanceof pmd

您好我有以下代码。

if (SecurityContextHolder.getContext().getAuthentication() != null
                && SecurityContextHolder.getContext().getAuthentication()
                        .getPrincipal() instanceof User)

当我用pmd检查时它会给我一个警告:不需要在instanceof之前检查null。

Q1。)你如何解决这个警告? - 如果我只是执行安全性SecurityContextHolder.getContext().getAuthentication().getPrincipal()并且getAuthentication为null,那么我将获得NPE(空指针异常)。

2 个答案:

答案 0 :(得分:2)

我认为这是PMD中的一个错误,因为我遇到了同样的问题。也许这种模式的XPath Expression不够清晰。 但它已经修复了。看到 http://sourceforge.net/tracker/index.php?func=detail&aid=2317099&group_id=56262&atid=479921

答案 1 :(得分:1)

如果无法使用固定版本的PMD,请添加临时变量

... principal = null;
if (SecurityContextHolder.getContext().getAuthentication() != null)
   principal = SecurityContextHolder.getContext().getAuthentication()
                    .getPrincipal();
if (principal instanceof User) ...