Class StaticAccessViaInstanceCheck

java.lang.Object
com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
com.puppycrawl.tools.checkstyle.api.AbstractCheck
com.qulice.checkstyle.StaticAccessViaInstanceCheck
All Implemented Interfaces:
com.puppycrawl.tools.checkstyle.api.Configurable, com.puppycrawl.tools.checkstyle.api.Contextualizable

public final class StaticAccessViaInstanceCheck extends com.puppycrawl.tools.checkstyle.api.AbstractCheck
Checks that static members are not accessed through an instance reference.

A static method or field must be accessed through the declaring class (for example MyClass.staticMethod()), not through this.staticMethod(). Accessing a static member through an instance reference is misleading because it looks like a polymorphic call while the dispatch is actually resolved statically at compile time.

This check scans every class, enum and interface in the file, collects the names of all declared static methods and fields, and reports every this.name expression where name is in that set.

Since:
0.24
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean

    com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.OutputStreamOptions
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    beginTree(com.puppycrawl.tools.checkstyle.api.DetailAST root)
     
    int[]
     
    int[]
     
    int[]
     
    void
    leaveToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
     
    void
    visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
     

    Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck

    clearViolations, destroy, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, log, log, log, setFileContents, setTabWidth, setTokens

    Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter

    finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity

    Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean

    configure, contextualize, getConfiguration, setupChild

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • StaticAccessViaInstanceCheck

      public StaticAccessViaInstanceCheck()
  • Method Details

    • getDefaultTokens

      public int[] getDefaultTokens()
      Specified by:
      getDefaultTokens in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
    • getAcceptableTokens

      public int[] getAcceptableTokens()
      Specified by:
      getAcceptableTokens in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
    • getRequiredTokens

      public int[] getRequiredTokens()
      Specified by:
      getRequiredTokens in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
    • beginTree

      public void beginTree(com.puppycrawl.tools.checkstyle.api.DetailAST root)
      Overrides:
      beginTree in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
    • visitToken

      public void visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
      Overrides:
      visitToken in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
    • leaveToken

      public void leaveToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
      Overrides:
      leaveToken in class com.puppycrawl.tools.checkstyle.api.AbstractCheck