【发布时间】:2018-08-17 00:38:02
【问题描述】:
Sonar 正在为以下代码提出“更改此条件,使其不总是评估为真”。我咨询了很多人,他们都认为这是误报,是不是我们遗漏了什么?
public SearchResponse getSearchResponse(SearchRequest searchRequest) {
try {
searchRequest.validate();
} catch(VerifyException e) {
///some code to make errorResp
return errorResp
} catch(Exception e) {
String key = searchRequest != null ? serchReqeust.getKey() : null;
Logger.log("some text {}", key);
//some code to make errorResp
return errorResp;
}
}
在searchRequest != null 的通用catch 块中引发了错误。
但是,如果 searchRequest 为 null,try 块中的第一行将抛出 NullPointerException,如果我不在 catch 块中检查 null,它将在我的 catch 块中再次中断。让我的方法再次失败,这是我不想要的。
编辑:
由于 cmets 中的一些人要求提供代码来重现错误,我已将其上传到 github https://github.com/shariqislam786/test,这个问题也可以在 eclipse 中使用 sonar lint 3.4 重现。
【问题讨论】:
-
也许在
try之前做一个if (searchRequest != null) {以便您知道searchRequest是好的? Sonar 是否假设唯一可能的其他异常是NullpointerException? -
您的 SonarJava 版本是多少?您可以在 Administration > Marketplace 中找到它。
-
key != null ? key : null==key. -
@AndyTurner 实际上它的第一行尝试声纳告诉我暗示 searchRequest 在异常块中不能为空。
标签: java sonarqube code-analysis sonarlint