Class ImplicitConstructorCheck

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

public final class ImplicitConstructorCheck extends com.puppycrawl.tools.checkstyle.api.AbstractCheck
Prohibits an implicit constructor in a class that Javadoc documents.

A class that declares no constructor gets one from the compiler, with the access of the class itself. Javadoc puts that constructor into the generated page, finds no comment on it, and says "use of default constructor, which does not provide a comment". A build that turns Javadoc warnings into errors, which the maven-javadoc-plugin does through failOnWarnings, breaks over it, and the mistake surfaces at site time rather than at the moment the class is written.

The fix is an explicit constructor with a Javadoc block above it, and this check asks for it before Javadoc does.

Only the classes Javadoc documents are reported, because only they carry the warning. A class is documented when it is public or protected, and so is every class around it, since a nested class of a package-private one never reaches the page. A member of an interface or of an annotation counts as public without saying so.

The other type declarations stay out. An interface and an annotation have no constructor to document. An enum gets a private one, which Javadoc leaves out of the page. A record gets a canonical one, which Javadoc documents from the @param tags of the record itself. A local class and a member of an anonymous one are not documented either, whatever their modifiers say.

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
    int[]
     
    int[]
     
    int[]
     
    void
    visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
     

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

    beginTree, 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

    • ImplicitConstructorCheck

      public ImplicitConstructorCheck()
      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
    • visitToken

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