SonarQube质量失败,方法中可能存在NullPointer
调用该方法时,我正在检查!= null,但没有通过
private Asset findAsset(List<Asset> assets, Long assetId) {
return assets.parallelStream()
.filter(ast -> ast.getAssetId().equals(assetId))
.findFirst()
.orElse(null);
}
我正在尝试以下代码:
if (findAsset(assetCompositionList, pair.getKey()) != null) {
assetMap.put(pair.getKey(),
findAsset(assets, pair.getKey()).getAssetCode());
}
调用时,我已经在!=null
方法中检查findAsset()
。
答案 0 :(得分:2)
第二次调用findAsset
函数时出错。
assetMap.put(pair.getKey(), findAsset(assets, pair.getKey()).getAssetCode());
首先在变量中收集结果,然后检查是否为空。
Asset asset = findAsset(assetCompositionList, pair.getKey());
if (asset != null) {
assetMap.put(pair.getKey(), asset.getAssetCode());
}
由于您两次调用方法,因此在第一次调用时存在空检查,但是在第二次调用时,没有空检查。 Sonar不够智能,无法检查在多个函数调用中是否传递了相同的参数。