【问题标题】:Why PMD basic rulesets does not capture null dereference?为什么 PMD 基本规则集不捕获空解引用?
【发布时间】:2012-10-17 17:08:37
【问题描述】:

我正在使用 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 变量为空,则容易出现空指针异常。我用 pmd 检查了我的代码,但它不会表明这一点? 我怎样才能捕捉到这个? .是否有任何自定义 pmd 规则集可用?

是否有任何自定义规则集可用于捕获此问题?

【问题讨论】:

    标签: java pmd


    【解决方案1】:

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

    但即使使用 FindBugs,您也不会捕获任何东西,因为上面的代码完全合理,并且没有任何错误,除非您知道 getParameter("user") 可以返回 null,并且还有比这更好的方法在这种情况下抛出 NullPointerException。

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

    【讨论】:

      猜你喜欢
      • 2012-11-03
      • 2011-06-21
      • 2018-02-06
      • 2017-09-21
      • 2011-08-09
      • 1970-01-01
      • 2015-02-18
      • 2017-03-10
      • 1970-01-01
      相关资源
      最近更新 更多