0

こんにちは、次のコードがあります。

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

pmd で確認すると、警告が表示されます。インスタンスの前に null を確認する必要はありません。

Q1.) この警告をどのように修正しますか? -- セキュリティだけを行いSecurityContextHolder.getContext().getAuthentication().getPrincipal()、getAuthentication が null の場合、NPE (Null ポインター例外) が発生します。

4

2 に答える 2

2

私は同じ問題に直面しているので、これは PMD のバグだと思います。おそらく、このパターンの XPath 式は十分に明確ではありません。しかし、それはすでに修正されています。http://sourceforge.net/tracker/index.php?func=detail&aid=2317099&group_id=56262&atid=479921を参照して ください。

于 2012-05-03T12:32:30.533 に答える
1

PMD の固定バージョンを使用できない場合は、一時変数を追加します。

... principal = null;
if (SecurityContextHolder.getContext().getAuthentication() != null)
   principal = SecurityContextHolder.getContext().getAuthentication()
                    .getPrincipal();
if (principal instanceof User) ...
于 2012-05-07T18:44:54.977 に答える