Clover coverage report - PMD - 3.9 Coverage timestamp: Tue Dec 19 2006 09:38:44 EST FRAMES NO FRAMES |
file stats: | LOC: | 53 |  | Methods: | 1
| NCLOC: | 43 |  | Classes: | 1
Source file | Conditionals | Statements | Methods | TOTAL
BigIntegerInstantiation.java | 71.4% | 85% | 100% | 80% |

1 |  | package net.sourceforge.pmd.rules.basic;
2 |  |
3 |  | import net.sourceforge.pmd.AbstractRule;
4 |  | import net.sourceforge.pmd.RuleContext;
5 |  | import net.sourceforge.pmd.SourceType;
6 |  | import net.sourceforge.pmd.ast.ASTAllocationExpression;
7 |  | import net.sourceforge.pmd.ast.ASTArguments;
8 |  | import net.sourceforge.pmd.ast.ASTArrayDimsAndInits;
9 |  | import net.sourceforge.pmd.ast.ASTClassOrInterfaceType;
10 |  | import net.sourceforge.pmd.ast.ASTLiteral;
11 |  | import net.sourceforge.pmd.ast.Node;
12 |  |
13 |  | public class BigIntegerInstantiation extends AbstractRule {
14 |  |
15 | 15 | public Object visit(ASTAllocationExpression node, Object data) {
16 | 15 | Node type = node.jjtGetChild(0);
17 |  |
18 | 15 | if (!(type instanceof ASTClassOrInterfaceType)) {
19 | 0 | return super.visit(node, data);
20 |  | }
21 |  |
22 | 15 | String img = ((ASTClassOrInterfaceType) type).getImage();
23 | 15 | if (img.startsWith("java.math.")) {
24 | 0 | img = img.substring(10);
25 |  | }
26 |  |
27 | 15 | boolean jdk15 = ((RuleContext) data).getSourceType().compareTo(SourceType.JAVA_15) >= 0;
28 |  |
29 | 15 | if (("BigInteger".equals(img) || (jdk15 && "BigDecimal".equals(img))) &&
30 |  | (node.getFirstChildOfType(ASTArrayDimsAndInits.class) == null)
31 |  | ) {
32 | 8 | ASTArguments args = (ASTArguments) node.getFirstChildOfType(ASTArguments.class);
33 | 8 | if (args.getArgumentCount() == 1) {
34 | 8 | ASTLiteral literal = (ASTLiteral) node.getFirstChildOfType(ASTLiteral.class);
35 | 8 | if (literal == null || literal.jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent() != args) {
36 | 0 | return super.visit(node, data);
37 |  | }
38 |  |
39 | 8 | img = literal.getImage();
40 | 8 | if ((img.length() > 2 && img.charAt(0) == '"')) {
41 | 5 | img = img.substring(1, img.length() - 1);
42 |  | }
43 |  |
44 | 8 | if ("0".equals(img) || "1".equals(img) || (jdk15 && "10".equals(img))) {
45 | 6 | addViolation(data, node);
46 | 6 | return data;
47 |  | }
48 |  | }
49 |  | }
50 | 9 | return super.visit(node, data);
51 |  | }
52 |  |
53 |  | }