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.