• 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

41.38
/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/design/AbstractNcssCountRule.java
1
/*
2
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3
 */
4

5
package net.sourceforge.pmd.lang.plsql.rule.design;
6

7
import net.sourceforge.pmd.lang.ast.Node;
8
import net.sourceforge.pmd.lang.plsql.ast.ASTCaseStatement;
9
import net.sourceforge.pmd.lang.plsql.ast.ASTCaseWhenClause;
10
import net.sourceforge.pmd.lang.plsql.ast.ASTContinueStatement;
11
import net.sourceforge.pmd.lang.plsql.ast.ASTElseClause;
12
import net.sourceforge.pmd.lang.plsql.ast.ASTElsifClause;
13
import net.sourceforge.pmd.lang.plsql.ast.ASTExceptionHandler;
14
import net.sourceforge.pmd.lang.plsql.ast.ASTExitStatement;
15
import net.sourceforge.pmd.lang.plsql.ast.ASTExpression;
16
import net.sourceforge.pmd.lang.plsql.ast.ASTFieldDeclaration;
17
import net.sourceforge.pmd.lang.plsql.ast.ASTForStatement;
18
import net.sourceforge.pmd.lang.plsql.ast.ASTGotoStatement;
19
import net.sourceforge.pmd.lang.plsql.ast.ASTIfStatement;
20
import net.sourceforge.pmd.lang.plsql.ast.ASTLabelledStatement;
21
import net.sourceforge.pmd.lang.plsql.ast.ASTLoopStatement;
22
import net.sourceforge.pmd.lang.plsql.ast.ASTRaiseStatement;
23
import net.sourceforge.pmd.lang.plsql.ast.ASTReturnStatement;
24
import net.sourceforge.pmd.lang.plsql.ast.ASTStatement;
25
import net.sourceforge.pmd.lang.plsql.ast.ASTWhileStatement;
26
import net.sourceforge.pmd.lang.plsql.ast.PLSQLNode;
27
import net.sourceforge.pmd.lang.plsql.ast.PlsqlVisitorBase;
28

29
/**
30
 * Abstract superclass for NCSS counting methods. Analogous to and cribbed from
31
 * the Java version of the rule.
32
 *
33
 * @apiNote Internal API
34
 * @deprecated Since 7.19.0.
35
 */
36
@Deprecated
37
abstract class AbstractNcssCountRule<T extends PLSQLNode> extends AbstractCounterCheckRule<T> {
38

39

40
    /**
41
     * Count the nodes of the given type using NCSS rules.
42
     *
43
     * @param nodeClass class of node to count
44
     */
45
    AbstractNcssCountRule(Class<T> nodeClass) {
46
        super(nodeClass);
1✔
47
    }
1✔
48

49

50
    @Override
51
    protected int getMetric(T node) {
52
        return 1 + (Integer) node.acceptVisitor(new NcssVisitor(), null);
1✔
53
    }
54

55
    private static final class NcssVisitor extends PlsqlVisitorBase<Object, Object> {
56

57
        @Override
58
        public Object visitPlsqlNode(PLSQLNode node, Object data) {
59
            return countNodeChildren(node, data);
1✔
60
        }
61

62
        /**
63
         * Count the number of children of the given node. Adds one to count the
64
         * node itself.
65
         *
66
         * @param node node having children counted
67
         * @param data node data
68
         *
69
         * @return count of the number of children of the node, plus one
70
         */
71
        protected Integer countNodeChildren(Node node, Object data) {
72
            int nodeCount = 0;
1✔
73
            for (int i = 0; i < node.getNumChildren(); i++) {
1✔
74
                nodeCount += (Integer) node.getChild(i).acceptVisitor(this, data);
1✔
75
            }
76
            return nodeCount;
1✔
77
        }
78

79

80
        @Override
81
        public Object visit(ASTForStatement node, Object data) {
82
            return countNodeChildren(node, data) + 1;
×
83
        }
84

85
        @Override
86
        public Object visit(ASTLoopStatement node, Object data) {
87
            return countNodeChildren(node, data) + 1;
×
88
        }
89

90
        @Override
91
        public Object visit(ASTIfStatement node, Object data) {
92
            return countNodeChildren(node, data) + 1;
×
93
        }
94

95
        @Override
96
        public Object visit(ASTElsifClause node, Object data) {
97
            return countNodeChildren(node, data) + 1;
×
98
        }
99

100
        @Override
101
        public Object visit(ASTElseClause node, Object data) {
102
            return countNodeChildren(node, data) + 1;
×
103
        }
104

105
        @Override
106
        public Object visit(ASTWhileStatement node, Object data) {
107
            return countNodeChildren(node, data) + 1;
×
108
        }
109

110
        @Override
111
        public Object visit(ASTExitStatement node, Object data) {
112
            return 1;
×
113
        }
114

115
        @Override
116
        public Object visit(ASTExceptionHandler node, Object data) {
117
            return countNodeChildren(node, data) + 1;
×
118
        }
119

120
        @Override
121
        public Object visit(ASTContinueStatement node, Object data) {
122
            return 1;
×
123
        }
124

125
        @Override
126
        public Object visit(ASTGotoStatement node, Object data) {
127
            return 1;
×
128
        }
129

130
        @Override
131
        public Object visit(ASTReturnStatement node, Object data) {
132
            return countNodeChildren(node, data) + 1;
×
133
        }
134

135
        @Override
136
        public Object visit(ASTCaseStatement node, Object data) {
137
            return countNodeChildren(node, data) + 1;
×
138
        }
139

140
        @Override
141
        public Object visit(ASTRaiseStatement node, Object data) {
142
            return 1;
×
143
        }
144

145
        @Override
146
        public Object visit(ASTExpression node, Object data) {
147
            // "For" update expressions do not count as separate lines of code
148
            return node.getParent() instanceof ASTStatement ? 0 : 1;
1!
149
        }
150

151
        @Override
152
        public Object visit(ASTFieldDeclaration node, Object data) {
153
            return 1;
×
154
        }
155

156
        @Override
157
        public Object visit(ASTLabelledStatement node, Object data) {
158
            return countNodeChildren(node, data) + 1;
×
159
        }
160

161
        @Override
162
        public Object visit(ASTCaseWhenClause node, Object data) {
163
            return countNodeChildren(node, data) + 1;
×
164
        }
165

166
    }
167
}
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