Сбой проверки качества с sonarqube Nullpointer при использовании findFirst - PullRequest
0 голосов
/ 30 марта 2019

Качество 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() методе при вызове.

1 Ответ

2 голосов
/ 31 марта 2019

Ошибка в строке при втором вызове функции 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());
}

Поскольку вы вызываете метод дважды, при первом вызове проверка нуля есть, но при втором вызове проверка нуля отсутствует.Сонар не достаточно умен, чтобы проверить, что одни и те же параметры передаются при вызове нескольких функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...