Class FileTabCharacterCheck

All Implemented Interfaces:
Configurable, Contextualizable, FileSetCheck

public class FileTabCharacterCheck extends AbstractFileSetCheck

Checks that there are no tab characters ('\t') in the source code.

Rationale:

  • Developers should not need to configure the tab width of their text editors in order to be able to read source code.
  • From the Apache jakarta coding standards: In a distributed development environment, when the commit messages get sent to a mailing list, they are almost impossible to read if you use tabs.
  • Property eachLine - Control whether to report on each line containing a tab, or just the first instance. Type is boolean. Default value is false.
  • Property fileExtensions - Specify file type extension of files to process. Type is java.lang.String[]. Default value is "".

To configure the check to report only the first instance in each file:

 <module name="FileTabCharacter"/>
 

Example - Test.java:

 public class Test {
   int a;     // violation, indented using tab

   public void foo (int arg) { // OK, indented using tab, only first occurrence in file reported
     a = arg;                  // OK, indented using spaces
   }                           // OK, indented using spaces
 }
 

To configure the check to report each instance in each file:

 <module name="FileTabCharacter">
   <property name="eachLine" value="true"/>
 </module>
 

Example - Test.java:

 public class Test {
   int a;     // violation, indented using tab

   public void foo (int arg) { // violation, indented using tab
     a = arg;                  // OK, indented using spaces
   }                           // OK, indented using spaces
 }
 

To configure the check to report instances on only certain file types:

 <module name="FileTabCharacter">
   <property name="fileExtensions" value="java, xml"/>
 </module>
 

Example - Test.java:

 public class Test {
   int a;     // violation, indented using tab

   public void foo (int arg) { // OK, indented using tab, only first occurrence in file reported
     a = arg;                  // OK, indented using spaces
   }                           // OK, indented using spaces
 }
 

Example - Test.xml:

 <?xml version="1.0" encoding="UTF-8" ?>
 <UserAccount>
   <FirstName>John</FirstName> <!-- violation, indented using tab -->
   <LastName>Doe</LastName>    <!-- only first occurrence in file reported -->
 </UserAccount>
 

Example - Test.html:

 <head>
   <title>Page Title</title> <!-- no check performed, html file extension -->
 </head>                     <!-- not specified in check config -->
 <body>
   <p>This is a simple html document.</p>
 </body>
 

Parent is com.puppycrawl.tools.checkstyle.Checker

Violation Message Keys:

  • containsTab
  • file.containsTab
Since:
5.0
  • Field Details

    • MSG_CONTAINS_TAB

      public static final String MSG_CONTAINS_TAB
      A key is pointing to the warning message text in "messages.properties" file.
      See Also:
    • MSG_FILE_CONTAINS_TAB

      public static final String MSG_FILE_CONTAINS_TAB
      A key is pointing to the warning message text in "messages.properties" file.
      See Also:
    • eachLine

      private boolean eachLine
      Control whether to report on each line containing a tab, or just the first instance.
  • Constructor Details

    • FileTabCharacterCheck

      public FileTabCharacterCheck()
  • Method Details

    • processFiltered

      protected void processFiltered(File file, FileText fileText)
      Description copied from class: AbstractFileSetCheck
      Called to process a file that matches the specified file extensions.
      Specified by:
      processFiltered in class AbstractFileSetCheck
      Parameters:
      file - the file to be processed
      fileText - the contents of the file.
    • setEachLine

      public void setEachLine(boolean eachLine)
      Setter to control whether to report on each line containing a tab, or just the first instance.
      Parameters:
      eachLine - Whether report on each line containing a tab.