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 Detail

      • eachLine

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

      • 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.