В Java с SonarQube, как исправить `` Должен быть проверен только знак результата` - PullRequest
2 голосов
/ 04 марта 2020

У меня есть следующая строка кода (где "next" - это BigDecimal):

if (next.compareTo(maximum) == 1) {
    maximum = next;
}

При сравнении равенства SonarQube выдает мне это предупреждение:

Только знак результата должен быть изучен. sonarqube-inject

Что это на самом деле означает и как я могу это исправить?

Ответы [ 2 ]

4 голосов
/ 04 марта 2020

Вы должны проверять только, если оно больше нуля:

if (next.compareTo(maximum) > 0) {
                        maximum = next;
                    }

Из API документов метода CompareTo:

Возвращает отрицательное целое число , ноль или положительное целое число, так как этот объект меньше, равен или больше указанного объекта.

1 голос
/ 04 марта 2020

Сонар предлагает проверить результат сравнения с 0, а не если он возвращает напрямую 1, -1.

if (next.compareTo(maximum) >0) {
                        maximum = next;
                    }

Вы можете найти причину этого предложения в compareTo () Javado c

Возвращает: отрицательное целое число, ноль или положительное целое число, поскольку этот объект меньше, равен или больше указанного объекта.

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