TypeName

Since Checkstyle 3.0

Description

Checks that type names conform to a specified pattern.

Properties

name description type default value since
applyToPackage Control if check should apply to package-private members. boolean true 5.0
applyToPrivate Control if check should apply to private members. boolean true 5.0
applyToProtected Control if check should apply to protected members. boolean true 5.0
applyToPublic Control if check should apply to public members. boolean true 5.0
format Sets the pattern to match valid identifiers. Pattern "^[A-Z][a-zA-Z0-9]*$" 3.0
tokens tokens to check subset of tokens CLASS_DEF , INTERFACE_DEF , ENUM_DEF , ANNOTATION_DEF , RECORD_DEF . CLASS_DEF , INTERFACE_DEF , ENUM_DEF , ANNOTATION_DEF , RECORD_DEF . 3.0

Examples

To configure the check:

<module name="Checker">
  <module name="TreeWalker">
    <module name="TypeName"/>
  </module>
</module>
        

Code Example:

class Example1 {
  public interface FirstName {}
  protected class SecondName {}
  enum Third_Name {} // violation
  private class FourthName_ {} // violation
}
        

An example of how to configure the check for names that begin with a lower case letter, followed by letters, digits, and underscores. Also, suppress the check from being applied to protected and private type:

<module name="Checker">
  <module name="TreeWalker">
    <module name="TypeName">
      <property name="format" value="^[a-z](_?[a-zA-Z0-9]+)*$"/>
      <property name="applyToProtected" value="false"/>
      <property name="applyToPrivate" value="false"/>
    </module>
  </module>
</module>
        

Code Example:

class Example2 {   // violation
  public interface firstName {}
  public class SecondName {} // violation
  protected class ThirdName {}
  private class FourthName {}
}
        

The following configuration element ensures that interface names begin with "I_", followed by letters and digits:

<module name="Checker">
  <module name="TreeWalker">
    <module name="TypeName">
      <property name="format"
        value="^I_[a-zA-Z0-9]*$"/>
      <property name="tokens"
        value="INTERFACE_DEF"/>
    </module>
  </module>
</module>
        

Code Example:

class Example3 {
  public interface I_firstName {}
  interface SecondName {} // violation
}
        

Example of Usage

Violation Messages

All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.

Package

com.puppycrawl.tools.checkstyle.checks.naming

Parent Module

TreeWalker