Ложно-положительная проблема сонара - PullRequest
0 голосов
/ 27 декабря 2018

Вопрос: почему сонар дает мне предупреждение («Измените эту проблему, чтобы она не всегда оценивалась как« ложная »). Мне удалось доказать, что if (info == null) оценивается как true, когда requestEntity не содержит полезной нагрузки, найденной в БД. Так как я могу избавиться от этого ложного срабатывания? Имеет ли это какое-то отношение к аннотациям @Nullable, @Checkfornull или @Nonnull? Я знаю postForObjectметод использует аннотацию @Nullable.

      Info info = restTemplate.postForObject(connectionString, requestEntity,
         Info.class);

      if (info == null) {
         throw new ApplicationException(Constants.NO_RESULT_ERROR_CODE);
      }

Вот метод postForObject:

    @Override
    @Nullable
    public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType)
            throws RestClientException {

        RequestCallback requestCallback = httpEntityCallback(request, responseType);
        HttpMessageConverterExtractor<T> responseExtractor =
                new HttpMessageConverterExtractor<>(responseType, getMessageConverters());
        return execute(url, HttpMethod.POST, requestCallback, responseExtractor);
    }

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете использовать // NOSONAR в сообщаемой строке (и, вероятно, объяснить, почему вы проигнорировали эту проблему).

Это не лучшее решение, но оно работает (по крайней мере, при использовании в Eclipse).

...