adlint 3.0.8 → 3.0.10

Sign up to get free protection for your applications and to get access to all the features.
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 |