adlint 2.4.10 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,3 +1,212 @@
1
+ Mon Oct 22 15:02:29 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
2
+
3
+ * release.ga : 2.6.0
4
+ - Fix W0609 and w0610 detections not to over-warn about explicit
5
+ controlling expressions of for-statements by adding workarounds for
6
+ the interpreter.
7
+ - Fix W0088 detection not to warn about controlling expression of
8
+ for-statement.
9
+ - Fix W0723 detection in order to correctly warn about signed `-'
10
+ expression.
11
+ - Fix bad parameter type convertibility check and bad type
12
+ convertibility check of pointer to arbitrary types to void-pointer.
13
+ - Revise string representation of typedefed type so that message and
14
+ metric show typedefed type name itself.
15
+ - Clarify W9003 message text by adding destination type name of the
16
+ implicit conversion.
17
+
18
+ Mon Oct 22 11:07:37 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
19
+
20
+ * release.rc : 2.5.3
21
+ - Clarify W9003 message text by adding destination type name of the
22
+ implicit conversion.
23
+
24
+ Mon Oct 22 10:59:09 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
25
+
26
+ * lib/adlint/exam/c_builtin/c_check.rb : Clarify W9003 message text by
27
+ adding destination type name of the implicit conversion.
28
+ * etc/mesg.d/c_builtin/ja_JP/messages.yml : Ditto.
29
+ * etc/mesg.d/c_builtin/en_US/messages.yml : Ditto.
30
+ * share/doc/users_guide_ja.texi : Ditto.
31
+ * share/doc/users_guide_en.texi : Ditto.
32
+
33
+ Fri Oct 19 19:33:19 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
34
+
35
+ * release.rc : 2.5.2
36
+ - Fix W0582, W0583, W0584 and W9003 detections to warn about constant
37
+ pointers except for NULL.
38
+
39
+ Fri Oct 19 19:26:31 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
40
+
41
+ * lib/adlint/c/conv.rb : Fix #untyped_pointer_conversion? predicate
42
+ method to support consideration about converting value.
43
+
44
+ * features/code_check/W0582.feature : Add W0582 specification to
45
+ reproduce a known bug.
46
+ * features/code_check/W0583.feature : Add W0583 specification to
47
+ reproduce a known bug.
48
+ * features/code_check/W0584.feature : Add W0584 specification to
49
+ reproduce a known bug.
50
+ * features/code_check/W9003.feature : Add W9003 specification to
51
+ reproduce a known bug.
52
+
53
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0582, W0583, W0584 and
54
+ W9003 detections to warn about constant pointers except for NULL.
55
+
56
+ Fri Oct 19 16:19:35 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
57
+
58
+ * release.rc : 2.5.1
59
+ - Fix W0584 detection not to warn when the constant argument is
60
+ convertible to the corresponding parameter.
61
+
62
+ Fri Oct 19 14:59:29 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
63
+
64
+ * features/code_check/W0584.feature: Add W0584 specification to
65
+ reproduce a known bug.
66
+
67
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0584 detection not to
68
+ warn when the constant argument is convertible to the corresponding
69
+ parameter.
70
+
71
+ Fri Oct 19 13:43:34 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
72
+
73
+ * release.rc : 2.5.0
74
+ - Fix W0582, W0583 and W0584 detections not to warn about unmatched
75
+ argument which is considerd as untyped constant pointer such as
76
+ NULL or 0.
77
+
78
+ Fri Oct 19 13:33:28 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
79
+
80
+ * features/code_check/W0582.feature : Add W0582 specification to
81
+ reproduce a known bug.
82
+ * MANIFEST : Ditto.
83
+
84
+ * features/code_check/W0583.feature : Add W0583 specification to
85
+ reproduce a known bug.
86
+
87
+ * features/code_check/W0584.feature : Add W0584 specification to
88
+ reproduce a known bug.
89
+ * MANIFEST : Ditto.
90
+
91
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0582, W0583 and W0584
92
+ detections not to warn about unmatched argument which is considerd as
93
+ untyped constant pointer such as NULL or 0.
94
+
95
+ Fri Oct 19 11:25:11 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
96
+
97
+ * lib/adlint/c/conv.rb : Move #untyped_pointer_conversion? predicate
98
+ method to C::Conversion module from CBuiltin::W9003 class.
99
+ * lib/adlint/exam/c_builtin/c_check.rb : Ditto.
100
+
101
+ Thu Oct 18 16:45:28 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
102
+
103
+ * release.rc : 2.4.17
104
+ - Fix W0088 detection not to warn about argument expressions in a
105
+ function-call-expression.
106
+
107
+ Thu Oct 18 16:35:48 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
108
+
109
+ * features/code_check/W0088.feature : Add W0088 specification to
110
+ reproduce a known bug.
111
+
112
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0088 detection not to
113
+ warn about argument expressions in a function-call-expression.
114
+
115
+ Thu Oct 18 15:17:34 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
116
+
117
+ * release.rc : 2.4.15
118
+ - Fix expression-statement evaluation in order to notify end of the
119
+ evaluation at all times.
120
+
121
+ Thu Oct 18 15:09:13 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
122
+
123
+ * lib/adlint/c/interp.rb : Fix expression-statement evaluation in order
124
+ to notify end of the evaluation at all times.
125
+
126
+ Thu Oct 18 14:07:33 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
127
+
128
+ * release.rc : 2.4.13
129
+ - Revise W9003 detection not to warn about implicit conversion of
130
+ untyped constant pointers such as NULL or 0.
131
+ - Fix W0088 detection not to skip checking when an outmost expression
132
+ has side-effect but it contains problematic logical-and-expression
133
+ or logical-or-expression.
134
+
135
+ Thu Oct 18 14:03:00 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
136
+
137
+ * features/code_check/W0088.feature : Add W0088 specification to
138
+ reproduce a known bug.
139
+
140
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0088 detection not to
141
+ skip checking when an outmost expression has side-effect but it
142
+ contains problematic logical-and-expression or logical-or-expression.
143
+
144
+ Thu Oct 18 13:19:22 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
145
+
146
+ * features/code_check/W9003.feature : Add W9003 specification of
147
+ implicit convertion of constant pointers.
148
+
149
+ * lib/adlint/exam/c_builtin/c_check.rb : Revise W9003 detection not to
150
+ warn about implicit conversion of untyped constant pointers such as
151
+ NULL or 0.
152
+
153
+ Wed Oct 17 18:28:03 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
154
+
155
+ * release.rc : 2.4.11
156
+ - Fix W0609 and w0610 detections not to over-warn about explicit
157
+ controlling expressions of for-statements by adding workarounds for
158
+ the interpreter.
159
+ - Fix W0088 detection not to warn about controlling expression of
160
+ for-statement.
161
+ - Fix W0723 detection in order to correctly warn about signed `-'
162
+ expression.
163
+ - Fix bad parameter type convertibility check and bad type
164
+ convertibility check of pointer to arbitrary types to void-pointer.
165
+ - Revise string representation of typedefed type so that message and
166
+ metric show typedefed type name itself.
167
+
168
+ Wed Oct 17 18:08:20 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
169
+
170
+ * lib/adlint/c/type.rb : Revise string representation of typedefed type
171
+ so that message and metric show typedefed type name itself.
172
+
173
+ Wed Oct 17 14:48:23 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
174
+
175
+ * features/code_check/W9003.feature : Add W9003 specification to
176
+ reproduce a known bug.
177
+
178
+ * lib/adlint/c/type.rb : Fix bad parameter type convertibility check
179
+ and bad type convertibility check of pointer to arbitrary types to
180
+ void-pointer.
181
+
182
+ Wed Oct 17 13:30:01 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
183
+
184
+ * features/code_check/W0722.feature : Add W0722 specification.
185
+ * MANIFEST : Ditto.
186
+
187
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0723 detection in order
188
+ to correctly warn about signed `-' expression.
189
+
190
+ Tue Oct 16 18:44:33 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
191
+
192
+ * features/code_check/W0088.feature : Add W0088 specification.
193
+ * MANIFEST : Ditto.
194
+
195
+ * lib/adlint/c/interp.rb : Add notification about expression-statement
196
+ evaluation.
197
+ * lib/adlint/c/mediator.rb : Ditto.
198
+
199
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0088 detection not to
200
+ warn about controlling expression of a for-statement.
201
+
202
+ Tue Oct 16 16:39:52 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
203
+
204
+ * lib/adlint/exam/c_builtin/c_check.rb : Fix W0609 and w0610 detections
205
+ not to over-warn about explicit controlling expressions of
206
+ for-statements by adding workarounds for the abstract interpreter.
207
+ * lib/adlint/c/syntax.rb : Ditto.
208
+ * lib/adlint/c/interp.rb : Ditto.
209
+
1
210
  Mon Oct 15 13:27:34 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
2
211
 
3
212
  * release.ga : 2.4.10
data/MANIFEST CHANGED
@@ -45,6 +45,7 @@ features/code_check/W0025.feature
45
45
  features/code_check/W0026.feature
46
46
  features/code_check/W0070.feature
47
47
  features/code_check/W0071.feature
48
+ features/code_check/W0088.feature
48
49
  features/code_check/W0093.feature
49
50
  features/code_check/W0104.feature
50
51
  features/code_check/W0109.feature
@@ -206,7 +207,9 @@ features/code_check/W0500.feature
206
207
  features/code_check/W0501.feature
207
208
  features/code_check/W0502.feature
208
209
  features/code_check/W0573.feature
210
+ features/code_check/W0582.feature
209
211
  features/code_check/W0583.feature
212
+ features/code_check/W0584.feature
210
213
  features/code_check/W0606.feature
211
214
  features/code_check/W0635.feature
212
215
  features/code_check/W0641.feature
@@ -243,6 +246,7 @@ features/code_check/W0716.feature
243
246
  features/code_check/W0717.feature
244
247
  features/code_check/W0718.feature
245
248
  features/code_check/W0719.feature
249
+ features/code_check/W0722.feature
246
250
  features/code_check/W0723.feature
247
251
  features/code_check/W0726.feature
248
252
  features/code_check/W0732.feature
data/NEWS CHANGED
@@ -21,6 +21,25 @@
21
21
 
22
22
  ++
23
23
 
24
+ === \AdLint 2.6.0 is released (2012-10-22)
25
+
26
+ ==== Changes since the 2.4.10 release
27
+
28
+ * Fix W0609 and w0610 detections not to over-warn about explicit controlling
29
+ expressions of for-statements by adding workarounds for the interpreter
30
+ * Fix W0088 detection not to warn about controlling expression of for-statement
31
+ * Fix W0723 detection in order to correctly warn about signed `-' expression
32
+ * Fix bad parameter type convertibility check and bad type convertibility check
33
+ of pointer to arbitrary types to void-pointer
34
+ * Revise string representation of typedefed type so that message and metric
35
+ show typedefed type name itself
36
+ * Clarify W9003 message text by adding destination type name of the implicit
37
+ conversion
38
+
39
+ See the file
40
+ {ChangeLog}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/ChangeLog]
41
+ for more details.
42
+
24
43
  === \AdLint 2.4.10 is released (2012-10-15)
