Class AbstractClassNameCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public final class AbstractClassNameCheck
    extends AbstractCheck

    Ensures that the names of abstract classes conforming to some regular expression and check that abstract modifier exists.

    Rationale: Abstract classes are convenience base class implementations of interfaces, not types as such. As such they should be named to indicate this. Also if names of classes starts with 'Abstract' it's very convenient that they will have abstract modifier.

    • Field Detail

      • MSG_ILLEGAL_ABSTRACT_CLASS_NAME

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

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

        private boolean ignoreModifier
        Whether to ignore checking the modifier.
      • ignoreName

        private boolean ignoreName
        Whether to ignore checking the name.
      • format

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

      • AbstractClassNameCheck

        public AbstractClassNameCheck()
    • Method Detail

      • setIgnoreModifier

        public void setIgnoreModifier​(boolean value)
        Whether to ignore checking for the abstract modifier.
        Parameters:
        value - new value
      • setIgnoreName

        public void setIgnoreName​(boolean value)
        Whether to ignore checking the name.
        Parameters:
        value - new value.
      • setFormat

        public void setFormat​(java.util.regex.Pattern pattern)
        Set the format for the specified regular expression.
        Parameters:
        pattern - the new pattern
      • 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
      • 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
      • 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
      • visitClassDef

        private void visitClassDef​(DetailAST ast)
        Checks class definition.
        Parameters:
        ast - class definition for check.
      • isAbstract

        private static boolean isAbstract​(DetailAST ast)
        Checks if declared class is abstract or not.
        Parameters:
        ast - class definition for check.
        Returns:
        true if a given class declared as abstract.
      • isMatchingClassName

        private boolean isMatchingClassName​(java.lang.String className)
        Returns true if class name matches format of abstract class names.
        Parameters:
        className - class name for check.
        Returns:
        true if class name matches format of abstract class names.