1
2
3
4
5 package com.qulice.checkstyle;
6
7 import com.puppycrawl.tools.checkstyle.api.FileText;
8 import com.puppycrawl.tools.checkstyle.checks.regexp.RegexpMultilineCheck;
9 import java.io.File;
10 import java.util.regex.Pattern;
11
12
13
14
15
16
17 public final class ConditionalRegexpMultilineCheck extends
18 RegexpMultilineCheck {
19
20
21
22
23 private static final Pattern ANY = Pattern.compile("\\S|\\s");
24
25
26
27
28 private Pattern condition;
29
30
31
32
33 public ConditionalRegexpMultilineCheck() {
34 this.condition = ConditionalRegexpMultilineCheck.ANY;
35 }
36
37 @Override
38 public void processFiltered(final File file, final FileText lines) {
39 boolean found = false;
40 for (final String line : lines.toLinesArray()) {
41 if (this.condition.matcher(line).find()) {
42 found = true;
43 break;
44 }
45 }
46 if (found) {
47 super.processFiltered(file, lines);
48 }
49 }
50
51
52
53
54
55
56 public void setCondition(final String cond) {
57 this.condition = Pattern.compile(cond);
58 }
59 }