Class RegexpCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class RegexpCheck
    extends AbstractCheck

    A check that makes sure that a specified pattern exists (or not) in the file.

    An example of how to configure the check to make sure a copyright statement is included in the file (but without requirements on where in the file it should be):

     <module name="RegexpCheck">
        <property name="format" value="This code is copyrighted"/>
     </module>
     

    And to make sure the same statement appears at the beginning of the file.

     <module name="RegexpCheck">
        <property name="format" value="\AThis code is copyrighted"/>
     </module>
     
    • Field Detail

      • MSG_ILLEGAL_REGEXP

        public static final java.lang.String MSG_ILLEGAL_REGEXP
        A key is pointing to the warning message text in "messages.properties" file.
        See Also:
        Constant Field Values
      • MSG_REQUIRED_REGEXP

        public static final java.lang.String MSG_REQUIRED_REGEXP
        A key is pointing to the warning message text in "messages.properties" file.
        See Also:
        Constant Field Values
      • MSG_DUPLICATE_REGEXP

        public static final java.lang.String MSG_DUPLICATE_REGEXP
        A key is pointing to the warning message text in "messages.properties" file.
        See Also:
        Constant Field Values
      • DEFAULT_DUPLICATE_LIMIT

        private static final int DEFAULT_DUPLICATE_LIMIT
        Default duplicate limit.
        See Also:
        Constant Field Values
      • DEFAULT_ERROR_LIMIT

        private static final int DEFAULT_ERROR_LIMIT
        Default error report limit.
        See Also:
        Constant Field Values
      • ERROR_LIMIT_EXCEEDED_MESSAGE

        private static final java.lang.String ERROR_LIMIT_EXCEEDED_MESSAGE
        Error count exceeded message.
        See Also:
        Constant Field Values
      • message

        private java.lang.String message
        Custom message for report.
      • ignoreComments

        private boolean ignoreComments
        Ignore matches within comments?.
      • illegalPattern

        private boolean illegalPattern
        Pattern illegal?.
      • errorLimit

        private int errorLimit
        Error report limit.
      • duplicateLimit

        private int duplicateLimit
        Disallow more than x duplicates?.
      • checkForDuplicates

        private boolean checkForDuplicates
        Boolean to say if we should check for duplicates.
      • matchCount

        private int matchCount
        Tracks number of matches made.
      • errorCount

        private int errorCount
        Tracks number of errors.
      • format

        private java.util.regex.Pattern format
        The regexp to match against.
      • matcher

        private java.util.regex.Matcher matcher
        The matcher.
    • Constructor Detail

      • RegexpCheck

        public RegexpCheck()
    • Method Detail

      • setMessage

        public void setMessage​(java.lang.String message)
        Setter for message property.
        Parameters:
        message - custom message which should be used in report.
      • setIgnoreComments

        public void setIgnoreComments​(boolean ignoreComments)
        Sets if matches within comments should be ignored.
        Parameters:
        ignoreComments - True if comments should be ignored.
      • setIllegalPattern

        public void setIllegalPattern​(boolean illegalPattern)
        Sets if pattern is illegal, otherwise pattern is required.
        Parameters:
        illegalPattern - True if pattern is not allowed.
      • setErrorLimit

        public void setErrorLimit​(int errorLimit)
        Sets the limit on the number of errors to report.
        Parameters:
        errorLimit - the number of errors to report.
      • setDuplicateLimit

        public void setDuplicateLimit​(int duplicateLimit)
        Sets the maximum number of instances of required pattern allowed.
        Parameters:
        duplicateLimit - negative values mean no duplicate checking, any positive value is used as the limit.
      • setFormat

        public final void setFormat​(java.util.regex.Pattern pattern)
        Set the format to the specified regular expression.
        Parameters:
        pattern - the new pattern
        Throws:
        org.apache.commons.beanutils.ConversionException - unable to parse format
      • 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:
        TokenTypes
      • 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:
        TokenTypes
      • 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:
        TokenTypes
      • 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
      • findMatch

        private void findMatch()
        Recursive method that finds the matches.
      • canContinueValidation

        private boolean canContinueValidation​(boolean ignore)
        Check if we can stop validation.
        Parameters:
        ignore - flag
        Returns:
        true is we can continue
      • isIgnore

        private boolean isIgnore​(int startLine,
                                 FileText text,
                                 LineColumn start)
        Detect ignore situation.
        Parameters:
        startLine - position of line
        text - file text
        start - line column
        Returns:
        true is that need to be ignored
      • logMessage

        private void logMessage​(int lineNumber)
        Displays the right message.
        Parameters:
        lineNumber - the line number the message relates to.