25
44
 
26
45
  ==== Changes since the 2.4.6 release
@@ -35,10 +54,6 @@
35
54
  * Fix W0488, W0489, W0490, W0495, W0496, W0497, W0498, W0499, W0500, W0501 and
36
55
  W0502 detections to warn when a problematic expression is grouped entirely
37
56
 
38
- See the file
39
- {ChangeLog}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/ChangeLog]
40
- for more details.
41
-
42
57
  === \AdLint 2.4.6 is released (2012-10-09)
43
58
 
44
59
  ==== Changes since the 2.4.0 release
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "2.4.10"
52
+ version: "2.6.0"
53
53
 
54
54
  message_definition:
55
55
  W0001:
@@ -2991,7 +2991,7 @@ message_definition:
2991
2991
  W9003:
2992
2992
  classes:
2993
2993
  - "UNC:X99"
2994
- format: "An object typed `%s' is implicitly converted into an object of other type."
2994
+ format: "An object typed `%s' is implicitly converted into an object of type `%s'."
2995
2995
  C0001:
2996
2996
  classes:
2997
2997
  - "INF:X99"
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "2.4.10"
52
+ version: "2.6.0"
53
53
 
54
54
  message_definition:
55
55
  W0001:
@@ -2991,7 +2991,7 @@ message_definition:
2991
2991
  W9003:
