H.Lo
(Hrvoje Lončar)
October 12, 2022, 11:56am
1
Operating system: Windows 10
IDE name and flavor/env: Eclipse STS
This simple piece of code gives me a warning:
final Boolean cardEnabled = parseAndGet("card-enabled");
cardButton.setVisible(
cardEnabled == null ? false : cardEnabled.booleanValue()
);
Method parseAndGet()
uses a map of properties and returns null
, Boolean.TRUE
or Boolean.FALSE
.
Setter of readCard
needs boolean
as parameter and that’s why we have to check for null
.
In this case ‘false’ is marked with warning ‘Remove the unnecessary boolean literal :: Boolean literals should not be redundant (java:S1125)’.
Of course, I can write this the other way and I will but I don’t get it why I’m getting a warning .
// other way #1 (that I'm going to use)
final Boolean cardEnabled = parseAndGet("card-enabled");
cardButton.setVisible( Boolean.TRUE.equals( cardEnabled ) );
// other way #2
Boolean cardEnabled = parseAndGet("card-enabled");
if (cardEnabled == null) {
cardEnabled = Boolean.FALSE;
}
cardButton.setVisible( cardEnabled.booleanValue() );
lbenedetto
(Lars Benedetto)
October 13, 2022, 10:34pm
4
Short answer: It wants you to simplify to cardEnabled != null && cardEnabled
. If you’re using IntelliJ, it’ll also highlight this expression and provide a “Quick Fix Action”
In fact, SonarLint also provides a quick fix action, but it produces the invalid expression
!cardEnabled == null
which should be fixed.
Long answer:
First of all, calling .booleanValue() is not necessary. Java will automatically unbox that for you.
Secondly, take a look at the rule description.
Noncompliant code example
booleanMethod() ? false : exp;
Compliant solution
!booleanMethod() && exp;
2 Likes
H.Lo
(Hrvoje Lončar)
October 14, 2022, 10:59pm
5
Oh stupid me! This makes sense:
cardEnabled != null && cardEnabled
Thanks!
Hello there,
@H.Lo I am glad you could find an answer to the problem.
@lbenedetto we have been working on improving the quick fix suggestion for this case , and the suggestions should improve in the next release of the Java analyzer.
Cheers,
Dorian
2 Likes
system
(system)
Closed
October 31, 2022, 11:17am
11
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.