我发现我的声纳存在问题,但我不知道如何解决。
我的错误是:
Possible null pointer dereference in mypackage.myMethod(String) due to return value of called method
一开始是:
response.getBody().getData();
所以我所做的是:
return (response != null && response.getBody() != null) ? response.getBody().getData() : null;
但是错误仍然存在。
我是否误解了错误?怎么解决?
每次调用一个方法时,您可能会得到不同的结果。您可能知道每次都会得到相同的结果,但 Sonarqube 不知道。
将
response.getBody()
分配给变量,这样您就不必再次调用它:
if (response != null) {
var body = response.getBody();
if (body != null) {
return body.getData();
}
}
return null;
您可以使用可选选项来完成此操作,或者:
return Optional.ofNullable(response).map(ResponseType::getBody).map(BodyType::getData).orElse(null);
我有同样的问题,但它是一个空函数:
@Test
public void findCategoriesTest() {
when(categoryDao.findAll()).thenReturn(listCategories);
ResponseEntity<CategoryResponseRest> response = service.findCategories();
assertEquals(4, response.getBody().getCategoryResponse().getCategory().size());
verify(categoryDao, times(1)).findAll();
}
public void loadCategories() {
Category catOne = new Category(Long.valueOf(1), "Beer", "A lot of beers ");
Category catTwo = new Category(Long.valueOf(1), "Apples", "A lot of apples");
Category catThree = new Category(Long.valueOf(1), "Bread", "A few of bread");
Category catFour = new Category(Long.valueOf(1), "Drink", "Drink sugar free");
listCategories.add(catOne);
listCategories.add(catTwo);
listCategories.add(catThree);
listCategories.add(catFour);
}