2992
2992
  classes:
2993
2993
  - "UNC:X99"
2994
- format: "暗黙的に `%s' 型のオブジェクトが異なる型のオブジェクトに変換されています。"
2994
+ format: "暗黙的に `%s' 型のオブジェクトが `%s' 型のオブジェクトに変換されています。"
2995
2995
  C0001:
2996
2996
  classes:
2997
2997
  - "INF:X99"
@@ -49,7 +49,7 @@
49
49
  # - "ERR:X99"
50
50
  # format: "Your custom message for the error of E9999."
51
51
 
52
- version: "2.4.10"
52
+ version: "2.6.0"
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: "2.4.10"
52
+ version: "2.6.0"
53
53
 
54
54
  message_definition:
55
55
  X0001:
@@ -0,0 +1,153 @@
1
+ Feature: W0088
2
+
3
+ W0088 detects that right-hand-side of the logical-expression in a standalone
4
+ expression-statement has no side-effect.
5
+
6
+ Scenario: no side-effect in a standalone expression-statement
7
+ Given a target source named "fixture.c" with:
8
+ """
9
+ static int foo(int n)
10
+ {
11
+ int i = bar();
12
+ (i < n) && (i < 10); /* W0088 */
13
+ return i;
14
+ }
15
+ """
16
+ When I successfully run `adlint fixture.c` on noarch
17
+ Then the output should exactly match with:
18
+ | mesg | line | column |
19
+ | W1076 | 1 | 12 |
20
+ | W0109 | 3 | 16 |
21
+ | W0088 | 4 | 13 |
22
+ | W0100 | 3 | 9 |
23
+ | W0104 | 1 | 20 |
24
+ | W0629 | 1 | 12 |
25
+ | W0085 | 4 | 5 |
26
+ | W0628 | 1 | 12 |
27
+
28
+ Scenario: side-effect in a standalone expression-statement
29
+ Given a target source named "fixture.c" with:
30
+ """
31
+ static int foo(int n)
32
+ {
33
+ int i = bar();
34
+ (i < n) && (i++); /* OK */
35
+ return i;
36
+ }
37
+ """
38
+ When I successfully run `adlint fixture.c` on noarch
39
+ Then the output should exactly match with:
40
+ | mesg | line | column |
41
+ | W1076 | 1 | 12 |
42
+ | W0109 | 3 | 16 |
43
+ | W0104 | 1 | 20 |
44
+ | W0629 | 1 | 12 |
45
+ | W0508 | 4 | 13 |
46
+ | W0735 | 4 | 16 |
47
+ | W0512 | 4 | 18 |
48
+ | W0628 | 1 | 12 |
49
+
50
+ Scenario: no side-effect in controlling expression of for-statement
51
+ Given a target source named "fixture.c" with:
52
+ """
53
+ static int foo(int n)
54
+ {
55
+ int i, j = 0;
56
+ for (i = 0; (i < n) && (i < 10); i++) { /* OK */
57
+ j++;
58
+ }
59
+ return j;
60
+ }
61
+ """
62
+ When I successfully run `adlint fixture.c` on noarch
63
+ Then the output should exactly match with:
64
+ | mesg | line | column |
65
+ | W1076 | 1 | 12 |
66
+ | W0104 | 1 | 20 |
67
+ | W0629 | 1 | 12 |
68
+ | W0425 | 3 | 12 |
69
+ | W0628 | 1 | 12 |
70
+
71
+ Scenario: no side-effect in right-most expression of a standalone
72
+ expression-statement
73
+ Given a target source named "fixture.c" with:
74
+ """
75
+ extern int foo(int);
76
+ extern int bar(int);
77
+
78
+ static void baz(int i, int j, int k)
79
+ {
80
+ (i > 0) && foo(i) && bar(j) && k; /* W0088 */
81
+ }
82
+ """
83
+ When I successfully run `adlint fixture.c` on noarch
84
+ Then the output should exactly match with:
85
+ | mesg | line | column |
86
+ | W0118 | 1 | 12 |
87
+ | W0118 | 2 | 12 |
88
+ | W1076 | 4 | 13 |
89
+ | W0088 | 6 | 33 |
90
+ | W0104 | 4 | 21 |
91
+ | W0104 | 4 | 28 |
92
+ | W0104 | 4 | 35 |
93
+ | W0629 | 4 | 13 |
94
+ | W0488 | 6 | 5 |
95
+ | W0508 | 6 | 23 |
96
+ | W0508 | 6 | 13 |
97
+ | W0628 | 4 | 13 |
98
+
99
+ Scenario: no side-effect in right-most expression of an assignment-expression
100
+ Given a target source named "fixture.c" with:
101
+ """
102
+ extern int foo(int);
103
+ extern int bar(int);
104
+
105
+ static void baz(int i, int j, int k)
106
+ {
107
+ int l = 0;
108
+ l = (i > 0) && foo(i) && bar(j) && k; /* OK */
109
+ }
110
+ """
111
+ When I successfully run `adlint fixture.c` on noarch
112
+ Then the output should exactly match with:
113
+ | mesg | line | column |
114
+ | W0118 | 1 | 12 |
115
+ | W0118 | 2 | 12 |
116
+ | W1076 | 4 | 13 |
117
+ | W0104 | 4 | 21 |
118
+ | W0104 | 4 | 28 |
119
+ | W0104 | 4 | 35 |
120
+ | W0629 | 4 | 13 |
121
+ | W0488 | 7 | 5 |
122
+ | W0508 | 7 | 27 |
123
+ | W0508 | 7 | 17 |
124
+ | W0628 | 4 | 13 |
125
+
126
+ Scenario: no side-effect in argument expressions of function-call-expression
127
+ Given a target source named "fixture.c" with:
128
+ """
129
+ extern int foo(int);
130
+ extern int bar(int);
131
+ extern void baz(const char *, ...);
132
+
133
+ static void qux(int i, int j, int k)
134
+ {
135
+ baz("", (i > 0) && foo(i) && bar(i || j) && k); /* OK */
136
+ }
137
+ """
138
+ When I successfully run `adlint fixture.c` on noarch
139
+ Then the output should exactly match with:
140
+ | mesg | line | column |
141
+ | W0118 | 1 | 12 |
142
+ | W0118 | 2 | 12 |
143
+ | W0118 | 3 | 13 |
144
+ | W1076 | 5 | 13 |
145
+ | W0104 | 5 | 21 |
146
+ | W0104 | 5 | 28 |
147
+ | W0104 | 5 | 35 |
148
+ | W0629 | 5 | 13 |
149
+ | W0488 | 7 | 13 |
150
+ | W0947 | 7 | 9 |
151
+ | W0508 | 7 | 31 |
152
+ | W0508 | 7 | 21 |
153
+ | W0628 | 5 | 13 |