• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pmd / pmd / 277

27 Nov 2025 01:37PM UTC coverage: 78.778% (+0.03%) from 78.749%
277

push

github

adangel
[java] UseArraysAsList: skip when if-statements (#6228)

18419 of 24233 branches covered (76.01%)

Branch coverage included in aggregate %.

40090 of 50038 relevant lines covered (80.12%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/pmd-core/src/main/java/net/sourceforge/pmd/lang/symboltable/AbstractScope.java
1
/*
2
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3
 */
4

5
package net.sourceforge.pmd.lang.symboltable;
6

7
import java.util.ArrayList;
8
import java.util.Collections;
9
import java.util.HashSet;
10
import java.util.LinkedHashMap;
11
import java.util.List;
12
import java.util.Map;
13
import java.util.Set;
14

15
/**
16
 * Base class for any {@link Scope}. Provides useful default implementations.
17
 *
18
 * @deprecated Since 7.19.0. For more info, see {@link net.sourceforge.pmd.lang.symboltable}.
19
 */
20
@Deprecated
21
public abstract class AbstractScope implements Scope {
×
22

23
    private Scope parent;
24
    /** Stores the name declaration already sorted by class. */
25
    private Map<Class<? extends NameDeclaration>, Map<NameDeclaration, List<NameOccurrence>>> nameDeclarations = new LinkedHashMap<>();
×
26

27
    @Override
28
    public Scope getParent() {
29
        return parent;
×
30
    }
31

32
    @Override
33
    public void setParent(Scope parent) {
34
        this.parent = parent;
×
35
    }
×
36

37
    @Override
38
    public Map<NameDeclaration, List<NameOccurrence>> getDeclarations() {
39
        Map<NameDeclaration, List<NameOccurrence>> result = new LinkedHashMap<>();
×
40
        for (Map<NameDeclaration, List<NameOccurrence>> e : nameDeclarations.values()) {
×
41
            result.putAll(e);
×
42
        }
×
43
        return result;
×
44
    }
45

46
    @Override
47
    public <T extends NameDeclaration> Map<T, List<NameOccurrence>> getDeclarations(Class<T> clazz) {
48
        @SuppressWarnings("unchecked")
49
        Map<T, List<NameOccurrence>> result = (Map<T, List<NameOccurrence>>) nameDeclarations.get(clazz);
×
50
        if (result == null) {
×
51
            result = Collections.emptyMap();
×
52
        }
53
        return result;
×
54
    }
55

56
    @Override
57
    public boolean contains(NameOccurrence occ) {
58
        for (NameDeclaration d : getDeclarations().keySet()) {
×
59
            if (d.getImage().equals(occ.getImage())) {
×
60
                return true;
×
61
            }
62
        }
×
63
        return false;
×
64
    }
65

66
    @Override
67
    public void addDeclaration(NameDeclaration declaration) {
68
        Map<NameDeclaration, List<NameOccurrence>> declarationsPerClass = nameDeclarations.get(declaration.getClass());
×
69
        if (declarationsPerClass == null) {
×
70
            declarationsPerClass = new LinkedHashMap<>();
×
71
            nameDeclarations.put(declaration.getClass(), declarationsPerClass);
×
72
        }
73
        declarationsPerClass.put(declaration, new ArrayList<>());
×
74
    }
×
75

76
    @SuppressWarnings("unchecked")
77
    @Override
78
    public <T extends Scope> T getEnclosingScope(Class<T> clazz) {
79
        Scope current = this;
×
80
        while (current != null) {
×
81
            if (clazz.isAssignableFrom(current.getClass())) {
×
82
                return (T) current;
×
83
            }
84
            current = current.getParent();
×
85
        }
86
        return null;
×
87
    }
88

89
    @Override
90
    public Set<NameDeclaration> addNameOccurrence(NameOccurrence occurrence) {
91
        Set<NameDeclaration> result = new HashSet<>();
×
92
        for (Map.Entry<NameDeclaration, List<NameOccurrence>> e : getDeclarations().entrySet()) {
×
93
            if (e.getKey().getImage().equals(occurrence.getImage())) {
×
94
                result.add(e.getKey());
×
95
                e.getValue().add(occurrence);
×
96
            }
97
        }
×
98
        return result;
×
99
    }
100
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc