Class RegexpSinglelineJavaCheck

All Implemented Interfaces:
Configurable, Contextualizable

public class RegexpSinglelineJavaCheck extends AbstractCheck

Checks that a specified pattern matches a single line in Java files.

This class is variation on RegexpSingleline for detecting single lines that match a supplied regular expression in Java files. It supports suppressing matches in Java comments.

  • Property format - Specify the format of the regular expression to match. Type is java.lang.String. Default value is "$.".
  • Property message - Specify the message which is used to notify about violations, if empty then default (hard-coded) message is used. Type is java.lang.String. Default value is null.
  • Property ignoreCase - Control whether to ignore case when searching. Type is boolean. Default value is false.
  • Property minimum - Specify the minimum number of matches required in each file. Type is int. Default value is 0.
  • Property maximum - Specify the maximum number of matches required in each file. Type is int. Default value is 0.
  • Property ignoreComments - Control whether to ignore text in comments when searching. Type is boolean. Default value is false.

To configure the default check:

 <module name="RegexpSinglelineJava"/>
 

This configuration does not match to anything, so we do not provide any code example for it as no violation will ever be reported.

To configure the check for calls to System.out.println, except in comments:

 <module name="RegexpSinglelineJava">
   <!-- . matches any character, so we need to
        escape it and use \. to match dots. -->
   <property name="format" value="System\.out\.println"/>
   <property name="ignoreComments" value="true"/>
 </module>
 

Example:

 System.out.println(""); // violation, instruction matches illegal pattern
 System.out.
   println(""); // OK
 /* System.out.println */ // OK, comments are ignored
 

To configure the check to find case-insensitive occurrences of "debug":

 <module name="RegexpSinglelineJava">
   <property name="format" value="debug"/>
   <property name="ignoreCase" value="true"/>
 </module>
 

Example:

 int debug = 0; // violation, variable name matches illegal pattern
 public class Debug { // violation, class name matches illegal pattern
 /* this is for de
   bug only; */ // OK
 

To configure the check to find occurrences of "\.read(.*)|\.write(.*)" and display "IO found" for each violation.

 <module name="RegexpSinglelineJava">
   <property name="format" value="\.read(.*)|\.write(.*)"/>
   <property name="message" value="IO found"/>
 </module>
 

Example:

 FileReader in = new FileReader("path/to/input");
 int ch = in.read(); // violation
 while(ch != -1) {
   System.out.print((char)ch);
   ch = in.read(); // violation
 }

 FileWriter out = new FileWriter("path/to/output");
 out.write("something"); // violation
 

To configure the check to find occurrences of "\.log(.*)". We want to allow a maximum of 2 occurrences.

 <module name="RegexpSinglelineJava">
   <property name="format" value="\.log(.*)"/>
   <property name="maximum" value="2"/>
 </module>
 

Example:

 public class Foo{
   public void bar(){
     Logger.log("first"); // OK, first occurrence is allowed
     Logger.log("second"); // OK, second occurrence is allowed
     Logger.log("third"); // violation
     System.out.println("fourth");
     Logger.log("fifth"); // violation
   }
 }
 

To configure the check to find all occurrences of "public". We want to ignore comments, display "public member found" for each violation and say if less than 2 occurrences.

 <module name="RegexpSinglelineJava">
   <property name="format" value="public"/>
   <property name="minimum" value="2"/>
   <property name="message" value="public member found"/>
   <property name="ignoreComments" value="true"/>
 </module>
 

Example:

 class Foo{ // violation, file contains less than 2 occurrences of "public"
   private int a;
   /* public comment */ // OK, comment is ignored
   private void bar1() {}
   public void bar2() {} // violation
 }
 

Example:

 class Foo{
   private int a;
  /* public comment */ // OK, comment is ignored
   public void bar1() {} // violation
   public void bar2() {} // violation
 }
 

Parent is com.puppycrawl.tools.checkstyle.TreeWalker

Violation Message Keys:

  • regexp.exceeded
  • regexp.minimum
Since:
6.0
  • Constructor Details

    • RegexpSinglelineJavaCheck

      public RegexpSinglelineJavaCheck()
  • Method Details

    • getDefaultTokens

      public int[] getDefaultTokens()
      Description copied from class: AbstractCheck
      Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
      Specified by:
      getDefaultTokens in class AbstractCheck
      Returns:
      the default tokens
      See Also:
    • getAcceptableTokens

      public int[] getAcceptableTokens()
      Description copied from class: AbstractCheck
      The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.
      Specified by:
      getAcceptableTokens in class AbstractCheck
      Returns:
      the token set this check is designed for.
      See Also:
    • getRequiredTokens

      public int[] getRequiredTokens()
      Description copied from class: AbstractCheck
      The tokens that this check must be registered for.
      Specified by:
      getRequiredTokens in class AbstractCheck
      Returns:
      the token set this must be registered for.
      See Also:
    • beginTree

      public void beginTree(DetailAST rootAST)
      Description copied from class: AbstractCheck
      Called before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.
      Overrides:
      beginTree in class AbstractCheck
      Parameters:
      rootAST - the root of the tree
    • setFormat

      public void setFormat(String format)
      Setter to specify the format of the regular expression to match.
      Parameters:
      format - the format of the regular expression to match.
    • setMessage

      public void setMessage(String message)
      Setter to specify the message which is used to notify about violations, if empty then default (hard-coded) message is used.
      Parameters:
      message - the message to report for a match.
    • setMinimum

      public void setMinimum(int minimum)
      Setter to specify the minimum number of matches required in each file.
      Parameters:
      minimum - the minimum number of matches required in each file.
    • setMaximum

      public void setMaximum(int maximum)
      Setter to specify the maximum number of matches required in each file.
      Parameters:
      maximum - the maximum number of matches required in each file.
    • setIgnoreCase

      public void setIgnoreCase(boolean ignoreCase)
      Setter to control whether to ignore case when searching.
      Parameters:
      ignoreCase - whether to ignore case when searching.
    • setIgnoreComments

      public void setIgnoreComments(boolean ignore)
      Setter to control whether to ignore text in comments when searching.
      Parameters:
      ignore - whether to ignore text in comments when searching.