Clover coverage report - PMD - 3.9 Coverage timestamp: Tue Dec 19 2006 09:38:44 EST FRAMES NO FRAMES |
file stats: | LOC: | 67 |  | Methods: | 1
| NCLOC: | 56 |  | Classes: | 1
Source file | Conditionals | Statements | Methods | TOTAL
UnnecessaryWrapperObjectCreation.java | 66.7% | 88.2% | 100% | 80% |

1 |  | package net.sourceforge.pmd.rules.optimization;
2 |  |
3 |  | import java.util.Set;
4 |  |
5 |  | import net.sourceforge.pmd.AbstractRule;
6 |  | import net.sourceforge.pmd.RuleContext;
7 |  | import net.sourceforge.pmd.SourceType;
8 |  | import net.sourceforge.pmd.ast.ASTName;
9 |  | import net.sourceforge.pmd.ast.ASTPrimaryExpression;
10 |  | import net.sourceforge.pmd.ast.ASTPrimaryPrefix;
11 |  | import net.sourceforge.pmd.ast.ASTPrimarySuffix;
12 |  | import net.sourceforge.pmd.ast.Node;
13 |  | import net.sourceforge.pmd.util.CollectionUtil;
14 |  |
15 |  | public class UnnecessaryWrapperObjectCreation extends AbstractRule {
16 |  |
17 |  | private static final Set prefixSet = CollectionUtil.asSet(new String[] {
18 |  | "Byte.valueOf",
19 |  | "Short.valueOf",
20 |  | "Integer.valueOf",
21 |  | "Long.valueOf",
22 |  | "Float.valueOf",
23 |  | "Double.valueOf",
24 |  | "Character.valueOf"
25 |  | });
26 |  |
27 |  | private static final Set suffixSet = CollectionUtil.asSet(new String[] {
28 |  | "byteValue",
29 |  | "shortValue",
30 |  | "intValue",
31 |  | "longValue",
32 |  | "floatValue",
33 |  | "doubleValue",
34 |  | "charValue"
35 |  | });
36 |  |
37 | 6 | public Object visit(ASTPrimaryPrefix node, Object data) {
38 | 6 | if (node.jjtGetNumChildren() == 0 || !node.jjtGetChild(0).getClass().equals(ASTName.class)) {
39 | 0 | return super.visit(node, data);
40 |  | }
41 |  |
42 | 6 | String image = ((ASTName) node.jjtGetChild(0)).getImage();
43 | 6 | if (image.startsWith("java.lang.")) {
44 | 0 | image = image.substring(10);
45 |  | }
46 |  |
47 | 6 | boolean checkBoolean = ((RuleContext) data).getSourceType().compareTo(SourceType.JAVA_15) >= 0;
48 |  |
49 | 6 | if (prefixSet.contains(image)||(checkBoolean && "Boolean.valueOf".equals(image))) {
50 | 3 | ASTPrimaryExpression parent = (ASTPrimaryExpression) node.jjtGetParent();
51 | 3 | if (parent.jjtGetNumChildren() >= 3) {
52 | 2 | Node n = parent.jjtGetChild(2);
53 | 2 | if (n instanceof ASTPrimarySuffix) {
54 | 2 | ASTPrimarySuffix suffix = (ASTPrimarySuffix) n;
55 | 2 | image = suffix.getImage();
56 |  |
57 | 2 | if (suffixSet.contains(image)||(checkBoolean && "booleanValue".equals(image))) {
58 | 2 | super.addViolation(data, node);
59 | 2 | return data;
60 |  | }
61 |  | }
62 |  | }
63 |  | }
64 | 4 | return super.visit(node, data);
65 |  | }
66 |  |
67 |  | }