Как исправить основную проблему в SonarQube «ненужные блоки логической константы» - PullRequest
1 голос
/ 02 октября 2019

У меня есть этот метод в моем проекте:

private static boolean isNAND(boolean value1, boolean value2) {
        return value1 ? !value2 : Boolean.TRUE;
}

, но я получил эту серьезную проблему в SonarQube, которую я не знаю, как ее решить:

Method io.clouding.bendiciones.buenas.noches.Operador.isNAND(boolean, boolean) needlessly boxes a boolean constant

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Это означает, что вы должны сделать следующее:

a. Либо измените тип возвращаемого значения на тип логического объекта. Это будет зависеть от того, что вы делаете с объектом типа Boolean.
b. Измените возвращаемое значение с return value1 ? !value2 : Boolean.TRUE; на return value1 ? !value2 : true; или return value1 ? !value2 : !value1;

Это может быть еще более упрощено. Если я смотрю на таблицу возвращаемых значений, то я вижу это:

value1 value2 result
T        F     T
F        T     T
T        T     F
F        F     T

Это означает, что это эквивалентно return !(value1 & value2)

Это потому, что при возврате значения вы собираетесь преобразоватьобъект типа Boolean в примитив логический.

0 голосов
/ 02 октября 2019

То: return value1 ? !value2 : Boolean.TRUE;

означает возврат true, если value1 равно false, и возврат !value2, если value1 равно true.

Это может быть упрощено как: return !value1 || !value2;, и в нем не используются логические оболочки.

...