adlint 3.0.8 → 3.0.10

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.
Files changed (56) hide show
  1. data/ChangeLog +295 -0
  2. data/MANIFEST +9 -0
  3. data/NEWS +25 -4
  4. data/etc/mesg.d/c_builtin/en_US/messages.yml +1 -1
  5. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +1 -1
  6. data/etc/mesg.d/core/en_US/messages.yml +1 -1
  7. data/etc/mesg.d/core/ja_JP/messages.yml +1 -1
  8. data/features/code_check/E0008.feature +20 -0
  9. data/features/code_check/W0093.feature +1 -1
  10. data/features/code_check/W0097.feature +30 -0
  11. data/features/code_check/W0100.feature +66 -0
  12. data/features/code_check/W0422.feature +157 -0
  13. data/features/code_check/W0459.feature +118 -0
  14. data/features/code_check/W0461.feature +115 -0
  15. data/features/code_check/W0610.feature +59 -0
  16. data/features/code_check/W0612.feature +29 -0
  17. data/features/code_check/W0613.feature +33 -0
  18. data/features/code_check/W0704.feature +25 -0
  19. data/features/code_check/W0705.feature +33 -0
  20. data/features/code_check/W1050.feature +43 -0
  21. data/features/code_check/W1071.feature +30 -0
  22. data/features/code_check/W9001.feature +24 -0
  23. data/lib/adlint/cc1/branch.rb +32 -9
  24. data/lib/adlint/cc1/builtin.rb +2 -2
  25. data/lib/adlint/cc1/conv.rb +33 -33
  26. data/lib/adlint/cc1/ctrlexpr.rb +30 -30
  27. data/lib/adlint/cc1/domain.rb +12 -4
  28. data/lib/adlint/cc1/environ.rb +2 -1
  29. data/lib/adlint/cc1/expr.rb +135 -125
  30. data/lib/adlint/cc1/format.rb +3 -3
  31. data/lib/adlint/cc1/interp.rb +123 -109
  32. data/lib/adlint/cc1/lexer.rb +44 -40
  33. data/lib/adlint/cc1/mediator.rb +2 -2
  34. data/lib/adlint/cc1/object.rb +121 -36
  35. data/lib/adlint/cc1/option.rb +1 -0
  36. data/lib/adlint/cc1/parser.rb +874 -845
  37. data/lib/adlint/cc1/parser.y +22 -2
  38. data/lib/adlint/cc1/syntax.rb +37 -18
  39. data/lib/adlint/cc1/type.rb +3 -3
  40. data/lib/adlint/cc1/value.rb +58 -50
  41. data/lib/adlint/cpp/lexer.rb +5 -1
  42. data/lib/adlint/cpp/macro.rb +30 -30
  43. data/lib/adlint/cpp/subst.rb +4 -4
  44. data/lib/adlint/exam/c_builtin/cc1_check.rb +172 -172
  45. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +11 -11
  46. data/lib/adlint/exam/c_builtin/cpp_check.rb +2 -2
  47. data/lib/adlint/memo.rb +13 -13
  48. data/lib/adlint/prelude.rb +2 -2
  49. data/lib/adlint/version.rb +2 -2
  50. data/share/doc/developers_guide_ja.html +7 -5
  51. data/share/doc/developers_guide_ja.texi +5 -3
  52. data/share/doc/users_guide_en.html +3 -3
  53. data/share/doc/users_guide_en.texi +1 -1
  54. data/share/doc/users_guide_ja.html +3 -3
  55. data/share/doc/users_guide_ja.texi +1 -1
  56. metadata +11 -2
