【问题标题】:Sonar Issue-Possible null pointer dereference due to return value of called method. Return value from a method is dereferenced without a null check由于被调用方法的返回值,Sonar 问题-可能的空指针取消引用。方法的返回值在没有空检查的情况下被取消引用
【发布时间】:2021-12-28 20:58:28
【问题描述】:

我有一个 void 方法,它使用来自父方法的字符串参数调用。

private void sendMail(String msg) {
     SimpleMailMessage message = null;
     try {
        SimpleMailMessage templateMessage = mailSender.getSimpleMailMessage();
        if(templateMessage != null ) {
            message = new SimpleMailMessage(templateMessage);
            if(message != null) {
                if(templateMessage.getSubject() != null) {
                    message.setSubject(String.format(templateMessage.getSubject(), System.getProperty("env")));
                }
                if(templateMessage.getText() != null) {
                    message.setText(String.format(templateMessage.getText(), msg)); // This line of code is throwing Sonar issue
                }
            }
        }
    }
}

【问题讨论】:

  • 你在哪里使用了getSubjectgetText 没有括号,这也是错字吗?
  • 不,我的意思是 getSubject != null 应该是 getSubject() != nullgetText != null 应该是 getText() != null
  • 您确实应该发布您已经验证过的代码来证明您所描述的问题,而不是您已经想到并且甚至没有尝试编译的代码。
  • 真的吗?这听起来不像你有一个好的系统。

标签: java spring sonarqube


【解决方案1】:
String text = templateMessage.getText();
if (text != null) {
   message.setText(String.format(text, msg));
}

getText 似乎不仅仅是一个简单的吸气剂。第二次显然可能返回 null。

【讨论】:

  • template.getMessage(); // 这里的“模板”变量是什么?
  • 抱歉,在智能手机上回答,打错了。
  • 也不需要 if(message != null)。构造函数不返回 null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 2011-07-18
  • 2021-03-20
  • 1970-01-01
  • 2011-05-27
  • 2015-11-05
  • 1970-01-01
相关资源
最近更新 更多