Clover coverage report - PMD - 3.9 Coverage timestamp: Tue Dec 19 2006 09:38:44 EST FRAMES NO FRAMES |
file stats: | LOC: | 57 |  | Methods: | 5
| NCLOC: | 45 |  | Classes: | 1
Source file | Conditionals | Statements | Methods | TOTAL
LocalScope.java | 75% | 90% | 80% | 84.8% |

1 |  | /**
2 |  | * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 |  | */
4 |  | package net.sourceforge.pmd.symboltable;
5 |  |
6 |  | import net.sourceforge.pmd.ast.ASTName;
7 |  | import net.sourceforge.pmd.ast.SimpleNode;
8 |  | import net.sourceforge.pmd.util.Applier;
9 |  |
10 |  | import java.util.ArrayList;
11 |  | import java.util.HashMap;
12 |  | import java.util.List;
13 |  | import java.util.Map;
14 |  |
15 |  | public class LocalScope extends AbstractScope {
16 |  |
17 |  | protected Map variableNames = new HashMap();
18 |  |
19 | 712 | public NameDeclaration addVariableNameOccurrence(NameOccurrence occurrence) {
20 | 712 | NameDeclaration decl = findVariableHere(occurrence);
21 | 712 | if (decl != null && !occurrence.isThisOrSuper()) {
22 | 710 | List nameOccurrences = (List) variableNames.get(decl);
23 | 710 | nameOccurrences.add(occurrence);
24 | 710 | SimpleNode n = occurrence.getLocation();
25 | 710 | if (n instanceof ASTName) {
26 | 710 | ((ASTName) n).setNameDeclaration(decl);
27 |  | } // TODO what to do with PrimarySuffix case?
28 |  | }
29 | 712 | return decl;
30 |  | }
31 |  |
32 | 336 | public Map getVariableDeclarations() {
33 | 336 | VariableUsageFinderFunction f = new VariableUsageFinderFunction(variableNames);
34 | 336 | Applier.apply(f, variableNames.keySet().iterator());
35 | 336 | return f.getUsed();
36 |  | }
37 |  |
38 | 622 | public void addDeclaration(VariableNameDeclaration nameDecl) {
39 | 622 | if (variableNames.containsKey(nameDecl)) {
40 | 0 | throw new RuntimeException("Variable " + nameDecl + " is already in the symbol table");
41 |  | }
42 | 622 | variableNames.put(nameDecl, new ArrayList());
43 |  | }
44 |  |
45 | 4301 | public NameDeclaration findVariableHere(NameOccurrence occurrence) {
46 | 4301 | if (occurrence.isThisOrSuper() || occurrence.isMethodOrConstructorInvocation()) {
47 | 429 | return null;
48 |  | }
49 | 3872 | ImageFinderFunction finder = new ImageFinderFunction(occurrence.getImage());
50 | 3872 | Applier.apply(finder, variableNames.keySet().iterator());
51 | 3872 | return finder.getDecl();
52 |  | }
53 |  |
54 | 0 | public String toString() {
55 | 0 | return "LocalScope:" + glomNames(variableNames.keySet().iterator());
56 |  | }
57 |  | }