All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.checkstyle.rules.checkstyle.com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheck.html Maven / Gradle / Ivy

Go to download

Checkstyle is a code analyser to help programmers write Java code that adheres to a coding standard.

The newest version!

Checks that any combination of String literals with optional assignment is on the left side of an equals() comparison.

Rationale: Calling the equals() method on String literals will avoid a potential NullPointerException. Also, it is pretty common to see null check right before equals comparisons which is not necessary in the below example.

For example:

  String nullString = null;
  nullString.equals("My_Sweet_String");

should be refactored to:

  String nullString = null;
  "My_Sweet_String".equals(nullString);

Limitations: If the equals method is overridden or a covariant equals method is defined and the implementation is incorrect (where s.equals(t) does not return the same result as t.equals(s)) then rearranging the called on object and parameter may have unexpected results.

Java's Autoboxing feature has an affect on how this check is implemented. Pre Java 5 all IDENT + IDENT object concatenations would not cause a NullPointerException even if null. Those situations could have been included in this check. They would simply act as if they surrounded by String.valueof() which would concatenate the String null.

The following example will cause a NullPointerException as a result of what autoboxing does.

  Integer i = null, j = null;
  String number = "5"
  number.equals(i + j);

Since, it is difficult to determine what kind of Object is being concatenated all ident concatenation is considered unsafe.





© 2015 - 2024 Weber Informatics LLC | Privacy Policy