【问题标题】:A “NullPointerException” could be thrown; “getBody” can return null Sonar可能会抛出“NullPointerException”; “getBody”可以返回空声纳
【发布时间】:2021-06-06 16:47:08
【问题描述】:

声纳指向A "NullPointerException" could be thrown; "getBody()" can return null 周围recaptchaResponseEntity.getBody()

public BooleanResponse verifyCaptcha(String recaptchaResponse) {

//Alot more sophisticated logic

    Boolean success = (Boolean) recaptchaResponseEntity.getBody().get("success");

    List<String> errors = (List) recaptchaResponseEntity.getBody().get("error-codes");
    return success ? BooleanResponse.success() : BooleanResponse.failure(errors.get(0));
  }

我试过了

recaptchaResponseEntity.getBody()!=null , Objects.noNull(recaptchaResponseEntity.getBody()),
!Objects.isNull(recaptchaResponseEntity.getBody())

但是没有运气,您能帮忙解决这个问题吗?谢谢

【问题讨论】:

  • SonarQube 在哪一行报告问题?您是否要替换“recaptchaResponseEntity.getBody()”的所有取消引用?你没有显示这个。
  • 你试过用Objects.requireNonNull方法吗?

标签: java rest sonarqube sonarlint


【解决方案1】:

您的每个示例尝试都不会将比较值存储在任何地方。我假设您已经运行了这些检查,但是您仍然再次调用getBody(),这将触发问题(不能保证该方法将返回相同的结果两次)。我会尝试将getBody() 返回值存储在一个变量中,并且只在检查后使用它,例如:

<appropriate type here> recaptchaResponseBody = recaptchaResponseEntity.getBody();
if (recaptchaResponseBody != null) {
    Boolean success = (Boolean) recaptchaResponseBody.get("success");
    ...
}

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 2018-06-20
    • 2022-08-03
    • 2023-01-30
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多