为什么PMD基本规则集不能捕获空取消引用?

时间:2012-10-17 17:08:38

标签: java pmd

我正在使用PMD Plug-in 3.2.6.v2009033006。但pmd中的默认规则集未捕获可能的空指针异常。

Java代码

public class SignUp extends HttpServlet{
     public void doGet(HttpServletRequest req , HttpServletResponse res){
        String user = req.getParameter("user");
        user.trim(); 
     }
}

user.trim();如果user变量为null,则容易出现空指针异常。我用pmd检查了我的代码,但它不会表明这个? 我怎么能抓住这个? 。是否有可用的自定义pmd规则集?

是否有可用于捕获此的自定义规则集?

1 个答案:

答案 0 :(得分:1)

PMD不是正确的工具。您应该使用FindBugs来捕获此类问题。

但是即使使用FindBugs,你也不会抓到任何东西,因为上面的代码是完全合理的,并且没有任何bug,除非你知道getParameter("user")可以返回null,并且有更好的东西不要在这种情况下抛出NullPointerException。

如果此类代码触发了错误,基本上每行代码调用另一个方法返回的对象上的方法都会触发错误。 FindBugs支持注释,允许声明方法的调用者应始终检查此方法返回的结果是否为null。见http://findbugs.sourceforge.net/manual/annotations.html。但是,当然,对于第三方代码,您不能做任何事情(除了编写自己的规则)。