TypeName

Since Checkstyle 3.0

Description

Checks that type names conform to a specified pattern.

Properties

name description type default value since
format Specifies valid identifiers. Pattern "^[A-Z][a-zA-Z0-9]*$" 3.0
applyToPublic Controls whether to apply the check to public member. boolean true 5.0
applyToProtected Controls whether to apply the check to protected member. boolean true 5.0
applyToPackage Controls whether to apply the check to package-private member. boolean true 5.0
applyToPrivate Controls whether to apply the check to private member. boolean true 5.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:

public interface FirstName {} // OK
protected class SecondName {} // OK
enum Third_Name {} // violation, name 'Third_Name' must match pattern '^[A-Z][a-zA-Z0-9]*$'
private class FourthName_ {} // violation, name 'FourthName_'
                            // must match pattern '^[A-Z][a-zA-Z0-9]*$'
        

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:

public interface firstName {} // OK
public class SecondName {} // violation, name 'SecondName'
                          // must match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
protected class ThirdName {} // OK
private class FourthName {} // OK
        

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:

public interface I_firstName {} // OK
interface SecondName {} // violation, name 'SecondName'
                       // must match pattern '^I_[a-zA-Z0-9]*$'
        

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