com.puppycrawl.tools.checkstyle.checks
Class TrailingCommentCheck

java.lang.Object
  extended bycom.puppycrawl.tools.checkstyle.api.AutomaticBean
      extended bycom.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
          extended bycom.puppycrawl.tools.checkstyle.api.Check
              extended bycom.puppycrawl.tools.checkstyle.checks.AbstractFormatCheck
                  extended bycom.puppycrawl.tools.checkstyle.checks.TrailingCommentCheck
All Implemented Interfaces:
Configurable, Contextualizable

public class TrailingCommentCheck
extends AbstractFormatCheck

The check to ensure that requires that comments be the only thing on a line. For the case of // comments that means that the only thing that should precede it is whitespace. It doesn't check comments if they do not end line, i.e. it accept the following: Thread.sleep( 10 <some comment here> ); Format property is intended to deal with the "} // while" example.

Rationale: Steve McConnel in "Code Complete" suggests that endline comments are a bad practice. An end line comment would be one that is on the same line as actual code. For example:

  a = b + c;      // Some insightful comment
  d = e / f;        // Another comment for this line
 
Quoting "Code Complete" for the justfication: His comments on being hard to maintain when the size of the line changes are even more important in the age of automated refactorings.

To configure the check so it enforces only comment on a line:

 <module name="TrailingComment">
    <property name="format" value="^\\s*$"/>
 </module>
 

Author:
o_sukhodolsky

Constructor Summary
TrailingCommentCheck()
          Creates new instance of the check.
 
Method Summary
 void beginTree(DetailAST aRootAST)
          Called before the starting to process a tree. Ideal place to initialise information that is to be collected whilst processing a tree.
 int[] getDefaultTokens()
          Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
 void visitToken(DetailAST aAST)
          Called to process a token.
 
Methods inherited from class com.puppycrawl.tools.checkstyle.checks.AbstractFormatCheck
getFormat, getRegexp, setFormat
 
Methods inherited from class com.puppycrawl.tools.checkstyle.api.Check
destroy, finishTree, getAcceptableTokens, getClassLoader, getFileContents, getLines, getRequiredTokens, getTabWidth, getTokenNames, init, leaveToken, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens
 
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
getMessageBundle, getSeverity, getSeverityLevel, log, log, log, log, log, log, log, log, log, setSeverity
 
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TrailingCommentCheck

public TrailingCommentCheck()
                     throws org.apache.commons.beanutils.ConversionException
Creates new instance of the check.

Throws:
org.apache.commons.beanutils.ConversionException - unable to parse DEFAULT_FORMAT.
Method Detail

getDefaultTokens

public int[] getDefaultTokens()
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 Check
Returns:
the default tokens
See Also:
TokenTypes

visitToken

public void visitToken(DetailAST aAST)
Called to process a token.

Overrides:
visitToken in class Check
Parameters:
aAST - the token to process

beginTree

public void beginTree(DetailAST aRootAST)
Called before the starting to process a tree. Ideal place to initialise information that is to be collected whilst processing a tree.

Overrides:
beginTree in class Check
Parameters:
aRootAST - the root of the tree

Back to the Checkstyle Home Page