如何解决FindBugs 警告删除
我在运行 FindBugs 时遇到以下错误:
错误类型 NP_NULL_ON_SOME_PATH。
给出错误的代码如下:
List<Request> reviewerList = null;
response = restAPI CAll // assume some rest call.
reviewerListDto = response.getBody(); //it never returns null
// this check is added because of find bugs,else it wont allow to access getReviewers() method
if (reviewerListDto!=null) {
reviewerList = reviewerListDto.getReviewers();
}
// HERE is the point I am stuck
for (Request reviewer : reviewerList) {
reviewer.setPullrequestId(pullrequest.getId());
reviewer.setRepositoryId(pullrequest.getRepositoryId());
}
错误即将到来,因为根据 for 循环中的 FindBugs,reviewerList
可以为空。但我知道它永远不会是null
。删除它的一种方法是在 for 循环之前检查 reviewerList
是否为 null
,但还有其他方法吗?
解决方法
您可以use @SuppressFBWarnings
if you add com.google.code.findbugs:annotations
to the classpath:
@SuppressFBWarnings(value="NP_NULL_ON_SOME_PATH",justification="This can never be null")
但是,这与您将 if
语句放在那里的原因基本相同。添加 if 语句时,您说它可能是那样的,并且代码仅在发生这种情况时才执行。如果总是执行 if 语句,则没有理由使用 if 语句。
因此,您还可以取消 if 语句并忽略导致您添加 if 语句的警告。
另一种方法是将使用 reviewerList
的代码放在 if 语句中,或者在它为 null 时抛出异常(例如 AssertionError
)(或使用 assert
right-离)。
List<Request> reviewerList = null;
// response = restAPI CAll // assume some rest call.
reviewerListDto = response.getBody(); //it never returns null
assert reviewerListDto!=null;
reviewerList = reviewerListDto.getReviewers();
for (Request reviewer : reviewerList) {
reviewer.setPullrequestId(pullrequest.getId());
reviewer.setRepositoryId(pullrequest.getRepositoryId());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。