adlint 3.0.10 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +67 -0
- data/MANIFEST +2 -0
- data/NEWS +10 -3
- data/etc/mesg.d/c_builtin/en_US/messages.yml +29 -1
- data/etc/mesg.d/c_builtin/ja_JP/messages.yml +29 -1
- data/etc/mesg.d/core/en_US/messages.yml +1 -1
- data/etc/mesg.d/core/ja_JP/messages.yml +1 -1
- data/features/code_check/W0003.feature +5 -0
- data/features/code_check/W0023.feature +32 -0
- data/features/code_check/W0024.feature +22 -0
- data/features/code_check/W0093.feature +71 -0
- data/features/code_check/W0097.feature +4 -0
- data/features/code_check/W0100.feature +10 -0
- data/features/code_check/W0119.feature +8 -0
- data/features/code_check/W0133.feature +8 -0
- data/features/code_check/W0134.feature +8 -0
- data/features/code_check/W0136.feature +8 -0
- data/features/code_check/W0138.feature +8 -0
- data/features/code_check/W0140.feature +8 -0
- data/features/code_check/W0142.feature +8 -0
- data/features/code_check/W0143.feature +8 -0
- data/features/code_check/W0144.feature +8 -0
- data/features/code_check/W0145.feature +8 -0
- data/features/code_check/W0146.feature +8 -0
- data/features/code_check/W0147.feature +8 -0
- data/features/code_check/W0148.feature +8 -0
- data/features/code_check/W0149.feature +8 -0
- data/features/code_check/W0150.feature +8 -0
- data/features/code_check/W0151.feature +8 -0
- data/features/code_check/W0152.feature +8 -0
- data/features/code_check/W0153.feature +8 -0
- data/features/code_check/W0154.feature +8 -0
- data/features/code_check/W0155.feature +8 -0
- data/features/code_check/W0156.feature +8 -0
- data/features/code_check/W0157.feature +8 -0
- data/features/code_check/W0158.feature +8 -0
- data/features/code_check/W0159.feature +8 -0
- data/features/code_check/W0160.feature +8 -0
- data/features/code_check/W0161.feature +8 -0
- data/features/code_check/W0162.feature +8 -0
- data/features/code_check/W0163.feature +8 -0
- data/features/code_check/W0164.feature +8 -0
- data/features/code_check/W0165.feature +8 -0
- data/features/code_check/W0166.feature +8 -0
- data/features/code_check/W0167.feature +8 -0
- data/features/code_check/W0168.feature +8 -0
- data/features/code_check/W0169.feature +8 -0
- data/features/code_check/W0170.feature +8 -0
- data/features/code_check/W0171.feature +8 -0
- data/features/code_check/W0172.feature +8 -0
- data/features/code_check/W0173.feature +8 -0
- data/features/code_check/W0174.feature +8 -0
- data/features/code_check/W0175.feature +8 -0
- data/features/code_check/W0176.feature +8 -0
- data/features/code_check/W0177.feature +8 -0
- data/features/code_check/W0178.feature +8 -0
- data/features/code_check/W0179.feature +8 -0
- data/features/code_check/W0180.feature +8 -0
- data/features/code_check/W0181.feature +8 -0
- data/features/code_check/W0250.feature +8 -0
- data/features/code_check/W0422.feature +194 -0
- data/features/code_check/W0459.feature +16 -0
- data/features/code_check/W0460.feature +342 -0
- data/features/code_check/W0461.feature +5 -0
- data/features/code_check/W0497.feature +12 -0
- data/features/code_check/W0499.feature +6 -0
- data/features/code_check/W0502.feature +6 -0
- data/features/code_check/W0570.feature +47 -0
- data/features/code_check/W0573.feature +8 -0
- data/features/code_check/W0582.feature +4 -0
- data/features/code_check/W0583.feature +4 -0
- data/features/code_check/W0584.feature +10 -0
- data/features/code_check/W0599.feature +10 -0
- data/features/code_check/W0644.feature +2 -0
- data/features/code_check/W0649.feature +14 -0
- data/features/code_check/W0650.feature +12 -0
- data/features/code_check/W0685.feature +10 -0
- data/features/code_check/W0686.feature +8 -0
- data/features/code_check/W0711.feature +2 -0
- data/features/code_check/W0712.feature +2 -0
- data/features/code_check/W0713.feature +2 -0
- data/features/code_check/W0714.feature +2 -0
- data/features/code_check/W0715.feature +2 -0
- data/features/code_check/W0718.feature +2 -0
- data/features/code_check/W0719.feature +8 -0
- data/features/code_check/W0732.feature +18 -0
- data/features/code_check/W0733.feature +18 -0
- data/features/code_check/W0734.feature +24 -0
- data/features/code_check/W0735.feature +24 -0
- data/features/code_check/W0747.feature +8 -0
- data/features/code_check/W0749.feature +8 -0
- data/features/code_check/W0750.feature +8 -0
- data/features/code_check/W0753.feature +8 -0
- data/features/code_check/W0754.feature +8 -0
- data/features/code_check/W0759.feature +8 -0
- data/features/code_check/W0760.feature +8 -0
- data/features/code_check/W0761.feature +8 -0
- data/features/code_check/W0762.feature +8 -0
- data/features/code_check/W0794.feature +6 -0
- data/features/code_check/W1050.feature +8 -0
- data/features/code_check/W1066.feature +8 -0
- data/features/code_check/W1067.feature +8 -0
- data/features/code_check/W1068.feature +8 -0
- data/features/code_check/W1071.feature +4 -0
- data/features/code_check/W9003.feature +2 -0
- data/lib/adlint/cc1.rb +1 -0
- data/lib/adlint/cc1/branch.rb +34 -13
- data/lib/adlint/cc1/conv.rb +3 -3
- data/lib/adlint/cc1/ctrlexpr.rb +12 -7
- data/lib/adlint/cc1/environ.rb +12 -2
- data/lib/adlint/cc1/expr.rb +10 -8
- data/lib/adlint/cc1/interp.rb +56 -49
- data/lib/adlint/cc1/mediator.rb +9 -5
- data/lib/adlint/cc1/object.rb +37 -34
- data/lib/adlint/cc1/trace.rb +287 -0
- data/lib/adlint/cc1/type.rb +15 -15
- data/lib/adlint/cc1/value.rb +823 -427
- data/lib/adlint/cpp/eval.rb +5 -2
- data/lib/adlint/cpp/source.rb +21 -22
- data/lib/adlint/exam/c_builtin/cc1_check.rb +1636 -1067
- data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +28 -22
- data/lib/adlint/exam/c_builtin/cc1_code.rb +4 -4
- data/lib/adlint/exam/c_builtin/cc1_metric.rb +14 -14
- data/lib/adlint/location.rb +5 -7
- data/lib/adlint/metric.rb +2 -2
- data/lib/adlint/prelude.rb +6 -2
- data/lib/adlint/report.rb +2 -2
- data/lib/adlint/version.rb +3 -3
- data/share/doc/developers_guide_ja.html +10 -4
- data/share/doc/developers_guide_ja.texi +8 -2
- data/share/doc/users_guide_en.html +679 -72
- data/share/doc/users_guide_en.texi +557 -12
- data/share/doc/users_guide_ja.html +678 -74
- data/share/doc/users_guide_ja.texi +554 -13
- data/spec/adlint/cc1/ctrlexpr_spec.rb +20 -11
- data/spec/adlint/cc1/domain_spec.rb +9 -0
- metadata +4 -2
|
@@ -23,6 +23,8 @@ Feature: W0459
|
|
|
23
23
|
| W0118 | 2 | 13 |
|
|
24
24
|
| W0117 | 4 | 6 |
|
|
25
25
|
| W0459 | 7 | 25 |
|
|
26
|
+
| C1000 | | |
|
|
27
|
+
| C1003 | 6 | 11 |
|
|
26
28
|
| W0100 | 6 | 11 |
|
|
27
29
|
| W0104 | 4 | 14 |
|
|
28
30
|
| W0501 | 7 | 16 |
|
|
@@ -43,8 +45,14 @@ Feature: W0459
|
|
|
43
45
|
| mesg | line | column |
|
|
44
46
|
| W0117 | 1 | 5 |
|
|
45
47
|
| W0705 | 4 | 14 |
|
|
48
|
+
| C1000 | | |
|
|
49
|
+
| C1006 | 1 | 13 |
|
|
46
50
|
| W0705 | 4 | 17 |
|
|
51
|
+
| C1000 | | |
|
|
52
|
+
| C1006 | 1 | 13 |
|
|
47
53
|
| W0459 | 4 | 16 |
|
|
54
|
+
| C1000 | | |
|
|
55
|
+
| C1003 | 3 | 9 |
|
|
48
56
|
| W0100 | 3 | 9 |
|
|
49
57
|
| W0104 | 1 | 13 |
|
|
50
58
|
| W0950 | 3 | 14 |
|
|
@@ -70,6 +78,8 @@ Feature: W0459
|
|
|
70
78
|
| mesg | line | column |
|
|
71
79
|
| W0117 | 1 | 5 |
|
|
72
80
|
| W0705 | 6 | 18 |
|
|
81
|
+
| C1000 | | |
|
|
82
|
+
| C1006 | 1 | 13 |
|
|
73
83
|
| W0100 | 3 | 9 |
|
|
74
84
|
| W0104 | 1 | 13 |
|
|
75
85
|
| W1071 | 1 | 5 |
|
|
@@ -109,7 +119,13 @@ Feature: W0459
|
|
|
109
119
|
| W0118 | 1 | 13 |
|
|
110
120
|
| W0117 | 3 | 5 |
|
|
111
121
|
| W0459 | 14 | 17 |
|
|
122
|
+
| C1000 | | |
|
|
123
|
+
| C1003 | 6 | 9 |
|
|
112
124
|
| W0460 | 21 | 12 |
|
|
125
|
+
| C1000 | | |
|
|
126
|
+
| C1003 | 6 | 9 |
|
|
127
|
+
| C1001 | 8 | 18 |
|
|
128
|
+
| C1002 | 13 | 9 |
|
|
113
129
|
| W0104 | 3 | 13 |
|
|
114
130
|
| W9001 | 10 | 9 |
|
|
115
131
|
| W9001 | 11 | 13 |
|
|
@@ -21,7 +21,349 @@ Feature: W0460
|
|
|
21
21
|
| mesg | line | column |
|
|
22
22
|
| W1076 | 1 | 12 |
|
|
23
23
|
| W0459 | 5 | 14 |
|
|
24
|
+
| C1000 | | |
|
|
25
|
+
| C1003 | 3 | 9 |
|
|
24
26
|
| W0460 | 9 | 13 |
|
|
27
|
+
| C1000 | | |
|
|
28
|
+
| C1003 | 3 | 9 |
|
|
29
|
+
| C1002 | 5 | 14 |
|
|
25
30
|
| W0629 | 1 | 12 |
|
|
26
31
|
| W0950 | 3 | 11 |
|
|
27
32
|
| W0628 | 1 | 12 |
|
|
33
|
+
|
|
34
|
+
Scenario: possible uninitialized value reference because of an incomplete if
|
|
35
|
+
statement
|
|
36
|
+
Given a target source named "fixture.c" with:
|
|
37
|
+
"""
|
|
38
|
+
void foo(int i)
|
|
39
|
+
{
|
|
40
|
+
int j;
|
|
41
|
+
|
|
42
|
+
if (i == 0) { /* false */
|
|
43
|
+
j = 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return j; /* W0460 */
|
|
47
|
+
}
|
|
48
|
+
"""
|
|
49
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
50
|
+
Then the output should exactly match with:
|
|
51
|
+
| mesg | line | column |
|
|
52
|
+
| W0117 | 1 | 6 |
|
|
53
|
+
| W0460 | 9 | 12 |
|
|
54
|
+
| C1000 | | |
|
|
55
|
+
| C1003 | 3 | 9 |
|
|
56
|
+
| C1002 | 5 | 11 |
|
|
57
|
+
| W0100 | 3 | 9 |
|
|
58
|
+
| W0104 | 1 | 14 |
|
|
59
|
+
| W0628 | 1 | 6 |
|
|
60
|
+
|
|
61
|
+
Scenario: possible uninitialized value reference because of an incomplete if
|
|
62
|
+
statement
|
|
63
|
+
Given a target source named "fixture.c" with:
|
|
64
|
+
"""
|
|
65
|
+
void foo(int i)
|
|
66
|
+
{
|
|
67
|
+
int j;
|
|
68
|
+
|
|
69
|
+
if (i < 0) { /* false */
|
|
70
|
+
j = 1;
|
|
71
|
+
if (i < -10) {
|
|
72
|
+
j = 2;
|
|
73
|
+
}
|
|
74
|
+
else if (i < -5) {
|
|
75
|
+
j = 3;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return j; /* W0460 */
|
|
80
|
+
}
|
|
81
|
+
"""
|
|
82
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
83
|
+
Then the output should exactly match with:
|
|
84
|
+
| mesg | line | column |
|
|
85
|
+
| W0117 | 1 | 6 |
|
|
86
|
+
| W0460 | 15 | 12 |
|
|
87
|
+
| C1000 | | |
|
|
88
|
+
| C1003 | 3 | 9 |
|
|
89
|
+
| C1002 | 5 | 11 |
|
|
90
|
+
| W0104 | 1 | 14 |
|
|
91
|
+
| W1069 | 7 | 9 |
|
|
92
|
+
| W0628 | 1 | 6 |
|
|
93
|
+
|
|
94
|
+
Scenario: possible uninitialized value reference because of an incomplete
|
|
95
|
+
if-else-if statement
|
|
96
|
+
Given a target source named "fixture.c" with:
|
|
97
|
+
"""
|
|
98
|
+
void foo(int i)
|
|
99
|
+
{
|
|
100
|
+
int j;
|
|
101
|
+
|
|
102
|
+
if (i < 0) { /* true */
|
|
103
|
+
if (i < -10) { /* false */
|
|
104
|
+
j = 2;
|
|
105
|
+
}
|
|
106
|
+
else if (i < -5) { /* false */
|
|
107
|
+
j = 3;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
j = 1;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return j; /* W0460 */
|
|
115
|
+
}
|
|
116
|
+
"""
|
|
117
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
118
|
+
Then the output should exactly match with:
|
|
119
|
+
| mesg | line | column |
|
|
120
|
+
| W0117 | 1 | 6 |
|
|
121
|
+
| W0460 | 17 | 12 |
|
|
122
|
+
| C1000 | | |
|
|
123
|
+
| C1003 | 3 | 9 |
|
|
124
|
+
| C1001 | 5 | 11 |
|
|
125
|
+
| C1002 | 6 | 15 |
|
|
126
|
+
| C1002 | 9 | 20 |
|
|
127
|
+
| W0104 | 1 | 14 |
|
|
128
|
+
| W1069 | 6 | 9 |
|
|
129
|
+
| W0628 | 1 | 6 |
|
|
130
|
+
|
|
131
|
+
Scenario: possible uninitialized value reference because of an incomplete if
|
|
132
|
+
statement
|
|
133
|
+
Given a target source named "fixture.c" with:
|
|
134
|
+
"""
|
|
135
|
+
void foo(int i)
|
|
136
|
+
{
|
|
137
|
+
int j;
|
|
138
|
+
|
|
139
|
+
if (i < 0) { /* false */
|
|
140
|
+
if (i < -10) {
|
|
141
|
+
j = 2;
|
|
142
|
+
}
|
|
143
|
+
else if (i < -5) {
|
|
144
|
+
j = 3;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
j = 1;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return j; /* W0460 */
|
|
152
|
+
}
|
|
153
|
+
"""
|
|
154
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
155
|
+
Then the output should exactly match with:
|
|
156
|
+
| mesg | line | column |
|
|
157
|
+
| W0117 | 1 | 6 |
|
|
158
|
+
| W0460 | 17 | 12 |
|
|
159
|
+
| C1000 | | |
|
|
160
|
+
| C1003 | 3 | 9 |
|
|
161
|
+
| C1002 | 5 | 11 |
|
|
162
|
+
| W0104 | 1 | 14 |
|
|
163
|
+
| W0628 | 1 | 6 |
|
|
164
|
+
|
|
165
|
+
Scenario: possible uninitialized value reference because of missing
|
|
166
|
+
assignment in a complete if statement
|
|
167
|
+
Given a target source named "fixture.c" with:
|
|
168
|
+
"""
|
|
169
|
+
void foo(int i)
|
|
170
|
+
{
|
|
171
|
+
int j;
|
|
172
|
+
|
|
173
|
+
if (i < 0) { /* true */
|
|
174
|
+
if (i < -10) { /* false */
|
|
175
|
+
j = 2;
|
|
176
|
+
}
|
|
177
|
+
else if (i < -5) { /* false */
|
|
178
|
+
j = 3;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
j = 1;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return j; /* W0460 */
|
|
188
|
+
}
|
|
189
|
+
"""
|
|
190
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
191
|
+
Then the output should exactly match with:
|
|
192
|
+
| mesg | line | column |
|
|
193
|
+
| W0117 | 1 | 6 |
|
|
194
|
+
| W0460 | 19 | 12 |
|
|
195
|
+
| C1000 | | |
|
|
196
|
+
| C1003 | 3 | 9 |
|
|
197
|
+
| C1001 | 5 | 11 |
|
|
198
|
+
| C1002 | 6 | 15 |
|
|
199
|
+
| C1002 | 9 | 20 |
|
|
200
|
+
| W0104 | 1 | 14 |
|
|
201
|
+
| W0628 | 1 | 6 |
|
|
202
|
+
|
|
203
|
+
Scenario: possible uninitialized value reference because of an incomplete if
|
|
204
|
+
statement
|
|
205
|
+
Given a target source named "fixture.c" with:
|
|
206
|
+
"""
|
|
207
|
+
void foo(int i)
|
|
208
|
+
{
|
|
209
|
+
int j;
|
|
210
|
+
|
|
211
|
+
if (i < 0) { /* false */
|
|
212
|
+
j = 1;
|
|
213
|
+
if (i < -10) {
|
|
214
|
+
j = 2;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return j; /* W0460 */
|
|
219
|
+
}
|
|
220
|
+
"""
|
|
221
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
222
|
+
Then the output should exactly match with:
|
|
223
|
+
| mesg | line | column |
|
|
224
|
+
| W0117 | 1 | 6 |
|
|
225
|
+
| W0460 | 12 | 12 |
|
|
226
|
+
| C1000 | | |
|
|
227
|
+
| C1003 | 3 | 9 |
|
|
228
|
+
| C1002 | 5 | 11 |
|
|
229
|
+
| W0104 | 1 | 14 |
|
|
230
|
+
| W0628 | 1 | 6 |
|
|
231
|
+
|
|
232
|
+
Scenario: possible uninitialized value reference because of an incomplete
|
|
233
|
+
if-else-if statement
|
|
234
|
+
Given a target source named "fixture.c" with:
|
|
235
|
+
"""
|
|
236
|
+
int foo(int i)
|
|
237
|
+
{
|
|
238
|
+
int j;
|
|
239
|
+
|
|
240
|
+
if (i > 2) { /* true */
|
|
241
|
+
if (i == 5) { /* false */
|
|
242
|
+
j = 5;
|
|
243
|
+
}
|
|
244
|
+
else if (i == 6) { /* false */
|
|
245
|
+
j = 6;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else if (i < 0) {
|
|
249
|
+
j = -1;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return j; /* W0460 */
|
|
253
|
+
}
|
|
254
|
+
"""
|
|
255
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
256
|
+
Then the output should exactly match with:
|
|
257
|
+
| mesg | line | column |
|
|
258
|
+
| W0117 | 1 | 5 |
|
|
259
|
+
| W0460 | 17 | 12 |
|
|
260
|
+
| C1000 | | |
|
|
261
|
+
| C1003 | 3 | 9 |
|
|
262
|
+
| C1001 | 5 | 11 |
|
|
263
|
+
| C1002 | 6 | 15 |
|
|
264
|
+
| C1002 | 9 | 20 |
|
|
265
|
+
| W0104 | 1 | 13 |
|
|
266
|
+
| W1069 | 5 | 5 |
|
|
267
|
+
| W1069 | 6 | 9 |
|
|
268
|
+
| W0628 | 1 | 5 |
|
|
269
|
+
|
|
270
|
+
Scenario: variable is not possibly initialized because of an incomplete
|
|
271
|
+
selection statement
|
|
272
|
+
Given a target source named "fixture.c" with:
|
|
273
|
+
"""
|
|
274
|
+
struct bar {
|
|
275
|
+
int x;
|
|
276
|
+
int y;
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
struct bar a[3];
|
|
280
|
+
|
|
281
|
+
int foo(int i, int j)
|
|
282
|
+
{
|
|
283
|
+
int k;
|
|
284
|
+
|
|
285
|
+
if (i < 0) {
|
|
286
|
+
struct bar b;
|
|
287
|
+
if (j == 0) {
|
|
288
|
+
return 0;
|
|
289
|
+
}
|
|
290
|
+
k = j < 10 ? b.x : b.y;
|
|
291
|
+
}
|
|
292
|
+
else if (i > 10) {
|
|
293
|
+
k = j ? a[0].x : a[1].y;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return k; /* W0460 */
|
|
297
|
+
}
|
|
298
|
+
"""
|
|
299
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
300
|
+
Then the output should exactly match with:
|
|
301
|
+
| mesg | line | column |
|
|
302
|
+
| W0117 | 6 | 12 |
|
|
303
|
+
| W0117 | 8 | 5 |
|
|
304
|
+
| W0459 | 17 | 20 |
|
|
305
|
+
| C1000 | | |
|
|
306
|
+
| C1003 | 13 | 20 |
|
|
307
|
+
| W0100 | 13 | 20 |
|
|
308
|
+
| W0460 | 23 | 12 |
|
|
309
|
+
| C1000 | | |
|
|
310
|
+
| C1003 | 10 | 9 |
|
|
311
|
+
| C1002 | 12 | 11 |
|
|
312
|
+
| C1002 | 19 | 16 |
|
|
313
|
+
| W0104 | 8 | 13 |
|
|
314
|
+
| W0104 | 8 | 20 |
|
|
315
|
+
| W1071 | 8 | 5 |
|
|
316
|
+
| W0950 | 6 | 14 |
|
|
317
|
+
| W1069 | 12 | 5 |
|
|
318
|
+
| W0501 | 17 | 20 |
|
|
319
|
+
| W0114 | 20 | 13 |
|
|
320
|
+
| W0628 | 8 | 5 |
|
|
321
|
+
| W0589 | 6 | 12 |
|
|
322
|
+
| W0593 | 6 | 12 |
|
|
323
|
+
|
|
324
|
+
Scenario: variable is initialized by a complete selection statement
|
|
325
|
+
Given a target source named "fixture.c" with:
|
|
326
|
+
"""
|
|
327
|
+
struct bar {
|
|
328
|
+
int x;
|
|
329
|
+
int y;
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
struct bar a[3];
|
|
333
|
+
|
|
334
|
+
int foo(int i, int j)
|
|
335
|
+
{
|
|
336
|
+
int k;
|
|
337
|
+
|
|
338
|
+
if (i < 0) {
|
|
339
|
+
struct bar b;
|
|
340
|
+
if (j == 0) {
|
|
341
|
+
return 0;
|
|
342
|
+
}
|
|
343
|
+
k = j < 10 ? b.x : b.y;
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
k = j ? a[0].x : a[1].y;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
return k; /* OK */
|
|
350
|
+
}
|
|
351
|
+
"""
|
|
352
|
+
When I successfully run `adlint fixture.c` on noarch
|
|
353
|
+
Then the output should exactly match with:
|
|
354
|
+
| mesg | line | column |
|
|
355
|
+
| W0117 | 6 | 12 |
|
|
356
|
+
| W0117 | 8 | 5 |
|
|
357
|
+
| W0459 | 17 | 20 |
|
|
358
|
+
| C1000 | | |
|
|
359
|
+
| C1003 | 13 | 20 |
|
|
360
|
+
| W0100 | 13 | 20 |
|
|
361
|
+
| W0104 | 8 | 13 |
|
|
362
|
+
| W0104 | 8 | 20 |
|
|
363
|
+
| W1071 | 8 | 5 |
|
|
364
|
+
| W0950 | 6 | 14 |
|
|
365
|
+
| W0501 | 17 | 20 |
|
|
366
|
+
| W0114 | 20 | 13 |
|
|
367
|
+
| W0628 | 8 | 5 |
|
|
368
|
+
| W0589 | 6 | 12 |
|
|
369
|
+
| W0593 | 6 | 12 |
|
|
@@ -16,7 +16,11 @@ Feature: W0497
|
|
|
16
16
|
| mesg | line | column |
|
|
17
17
|
| W1076 | 1 | 12 |
|
|
18
18
|
| W0116 | 3 | 14 |
|
|
19
|
+
| C1000 | | |
|
|
20
|
+
| C1006 | 1 | 29 |
|
|
19
21
|
| W0116 | 3 | 23 |
|
|
22
|
+
| C1000 | | |
|
|
23
|
+
| C1006 | 1 | 45 |
|
|
20
24
|
| W0104 | 1 | 29 |
|
|
21
25
|
| W0104 | 1 | 45 |
|
|
22
26
|
| W0629 | 1 | 12 |
|
|
@@ -37,7 +41,11 @@ Feature: W0497
|
|
|
37
41
|
| mesg | line | column |
|
|
38
42
|
| W1076 | 1 | 12 |
|
|
39
43
|
| W0116 | 3 | 15 |
|
|
44
|
+
| C1000 | | |
|
|
45
|
+
| C1006 | 1 | 29 |
|
|
40
46
|
| W0116 | 3 | 26 |
|
|
47
|
+
| C1000 | | |
|
|
48
|
+
| C1006 | 1 | 45 |
|
|
41
49
|
| W0104 | 1 | 29 |
|
|
42
50
|
| W0104 | 1 | 45 |
|
|
43
51
|
| W0629 | 1 | 12 |
|
|
@@ -56,7 +64,11 @@ Feature: W0497
|
|
|
56
64
|
| mesg | line | column |
|
|
57
65
|
| W1076 | 1 | 12 |
|
|
58
66
|
| W0116 | 3 | 15 |
|
|
67
|
+
| C1000 | | |
|
|
68
|
+
| C1006 | 1 | 29 |
|
|
59
69
|
| W0116 | 3 | 24 |
|
|
70
|
+
| C1000 | | |
|
|
71
|
+
| C1006 | 1 | 45 |
|
|
60
72
|
| W0104 | 1 | 29 |
|
|
61
73
|
| W0104 | 1 | 45 |
|
|
62
74
|
| W0629 | 1 | 12 |
|
|
@@ -16,6 +16,8 @@ Feature: W0499
|
|
|
16
16
|
| mesg | line | column |
|
|
17
17
|
| W1076 | 1 | 21 |
|
|
18
18
|
| W0116 | 3 | 14 |
|
|
19
|
+
| C1000 | | |
|
|
20
|
+
| C1006 | 1 | 38 |
|
|
19
21
|
| W0104 | 1 | 38 |
|
|
20
22
|
| W0104 | 1 | 54 |
|
|
21
23
|
| W0104 | 1 | 70 |
|
|
@@ -36,6 +38,8 @@ Feature: W0499
|
|
|
36
38
|
| mesg | line | column |
|
|
37
39
|
| W1076 | 1 | 21 |
|
|
38
40
|
| W0116 | 3 | 15 |
|
|
41
|
+
| C1000 | | |
|
|
42
|
+
| C1006 | 1 | 38 |
|
|
39
43
|
| W0104 | 1 | 38 |
|
|
40
44
|
| W0104 | 1 | 54 |
|
|
41
45
|
| W0104 | 1 | 70 |
|
|
@@ -55,6 +59,8 @@ Feature: W0499
|
|
|
55
59
|
| mesg | line | column |
|
|
56
60
|
| W1076 | 1 | 21 |
|
|
57
61
|
| W0116 | 3 | 15 |
|
|
62
|
+
| C1000 | | |
|
|
63
|
+
| C1006 | 1 | 38 |
|
|
58
64
|
| W0104 | 1 | 38 |
|
|
59
65
|
| W0104 | 1 | 54 |
|
|
60
66
|
| W0104 | 1 | 70 |
|