Class EqualsAvoidNullCheck

All Implemented Interfaces:
Configurable, Contextualizable

public class EqualsAvoidNullCheck extends AbstractCheck

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, which is not necessary in the example below.

For example, this code:

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

should be refactored to:

 String nullString = null;
 "My_Sweet_String".equals(nullString);
 
  • Property ignoreEqualsIgnoreCase - Control whether to ignore String.equalsIgnoreCase(String) invocations. Type is boolean. Default value is false.

To configure the check:

 <module name="EqualsAvoidNull"/>
 

Parent is com.puppycrawl.tools.checkstyle.TreeWalker

Violation Message Keys:

  • equals.avoid.null
  • equalsIgnoreCase.avoid.null
Since:
5.0
  • Field Details

    • MSG_EQUALS_AVOID_NULL

      public static final String MSG_EQUALS_AVOID_NULL
      A key is pointing to the warning message text in "messages.properties" file.
      See Also:
    • MSG_EQUALS_IGNORE_CASE_AVOID_NULL

      public static final String MSG_EQUALS_IGNORE_CASE_AVOID_NULL
      A key is pointing to the warning message text in "messages.properties" file.
      See Also:
  • Constructor Details

    • EqualsAvoidNullCheck

      public EqualsAvoidNullCheck()
  • Method Details

    • getDefaultTokens

      public int[] getDefaultTokens()
      Description copied from class: AbstractCheck
      Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
      Specified by:
      getDefaultTokens in class AbstractCheck
      Returns:
      the default tokens
      See Also:
    • getAcceptableTokens

      public int[] getAcceptableTokens()
      Description copied from class: AbstractCheck
      The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.
      Specified by:
      getAcceptableTokens in class AbstractCheck
      Returns:
      the token set this check is designed for.
      See Also:
    • getRequiredTokens

      public int[] getRequiredTokens()
      Description copied from class: AbstractCheck
      The tokens that this check must be registered for.
      Specified by:
      getRequiredTokens in class AbstractCheck
      Returns:
      the token set this must be registered for.
      See Also:
    • setIgnoreEqualsIgnoreCase

      public void setIgnoreEqualsIgnoreCase(boolean newValue)
      Setter to control whether to ignore String.equalsIgnoreCase(String) invocations.
      Parameters:
      newValue - whether to ignore checking String.equalsIgnoreCase(String).
    • beginTree

      public void beginTree(DetailAST rootAST)
      Description copied from class: AbstractCheck
      Called before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.
      Overrides:
      beginTree in class AbstractCheck
      Parameters:
      rootAST - the root of the tree
    • visitToken

      public void visitToken(DetailAST ast)
      Description copied from class: AbstractCheck
      Called to process a token.
      Overrides:
      visitToken in class AbstractCheck
      Parameters:
      ast - the token to process
    • leaveToken

      public void leaveToken(DetailAST ast)
      Description copied from class: AbstractCheck
      Called after all the child nodes have been process.
      Overrides:
      leaveToken in class AbstractCheck
      Parameters:
      ast - the token leaving
    • finishTree

      public void finishTree(DetailAST ast)
      Description copied from class: AbstractCheck
      Called after finished processing a tree. Ideal place to report on information collected whilst processing a tree.
      Overrides:
      finishTree in class AbstractCheck
      Parameters:
      ast - the root of the tree