Class FullyQualifiedTypeCheck

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

public final class FullyQualifiedTypeCheck extends com.puppycrawl.tools.checkstyle.api.AbstractCheck
Prohibits a fully qualified type name where an import would do.

A package name in the middle of a statement carries nothing the import block does not already hold, while it lets two files of the same package spell the very same type in two different ways. A body that says final java.util.List<String> spans = new java.util.ArrayList<>(cap) should import both types and say final List<String> spans = new ArrayList<>(cap) instead.

It is wrong for the reason the java.lang. prefix is wrong, which UnnecessaryJavaLangCheck reports on its own and this check therefore leaves alone.

The genuine disambiguation cases stay untouched. A file that imports java.awt.List has no way to spell java.util.List short, and neither has a class that extends a type of its own simple name, the way MethodNameCheck extends the Checkstyle class of that very name. In both of them the simple name is taken by something else in the file and the qualified name is the only name left. A name that two imports of the file bring in is taken by both of them and stays alone as well.

A name counts as a type name when it starts with a capital letter, has a small one after it, and stands behind at least two package names, so that Foo.BAR and System.out.println stay out of the way. Only plain names count, which is why the chain of java.util.List.class ends at its third name and the one of this.foo is empty.

Since:
0.73.4
  • 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
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    beginTree(com.puppycrawl.tools.checkstyle.api.DetailAST root)
     
    int[]
     
    int[]
     
    int[]
     
    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, leaveToken, 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

    • FullyQualifiedTypeCheck

      public FullyQualifiedTypeCheck()
      Default constructor.
  • 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