data/ChangeLog CHANGED
@@ -1,3 +1,298 @@
1
+ Fri Jun 28 10:23:30 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
2
+
3
+ * release.ga : 3.0.10
4
+ - Add missing comment handling in the initial state of the
5
+ preprocessing lexer.
6
+ - Fix incomplete identifier to typedef name translation when the
7
+ declaring enumerator name is conflicting with the prior typedef
8
+ name.
9
+ - Fix evaluation of the global constant variable definition in order
10
+ not to ignore value of the initializer.
11
+ - Revise pointer dereferencing behavior to successfully dereference a
12
+ pointer only when the value of pointer variable is definite.
13
+ - Improve heuristics of array subscript evaluation with indefinite
14
+ subscript.
15
+ - Fix controlling-expression deduction of iteration-statements in
16
+ order to adopt the ordinary expression when no control breaking
17
+ condition is found in the iteration body.
18
+ - Remove unnecessary controlling expression evaluation at entering a
19
+ do-statement.
20
+ - Fix value-domain thinning condition to thin domains discarded by a
21
+ break-statement in the iteration.
22
+ - Fix bypassing inner-variable's value mutation in order to correctly
23
+ propagate mutation to the outer-variable.
24
+
25
+ Wed Jun 26 17:42:13 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
26
+
27
+ * release.rc : 3.0.9
28
+ - Add missing comment handling in the initial state of the
29
+ preprocessing lexer.
30
+ - Fix incomplete identifier to typedef name translation when the
31
+ declaring enumerator name is conflicting with the prior typedef
32
+ name.
33
+ - Fix evaluation of the global constant variable definition in order
34
+ not to ignore value of the initializer.
35
+ - Revise pointer dereferencing behavior to successfully dereference a
36
+ pointer only when the value of pointer variable is definite.
37
+ - Improve heuristics of array subscript evaluation with indefinite
38
+ subscript.
39
+ - Fix controlling-expression deduction of iteration-statements in
40
+ order to adopt the ordinary expression when no control breaking
41
+ condition is found in the iteration body.
42
+ - Remove unnecessary controlling expression evaluation at entering a
43
+ do-statement.
44
+ - Fix value-domain thinning condition to thin domains discarded by a
45
+ break-statement in the iteration.
46
+ - Fix bypassing inner-variable's value mutation in order to correctly
47
+ propagate mutation to the outer-variable.
48
+
49
+ Wed Jun 26 16:07:59 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
50
+
51
+ * lib/adlint/cc1/object.rb : Fix assignment behavior of the array
52
+ representative element in order to correctly propagete definiteness
53
+ of the new value to outer array variable's value.
54
+
55
+ * features/code_check/W0461.feature : Add scenario to reproduce
56
+ false-positive of W0461 code check when the pointee array is
57
+ initialized by assignment with indefinite subscript value.
58
+
59
+ Tue Jun 25 15:24:13 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
60
+
61
+ * lib/adlint/cc1/interp.rb : Revise evaluation behavior of
62
+ for-statement's explicit controlling-expression in order to properly
63
+ evaluate the branch entering condition.
64
+ Revise evaluation behavior of conditional-expressions to adopt the
65
+ non-NULL pointer as the expression value when a value of the
66
+ controlling-expression is indefinite.
67
+
68
+ * lib/adlint/cc1/mediator.rb : Revise pointer dereferencing behavior to
69
+ successfully dereference a pointer only when the value of pointer
70
+ variable is definite again.
71
+
72
+ * features/code_check/W0610.feature : Add scenario to reproduce bad
73
+ variables' value-domain management problem.
74
+
75
+ Mon Jun 24 17:22:47 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
76
+
77
+ * lib/adlint/cc1/branch.rb : Fix over-thinning of controlling
78
+ variable's value-domain when the terminating branch is of
79
+ switch-statement enclosed by an iteration-statement.
80
+
81
+ * features/code_check/W0459.feature : Add scenario to reproduce
82
+ false-positive of W0459 code check caused by bad break statement
83
+ evaluation in thinning value-domain of the controlling variable.
84
+
85
+ Mon Jun 24 16:51:36 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
86
+
87
+ * lib/adlint/cc1/object.rb : Restore scrapped side-effect rollback of
88
+ inner-variables.
89
+
90
+ Fri Jun 21 19:14:39 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
91
+
92
+ * lib/adlint/cc1/object.rb : Fix incomplete assignment to the array
93
+ representative element.
94
+
95
+ * features/code_check/W0459.feature : Add scenario to reproduce
96
+ false-positive of W0459 code check caused by missing representative
97
+ element updating.
98
+
99
+ Fri Jun 21 17:59:24 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
100
+
101
+ * lib/adlint/cc1/object.rb : Add assignment to the array representative
102
+ element.
103
+
104
+ * features/code_check/W0459.feature : Add scenario to reproduce
105
+ false-negative of W0459 code check caused by missing representative
106
+ element updating.
107
+
108
+ Fri Jun 21 16:16:16 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
109
+
110
+ * lib/adlint/cc1/expr.rb : Improve heuristics of array subscript
111
+ evaluation with indefinite subscript again and again.
112
+
113
+ * lib/adlint/cc1/object.rb : Fix bad management of the representative
114
+ element of array variables in order to correctly update the array by
115
+ reassigning new value to its representative element.
116
+ Add UnmappedMemoryWindow instead of UnmappedMemoryBlock.
117
+
118
+ * features/code_check/W0100.feature : Add scenario to reproduce
119
+ false-positive of W0100 code check caused by bad representative array
120
+ element.
121
+ * MANIFEST : Ditto.
122
+
123
+ Thu Jun 20 17:59:25 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
124
+
125
+ * lib/adlint/cc1/expr.rb : Improve heuristics of array subscript
126
+ evaluation with indefinite subscript again.
127
+
128
+ * lib/adlint/cc1/object.rb : Add management of the representative
129
+ element of array variables.
130
+ Add UnmappedMemoryBlock which is not mapped to the MemoryPool in
131
+ order to bind representative elements to their values.
132
+
133
+ * lib/adlint/cc1/interp.rb : Scrap interpretation mode for controlling
134
+ expressions.
135
+ * lib/adlint/cc1/option.rb : Ditto.
136
+
137
+ Thu Jun 20 11:21:59 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
138
+
139
+ * lib/adlint/cc1/object.rb : Fix bad value version management in order
140
+ not to forget histories of a value.
141
+
142
+ * features/code_check/W1050.feature : Add scenario to reproduce bad
143
+ value version management problem.
144
+ * MANIFEST : Ditto.
145
+
146
+ Wed Jun 19 17:17:27 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
147
+
148
+ * lib/adlint/cc1/object.rb : Fix bypassing inner-variable's value
149
+ mutation in order to correctly propagate mutation to the
150
+ outer-variable.
151
+ Add missing value-domain thinning of inner-variables.
152
+
153
+ * lib/adlint/cc1/branch.rb : Fix value-domain thinning condition to
154
+ thin domains discarded by a break-statement in the iteration.
155
+ * lib/adlint/cc1/environ.rb : Ditto.
156
+ * lib/adlint/cc1/interp.rb : Ditto.
157
+ * lib/adlint/cc1/option.rb : Ditto.
158
+
159
+ * features/code_check/W0422.feature : Add scenario to reproduce
160
+ false-positive of W0422 code check caused by incomplete value-domain
161
+ thinning.
162
+
163
+ * lib/adlint/cc1/builtin.rb : Fix broken `__adlint__eval' builtin debug
164
+ function.
165
+
166
+ Mon Jun 17 16:43:32 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
167
+
168
+ * lib/adlint/cpp/lexer.rb : Add missing comment handling in the initial
169
+ state of the preprocessing lexer.
170
+
171
+ * features/code_check/E0008.feature : Add scenario to reproduce a parse
172
+ error when a #define directive appears right after a block comment
173
+ followed by an escaped newline.
174
+ * MANIFEST : Ditto.
175
+
176
+ Mon Jun 17 15:24:10 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
177
+
178
+ * features/code_check/W0704.feature : Add scenario to reproduce a parse
179
+ error when the enumerator name is conflicting with the prior typedef
180
+ name.
181
+ * MANIFEST : Ditto.
182
+
183
+ * lib/adlint/cc1/lexer.rb : Rewrite identifier set to track declared
184
+ identifiers in preparation for fixing incomplete identifier to
185
+ typedef name translation.
186
+
187
+ * lib/adlint/cc1/parser.y : Fix incomplete identifier to typedef name
188
+ translation when the declaring enumerator name is conflicting with
189
+ the prior typedef name.
190
+
191
+ Thu Jun 13 15:53:21 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
192
+
193
+ * lib/adlint/cc1/interp.rb : Remove unnecessary controlling expression
194
+ evaluation at entering a do-statement.
195
+
196
+ * features/code_check/W9001.feature : Add scenario to reproduce
197
+ false-positive of W9001 code check about body of the one-shot
198
+ do-statement.
199
+
200
+ Thu Jun 13 13:42:24 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
201
+
202
+ * lib/adlint/cc1/domain.rb : Fix bad bitwise & evaluation with
203
+ indefinite value domains.
204
+
205
+ * features/code_check/W0612.feature : Add scenario to reproduce
206
+ false-positive of W0612 code check when value of an operand is
207
+ indefinite.
208
+ * MANIFEST : Ditto.
209
+
210
+ Wed Jun 12 19:57:55 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
211
+
212
+ * lib/adlint/cc1/syntax.rb : Fix controlling-expression deduction of
213
+ iteration-statements in order to adopt the ordinary expression when
214
+ no control breaking condition is found in the iteration body.
215
+
216
+ * features/code_check/W0422.feature : Add scenario to reproduce a known
217
+ bug.
218
+
219
+ Wed Jun 12 15:51:38 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
220
+
221
+ * lib/adlint/cc1/object.rb : Add missing value coercing in evaluation
222
+ of variable definition when the variable has already been declared.
223
+
224
+ Wed Jun 12 11:43:35 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
225
+
226
+ * features/code_check/W0459.feature : Add scenario to reproduce a known
227
+ bug.
228
+
229
+ * lib/adlint/cc1/interp.rb : Fix conditional-expression evaluation in
230
+ order to evaluate controlling expression in the same manner as that
231
+ of if-statement.
232
+
233
+ * lib/adlint/cc1/mediator.rb : Fix pointer dereference behavior in
234
+ order to find possible pointee objects when the pointer value is not
235
+ definite.
236
+
237
+ Fri Jun 7 11:45:23 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
238
+
239
+ * lib/adlint/cc1/expr.rb : Revise global constant array subscript
240
+ evaluation policy in order to make undefined-value when the subscript
241
+ value is indefinite.
242
+
243
+ Fri Jun 7 10:44:06 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
244
+
245
+ * features/code_check/W1071.feature : Add scenario to reproduce the
246
+ broken array subscript evaluation in controlling expressions.
247
+
248
+ * lib/adlint/cc1/expr.rb : Fix bad array subscript evaluation so that
249
+ the array-subscript-expression makes undefined-value when no
250
+ designated object is found.
251
+
252
+ Thu Jun 6 18:36:13 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
253
+
254
+ * features/code_check/W0613.feature : Add scenario to reproduce
255
+ false-positive of W0613 code check when an array-subscript-expression
256
+ refers to the global constant array is specified as the controlling
257
+ expression.
258
+
259
+ * lib/adlint/cc1/expr.rb : Improve heuristics of array subscript
260
+ evaluation with indefinite subscript only in controlling expressions.
261
+ * lib/adlint/cc1/interp.rb : Ditto.
262
+ * lib/adlint/cc1/option.rb : Ditto.
263
+
264
+ Wed Jun 5 17:37:23 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
265
+
266
+ * lib/adlint/cc1/object.rb : Fix variable's value version rollback
267
+ mechanism in order not to do unnecessary rollback of inner-variables
268
+ of array or composite value.
269
+
270
+ * lib/adlint/cc1/type.rb : Fix bad type traits predicate methods for
271
+ array type.
272
+
273
+ * features/code_check/W0097.feature : Add scenario to reproduce a known
274
+ bug.
275
+ * features/code_check/W0461.feature : Ditto.
276
+
277
+ * lib/adlint/cc1/value.rb : Add comment to newly added destructive
278
+ #force_oeverwrite! method.
279
+
280
+ Wed Jun 5 17:21:36 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
281
+
282
+ * lib/adlint/cc1/mediator.rb : Revise pointer dereferencing behavior to
283
+ successfully dereference a pointer only when the value of pointer
284
+ variable is definite.
285
+
286
+ Tue Jun 4 20:33:44 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
287
+
288
+ * features/code_check/W0705.feature : Add scenario to reproduce a known
289
+ bug.
290
+
291
+ * lib/adlint/cc1/interp.rb : Fix evaluation of the global constant
292
+ variable definition in order not to ignore value of the initializer.
293
+ * lib/adlint/cc1/object.rb : Ditto.
294
+ * lib/adlint/cc1/value.rb : Ditto.
295
+
1
296
  Fri May 31 10:54:11 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
2
297
 
3
298
  * release.ga : 3.0.8
data/MANIFEST CHANGED
@@ -32,6 +32,7 @@ etc/mesg.d/c_builtin/en_US/messages.yml
32
32
  etc/mesg.d/c_builtin/ja_JP/messages.yml
33
33
  etc/mesg.d/core/en_US/messages.yml
34
34
  etc/mesg.d/core/ja_JP/messages.yml
35
+ features/code_check/E0008.feature
35
36
  features/code_check/E0013.feature
36
37
  features/code_check/W0001.feature
37
38
  features/code_check/W0002.feature
@@ -52,6 +53,8 @@ features/code_check/W0070.feature
52
53
  features/code_check/W0071.feature
53
54
  features/code_check/W0088.feature
54
55
  features/code_check/W0093.feature
56
+ features/code_check/W0097.feature
57
+ features/code_check/W0100.feature
55
58
  features/code_check/W0104.feature
56
59
  features/code_check/W0109.feature
57
60
  features/code_check/W0119.feature
@@ -194,7 +197,9 @@ features/code_check/W0422.feature
194
197
  features/code_check/W0425.feature
195
198
  features/code_check/W0431.feature
196
199
  features/code_check/W0432.feature
200
+ features/code_check/W0459.feature
197
201
  features/code_check/W0460.feature
202
+ features/code_check/W0461.feature
198
203
  features/code_check/W0477.feature
199
204
  features/code_check/W0478.feature
200
205
  features/code_check/W0479.feature
@@ -227,6 +232,8 @@ features/code_check/W0599.feature
227
232
  features/code_check/W0606.feature
228
233
  features/code_check/W0610.feature
229
234
  features/code_check/W0611.feature
235
+ features/code_check/W0612.feature
236
+ features/code_check/W0613.feature
230
237
  features/code_check/W0635.feature
231
238
  features/code_check/W0641.feature
232
239
  features/code_check/W0642.feature
@@ -252,6 +259,7 @@ features/code_check/W0698.feature
252
259
  features/code_check/W0699.feature
253
260
  features/code_check/W0700.feature
254
261
  features/code_check/W0703.feature
262
+ features/code_check/W0704.feature
255
263
  features/code_check/W0705.feature
256
264
  features/code_check/W0707.feature
257
265
  features/code_check/W0708.feature
@@ -321,6 +329,7 @@ features/code_check/W1040.feature
321
329
  features/code_check/W1041.feature
322
330
  features/code_check/W1046.feature
323
331
  features/code_check/W1047.feature
332
+ features/code_check/W1050.feature
324
333
  features/code_check/W1052.feature
325
334
  features/code_check/W1057.feature
326
335
  features/code_check/W1058.feature
data/NEWS CHANGED
@@ -21,6 +21,31 @@
21
21
 
22
22
  ++
23
23
 
24
+ === \AdLint 3.0.10 is released (2013-06-28)
25
+
26
+ ==== Changes since the 3.0.8 release
27
+
28
+ * Fix incomplete identifier to typedef name translation when the declaring
29
+ enumerator name is conflicting with the prior typedef name
30
+ * Add missing comment handling in the initial state of the preprocessing lexer
31
+ * Fix evaluation of the global constant variable definition in order not to
32
+ ignore value of the initializer
33
+ * Revise pointer dereferencing behavior to successfully dereference a pointer
34
+ only when the value of pointer variable is definite
35
+ * Improve heuristics of array subscript evaluation with indefinite subscript
36
+ * Fix controlling-expression deduction of iteration-statements in order to
37
+ adopt the ordinary expression when no control breaking condition is found in
38
+ the iteration body
39
+ * Remove unnecessary controlling expression evaluation at entering a
40
+ do-statement
41
+ * Fix value-domain thinning condition to thin domains discarded by a
42
+ break-statement in the iteration
43
+ * Fix bypassing inner-variable's value mutation in order to correctly propagate
44
+ mutation to the outer-variable
45
+
46
+ See the file {ChangeLog}[https://github.com/yanoh/adlint/blob/master/ChangeLog]
47
+ for more details.
48
+
24
49
  === \AdLint 3.0.8 is released (2013-05-31)
25
50
 
26
51
  ==== Changes since the 3.0.4 release
@@ -47,10 +72,6 @@
47
72
  to correctly warn about useless objects
48
73
  * Fix bad `##' operator evaluation in order to comply with the ISO C99 standard
