|
1 |
| package net.sourceforge.pmd.rules.basic; |
|
2 |
| |
|
3 |
| import java.util.regex.Pattern; |
|
4 |
| |
|
5 |
| import net.sourceforge.pmd.AbstractRule; |
|
6 |
| import net.sourceforge.pmd.PropertyDescriptor; |
|
7 |
| import net.sourceforge.pmd.ast.ASTLiteral; |
|
8 |
| import net.sourceforge.pmd.properties.BooleanProperty; |
|
9 |
| |
|
10 |
| public class AvoidUsingOctalValues extends AbstractRule { |
|
11 |
| |
|
12 |
| public static final Pattern OCTAL_PATTERN = Pattern.compile("0[0-7]{2,}[lL]?"); |
|
13 |
| |
|
14 |
| public static final Pattern STRICT_OCTAL_PATTERN = Pattern.compile("0[0-7]+[lL]?"); |
|
15 |
| |
|
16 |
| private static final PropertyDescriptor strictMethodsDescriptor = new BooleanProperty( |
|
17 |
| "strict", "Detect violations for 00 to 07.", false, 1.0f |
|
18 |
| ); |
|
19 |
| |
|
20 |
8
| public Object visit(ASTLiteral node, Object data) {
|
|
21 |
8
| boolean strict = getBooleanProperty(strictMethodsDescriptor);
|
|
22 |
8
| Pattern p = strict?STRICT_OCTAL_PATTERN:OCTAL_PATTERN;
|
|
23 |
| |
|
24 |
8
| String img = node.getImage();
|
|
25 |
8
| if (img != null && p.matcher(img).matches()) {
|
|
26 |
3
| addViolation(data, node);
|
|
27 |
| } |
|
28 |
| |
|
29 |
8
| return data;
|
|
30 |
| } |
|
31 |
| |
|
32 |
| } |