EqualsAvoidNull
Since Checkstyle 5.0
Description
Checks that any combination of String literals
is on the left side of an
equals()
comparison.
Also checks for String literals assigned to some field
(such as someString.equals(anotherString = "text")
).
Rationale: Calling the equals()
method on String literals will avoid a potential
NullPointerException
. Also, it is pretty common to see null
checks right before equals comparisons but following this rule such checks
are not required.
Properties
name | description | type | default value | since |
---|---|---|---|---|
ignoreEqualsIgnoreCase | Control whether to ignore String.equalsIgnoreCase(String) invocations. |
boolean | false |
5.4 |
Examples
To configure the check:
<module name="Checker">
<module name="TreeWalker">
<module name="EqualsAvoidNull"/>
</module>
</module>
Example:
public class Example1 {
public void foo() {
String nullString = null;
// violation below 'String literal expressions should be on the left side'
nullString.equals("My_Sweet_String");
"My_Sweet_String".equals(nullString);
// violation below 'String literal expressions should be on the left side'
nullString.equalsIgnoreCase("My_Sweet_String");
"My_Sweet_String".equalsIgnoreCase(nullString);
}
}
To configure the check to allow ignoreEqualsIgnoreCase:
<module name="Checker">
<module name="TreeWalker">
<module name="EqualsAvoidNull">
<property name="ignoreEqualsIgnoreCase" value="true"/>
</module>
</module>
</module>
Example:
public class Example2 {
public void foo() {
String nullString = null;
// violation below 'String literal expressions should be on the left side'
nullString.equals("My_Sweet_String");
"My_Sweet_String".equals(nullString);
nullString.equalsIgnoreCase("My_Sweet_String");
"My_Sweet_String".equalsIgnoreCase(nullString);
}
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Package
com.puppycrawl.tools.checkstyle.checks.coding