49
74
 
50
- See the file
51
- {ChangeLog}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/ChangeLog]
52
- for more details.
53
-
54
75
  === \AdLint 3.0.4 is released (2013-04-12)
55
76
 
56
77
  ==== Changes since the 3.0.2 release
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "3.0.8"
52
+ version: "3.0.10"
53
53
 
54
54
  message_definition:
55
55
  W0001:
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "3.0.8"
52
+ version: "3.0.10"
53
53
 
54
54
  message_definition:
55
55
  W0001:
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "3.0.8"
52
+ version: "3.0.10"
53
53
 
54
54
  message_definition:
55
55
  X0001:
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "3.0.8"
52
+ version: "3.0.10"
53
53
 
54
54
  message_definition:
55
55
  X0001:
@@ -0,0 +1,20 @@
1
+ Feature: E0008
2
+
3
+ E0008 detects that a syntax error occured.
4
+
5
+ Scenario: statements in initializer
6
+ Given a target source named "fixture.c" with:
7
+ """
8
+ #ifdef FOOFOO
9
+ void foo1(void);
10
+ #endif
11
+
12
+ void foo2(void); /* OK not E0008 */
13
+
14
+ /**/\
15
+ #define FOO 1
16
+ """
17
+ When I successfully run `adlint fixture.c` on noarch
18
+ Then the output should exactly match with:
19
+ | mesg | line | column |
20
+ | W0118 | 5 | 6 |