RegexpSinglelineJava
Since Checkstyle 5.0
Description
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.
Properties
| name | description | type | default value | since | 
|---|---|---|---|---|
| format | Specify the format of the regular expression to match. | Pattern | $. | 5.0 | 
| ignoreCase | Control whether to ignore case when searching. | boolean | false | 5.0 | 
| ignoreComments | Control whether to ignore text in comments when searching. | boolean | false | 5.0 | 
| maximum | Specify the maximum number of matches required in each file. | int | 0 | 5.0 | 
| message | Specify the message which is used to notify about violations, if empty then default (hard-coded) message is used. | String | null | 6.0 | 
| minimum | Specify the minimum number of matches required in each file. | int | 0 | 5.0 | 
Examples
To configure the default check:
<module name="Checker">
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava"/>
  </module>
</module>
Example1:
class Example1 {
  private void testMethod1() {
    int debug = 0;
    System.out.println("");
    System.out.
    println("");
  }
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read();
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read();
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something");
  }
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example1.class.getName());
    logger.info("first");
    logger.info("second");
    logger.info("third");
    System.out.println("fourth");
    logger.info("fifth");
  }
}
          To configure the check for calls to System.out.println, except in comments:
        
<module name="Checker">
  <module name="TreeWalker">
    <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>
  </module>
</module>
Example2:
class Example2 {
  private void testMethod1() {
    int debug = 0;
    System.out.println(""); // violation, 'Line matches the illegal pattern'
    System.out.
    println("");
  }
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read();
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read();
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something");
  }
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example2.class.getName());
    logger.info("first");
    logger.info("second");
    logger.info("third");
    System.out.println("fourth"); // violation, 'Line matches the illegal pattern'
    logger.info("fifth");
  }
}
To configure the check to find case-insensitive occurrences of "debug":
<module name="Checker">
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava">
      <property name="format" value="debug"/>
      <property name="ignoreCase" value="true"/>
      <property name="ignoreComments" value="true"/>
    </module>
  </module>
</module>
Example3:
class Example3 {
  private void testMethod1() {
    int debug = 0; // violation, 'Line matches the illegal pattern'
    System.out.println("");
    System.out.
    println("");
  }
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read();
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read();
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something");
  }
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example3.class.getName());
    logger.info("first");
    logger.info("second");
    logger.info("third");
    System.out.println("fourth");
    logger.info("fifth");
  }
}
To configure the check to find occurrences of "\.read(.*)|\.write(.*)" and display "IO found" for each violation.
<module name="Checker">
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava">
      <property name="format" value="\.read(.*)|\.write(.*)"/>
      <property name="message" value="IO found"/>
    </module>
  </module>
</module>
Example4:
class Example4 {
  private void testMethod1() {
    int debug = 0;
    System.out.println("");
    System.out.
    println("");
  }
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read(); // violation, 'IO found'
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read(); // violation, 'IO found'
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something"); // violation, 'IO found'
  }
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example3.class.getName());
    logger.info("first");
    logger.info("second");
    logger.info("third");
    System.out.println("fourth");
    logger.info("fifth");
  }
}
To configure the check to find occurrences of "\.log(.*)". We want to allow a maximum of 2 occurrences.
<module name="Checker">
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava">
      <property name="format" value="\.info(.*)"/>
      <property name="maximum" value="2"/>
    </module>
  </module>
</module>
Example5:
class Example5 {
  private void testMethod1() {
    int debug = 0;
    System.out.println("");
    System.out.
    println("");
  }
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read();
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read();
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something");
  }
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example5.class.getName());
    logger.info("first");
    logger.info("second"); // violation, 'Line matches the illegal pattern'
    logger.info("third");  // violation, 'Line matches the illegal pattern'
    System.out.println("fourth");
    logger.info("fifth");  // violation, 'Line matches the illegal pattern'
  }
}
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 1 occurrences.
<module name="Checker">
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava">
      <property name="format" value="public"/>
      <property name="minimum" value="1"/>
      <property name="message" value="public member found"/>
      <property name="ignoreComments" value="true"/>
    </module>
  </module>
</module>
Example6:
class Example6 {
  private void testMethod1() {
    int debug = 0;
    System.out.println("");
    System.out.
    println("");
  }
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read();
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read();
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something");
  }
  // violation below, 'public member found'
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example1.class.getName());
    logger.info("first");
    logger.info("second");
    logger.info("third");
    System.out.println("fourth");
    logger.info("fifth");
  }
}
To configure the check to find all occurrences of "private". We want to ignore comments, display "private member found" for each violation and say if less than 2 occurrences.
<module name="Checker">
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava">
      <property name="format" value="private"/>
      <property name="minimum" value="2"/>
      <property name="message" value="private member found"/>
      <property name="ignoreComments" value="true"/>
    </module>
  </module>
</module>
Example7:
class Example7 {
  // violation below, 'private member found'
  private void testMethod1() {
    int debug = 0;
    System.out.println("");
    System.out.
    println("");
  }
  // violation below, 'private member found'
  private void testMethod2() throws IOException {
    FileReader in = new FileReader("path/to/input");
    int ch = in.read();
    while(ch != -1) {
      System.out.print((char)ch);
      ch = in.read();
    }
    FileWriter out = new FileWriter("path/to/output");
    out.write("something");
  }
  public void testMethod3(){
    final Logger logger = Logger.getLogger(Example1.class.getName());
    logger.info("first");
    logger.info("second");
    logger.info("third");
    System.out.println("fourth");
    logger.info("fifth");
  }
}
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.regexp






