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.