Clover coverage report - PMD - 3.7 Coverage timestamp: Wed May 31 2006 09:25:59 EDT FRAMES NO FRAMES |
file stats: | LOC: | 52 |  | Methods: | 3
| NCLOC: | 45 |  | Classes: | 1
Source file | Conditionals | Statements | Methods | TOTAL
AvoidCallingFinalize.java | 66.7% | 81.8% | 100% | 78.4% |

1 |  | package net.sourceforge.pmd.rules;
2 |  |
3 |  | import net.sourceforge.pmd.AbstractRule;
4 |  | import net.sourceforge.pmd.ast.ASTCompilationUnit;
5 |  | import net.sourceforge.pmd.ast.ASTName;
6 |  | import net.sourceforge.pmd.ast.ASTPrimaryPrefix;
7 |  | import net.sourceforge.pmd.symboltable.MethodScope;
8 |  |
9 |  | import java.util.HashSet;
10 |  | import java.util.Set;
11 |  |
12 |  | public class AvoidCallingFinalize extends AbstractRule {
13 |  |
14 |  | private Set checked = new HashSet();
15 |  |
16 | 6 | public Object visit(ASTCompilationUnit acu, Object ctx) {
17 | 6 | checked.clear();
18 | 6 | return super.visit(acu, ctx);
19 |  | }
20 |  |
21 | 2 | public Object visit(ASTName name, Object ctx) {
22 | 2 | if (name.getImage() == null || !name.getImage().endsWith("finalize")) {
23 | 0 | return ctx;
24 |  | }
25 | 2 | MethodScope meth = name.getScope().getEnclosingMethodScope();
26 | 2 | if (meth.getName().equals("finalize")) {
27 | 0 | return ctx;
28 |  | }
29 | 2 | if (checked.contains(meth)) {
30 | 0 | return ctx;
31 |  | }
32 | 2 | checked.add(meth);
33 | 2 | addViolation(ctx, name);
34 | 2 | return ctx;
35 |  | }
36 |  |
37 | 7 | public Object visit(ASTPrimaryPrefix pp, Object ctx) {
38 | 7 | if (pp.getImage() == null || !pp.getImage().endsWith("finalize")) {
39 | 4 | return super.visit(pp, ctx);
40 |  | }
41 | 3 | MethodScope meth = pp.getScope().getEnclosingMethodScope();
42 | 3 | if (meth.getName().equals("finalize")) {
43 | 2 | return super.visit(pp, ctx);
44 |  | }
45 | 1 | if (checked.contains(meth)) {
46 | 0 | return super.visit(pp, ctx);
47 |  | }
48 | 1 | checked.add(meth);
49 | 1 | addViolation(ctx, pp);
50 | 1 | return super.visit(pp, ctx);
51 |  | }
52 |  | }