adlint 1.10.0 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +197 -4
- data/MANIFEST +17 -0
- data/NEWS +23 -4
- data/etc/mesg.d/en_US/messages.yml +14 -1
- data/etc/mesg.d/ja_JP/messages.yml +14 -1
- data/features/message_detection/W0093.feature +87 -0
- data/features/message_detection/W0687.feature +25 -0
- data/features/message_detection/W0688.feature +63 -0
- data/features/message_detection/W0689.feature +46 -0
- data/features/message_detection/W0690.feature +35 -0
- data/features/message_detection/W0698.feature +3 -2
- data/features/message_detection/W0703.feature +1 -0
- data/features/message_detection/W0723.feature +34 -0
- data/features/message_detection/W0732.feature +158 -0
- data/features/message_detection/W0733.feature +158 -0
- data/features/message_detection/W0734.feature +322 -0
- data/features/message_detection/W0735.feature +322 -0
- data/features/message_detection/W1052.feature +66 -0
- data/features/message_detection/W9001.feature +33 -0
- data/features/message_detection/W9003.feature +131 -0
- data/lib/adlint/c/ctrlexpr.rb +51 -50
- data/lib/adlint/c/domain.rb +237 -223
- data/lib/adlint/c/expr.rb +6 -8
- data/lib/adlint/c/interp.rb +8 -11
- data/lib/adlint/c/message.rb +20 -0
- data/lib/adlint/c/message_shima.rb +63 -0
- data/lib/adlint/c/object.rb +5 -4
- data/lib/adlint/c/operator.rb +99 -0
- data/lib/adlint/c/parser.rb +2 -2
- data/lib/adlint/c/parser.y +2 -2
- data/lib/adlint/c/phase.rb +6 -1
- data/lib/adlint/c/syntax.rb +442 -30
- data/lib/adlint/c/type.rb +449 -363
- data/lib/adlint/c/value.rb +96 -25
- data/lib/adlint/c.rb +1 -0
- data/lib/adlint/prelude.rb +16 -18
- data/lib/adlint/version.rb +2 -2
- data/share/doc/developers_guide_ja.html +11 -5
- data/share/doc/developers_guide_ja.texi +9 -3
- data/share/doc/users_guide_en.html +697 -131
- data/share/doc/users_guide_en.texi +491 -41
- data/share/doc/users_guide_ja.html +709 -139
- data/share/doc/users_guide_ja.texi +499 -45
- data/spec/adlint/c/ctrlexpr_spec.rb +168 -0
- data/spec/adlint/c/domain_spec.rb +835 -0
- data/spec/adlint/c/operator_spec.rb +406 -0
- data/spec/adlint/c/syntax_spec.rb +717 -0
- data/spec/adlint/c/type_spec.rb +55 -30
- metadata +19 -2
data/ChangeLog
CHANGED
@@ -1,3 +1,196 @@
|
|
1
|
+
Wed Jun 20 13:36:49 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
2
|
+
|
3
|
+
* release.ga : 1.12.0
|
4
|
+
- Add W0732 detection.
|
5
|
+
- Add W0733 detection.
|
6
|
+
- Add W0734 detection.
|
7
|
+
- Add W0735 detection.
|
8
|
+
- Add W9003 detection.
|
9
|
+
- Revise the value domain narrowing in order not to over-narrow and
|
10
|
+
under-narrow a value domain of the controlling variable.
|
11
|
+
- Fix bad multiplication logic in order to detect W0723 and W1052
|
12
|
+
correctly.
|
13
|
+
- Add unit specifications of domain of variables' value.
|
14
|
+
- Add unit specifications of syntax tree of the C language.
|
15
|
+
- Add W0093, W0687, W0688, W0689, W0690, W0732, W0733, W0734, W0735,
|
16
|
+
W1052, W9001 and W9003 functional specifications.
|
17
|
+
- Add W1066, W1067, W1068, W1069, W1070, W1071, W1072, W1073, W1074,
|
18
|
+
W1075, W1076, W1077 and W9003 message definitions.
|
19
|
+
|
20
|
+
Wed Jun 20 10:49:52 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
21
|
+
|
22
|
+
* release.rc : 1.11.2
|
23
|
+
- Revise W9003 specification not to over-warn about natural
|
24
|
+
conversions.
|
25
|
+
|
26
|
+
Wed Jun 20 10:46:17 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
27
|
+
|
28
|
+
* lib/adlint/c/message.rb : Revise W9003 specification not to
|
29
|
+
over-warn about natural conversions.
|
30
|
+
|
31
|
+
Tue Jun 19 17:37:04 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
32
|
+
|
33
|
+
* release.rc : 1.11.1
|
34
|
+
- Add W9003 detection.
|
35
|
+
|
36
|
+
Tue Jun 19 16:33:54 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
37
|
+
|
38
|
+
* features/message_detection/W9003.feature : Add W9003 functional
|
39
|
+
specification.
|
40
|
+
* MANIFEST : Ditto.
|
41
|
+
|
42
|
+
* lib/adlint/c/type.rb : Add Type#standard? predicate method and
|
43
|
+
insert StandardFloatingType in FloatingType class hierarchy.
|
44
|
+
|
45
|
+
* lib/adlint/c/type.rb : Revise integer-promotion rule of any
|
46
|
+
enumerated types in order not to over-warn W9003 about enum-enum
|
47
|
+
expressions.
|
48
|
+
|
49
|
+
* lib/adlint/c/message.rb : Add W9003 detection.
|
50
|
+
* lib/adlint/c/phase.rb : Ditto.
|
51
|
+
|
52
|
+
Tue Jun 19 14:48:20 2012 Rie Shima <rkakuuchi@users.sourceforge.net>
|
53
|
+
|
54
|
+
* share/doc/users_guide_ja.texi : Update descriptions about W0732,
|
55
|
+
W0733, W0734 and W0735 messages.
|
56
|
+
* share/doc/users_guide_en.texi : Ditto.
|
57
|
+
|
58
|
+
* share/doc/users_guide_ja.texi : Add W1066, W1067, W1068, W1069,
|
59
|
+
W1070, W1071, W1072, W1073, W1074, W1075, W1076, W1077 and W9003
|
60
|
+
message definitions.
|
61
|
+
* share/doc/users_guide_en.texi : Ditto.
|
62
|
+
|
63
|
+
Fri Jun 15 17:25:51 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
64
|
+
|
65
|
+
* release.rc : 1.11.0
|
66
|
+
- This is the initial release candidate for 1.12.0 GA release.
|
67
|
+
- Add W0732 detection.
|
68
|
+
- Add W0733 detection.
|
69
|
+
- Add W0734 detection.
|
70
|
+
- Add W0735 detection.
|
71
|
+
- Revise the value domain narrowing in order not to over-narrow and
|
72
|
+
under-narrow a value domain of the controlling variable.
|
73
|
+
- Fix bad multiplication logic in order to detect W0723 and W1052
|
74
|
+
correctly.
|
75
|
+
- Add unit specifications of domain of variables' value.
|
76
|
+
- Add unit specifications of syntax tree of the C language.
|
77
|
+
- Add W0093, W0687, W0688, W0689, W0690, W0732, W0733, W0734, W0735,
|
78
|
+
W1052 and W9001 functional specifications.
|
79
|
+
- Add W1066, W1067, W1068, W1069, W1070, W1071, W1072, W1073, W1074,
|
80
|
+
W1075, W1076, W1077 and W9003 message definitions.
|
81
|
+
|
82
|
+
Wed Jun 13 18:20:47 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
83
|
+
|
84
|
+
* features/message_detection/W0723.feature : Add W0723 functional
|
85
|
+
specification to reproduce a known bug.
|
86
|
+
* features/message_detection/W1052.feature : Add W1052 functional
|
87
|
+
specification to reproduce a known bug.
|
88
|
+
* MANIFEST : Ditto.
|
89
|
+
|
90
|
+
* lib/adlint/c/domain.rb : Fix bad multiplication logic of
|
91
|
+
IntersectionValueDomain in order to detect W0723 and W1052
|
92
|
+
correctly.
|
93
|
+
|
94
|
+
Wed Jun 13 15:57:32 2012 Rie Shima <rkakuuchi@users.sourceforge.net>
|
95
|
+
|
96
|
+
* lib/adlint/c/syntax.rb : Add predicate methods to check whether an
|
97
|
+
expression is #arithmetic? or #bitwise?.
|
98
|
+
* spec/adlint/c/syntax_spec.rb : Add unit specifications of syntax
|
99
|
+
tree of the C language.
|
100
|
+
* MANIFEST : Ditto.
|
101
|
+
|
102
|
+
* lib/adlint/c/message_shima.rb : Add W0732, W0733, W0734 and W0735
|
103
|
+
detections.
|
104
|
+
* lib/adlint/c/phase.rb : Ditto.
|
105
|
+
|
106
|
+
* features/message_detection/W0732.feature : Add W0732 functional
|
107
|
+
specification.
|
108
|
+
* features/message_detection/W0733.feature : Add W0733 functional
|
109
|
+
specification.
|
110
|
+
* features/message_detection/W0734.feature : Add W0734 functional
|
111
|
+
specification.
|
112
|
+
* features/message_detection/W0735.feature : Add W0735 functional
|
113
|
+
specification.
|
114
|
+
* MANIFEST : Add W0732, W0733, W0735 and W0690 functional
|
115
|
+
specifications.
|
116
|
+
|
117
|
+
Wed Jun 13 11:59:36 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
118
|
+
|
119
|
+
* lib/adlint/c/ctrlexpr.rb : Revise the value domain narrowing in
|
120
|
+
order not to under-narrow a value domain of the controlling variable.
|
121
|
+
* lib/adlint/c/value.rb : Ditto.
|
122
|
+
|
123
|
+
* features/message_detection/W0093.feature : Add W0093 functional
|
124
|
+
specification to reproduce a known bug.
|
125
|
+
* MANIFEST : Ditto.
|
126
|
+
|
127
|
+
Tue Jun 12 18:41:54 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
128
|
+
|
129
|
+
* spec/adlint/c/ctrlexpr_spec.rb : Add unit specifications of
|
130
|
+
controlling expression of selection-statements and
|
131
|
+
iteration-statements.
|
132
|
+
|
133
|
+
Mon Jun 11 17:49:11 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
134
|
+
|
135
|
+
* lib/adlint/prelude.rb : Add __NOTREACHED__ function in order to ease
|
136
|
+
debugging.
|
137
|
+
* lib/adlint/c/expr.rb : Ditto.
|
138
|
+
* lib/adlint/c/ctrlexpr.rb : Ditto.
|
139
|
+
* lib/adlint/c/domain.rb : Ditto.
|
140
|
+
* lib/adlint/c.rb : Ditto.
|
141
|
+
|
142
|
+
* lib/adlint/c/operator.rb : Add Operator and ComparisonOperator to
|
143
|
+
represent a comparison operator symbol directly and move
|
144
|
+
responsibilities to Operator from ::Symbol.
|
145
|
+
* spec/adlint/c/operator_spec.rb : Ditto.
|
146
|
+
* spec/adlint/c/domain_spec.rb : Ditto.
|
147
|
+
* lib/adlint/c/interp.rb : Ditto.
|
148
|
+
* lib/adlint/c/ctrlexpr.rb : Ditto.
|
149
|
+
* lib/adlint/c/type.rb : Ditto.
|
150
|
+
* lib/adlint/c/object.rb : Ditto.
|
151
|
+
* lib/adlint/c/value.rb : Ditto.
|
152
|
+
* lib/adlint/c/domain.rb : Ditto.
|
153
|
+
* lib/adlint/prelude.rb : Ditto.
|
154
|
+
* MANIFEST : Ditto.
|
155
|
+
|
156
|
+
Fri Jun 8 14:43:14 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
157
|
+
|
158
|
+
* lib/adlint/c/value.rb : Add Value#definite? to check whether the
|
159
|
+
value is definite.
|
160
|
+
|
161
|
+
* features/message_detection/W9001.feature : Add W9001 functional
|
162
|
+
specification to reproduce a known bug.
|
163
|
+
* MANIFEST : Ditto.
|
164
|
+
|
165
|
+
* lib/adlint/c/ctrlexpr.rb : Revise the value domain narrowing in
|
166
|
+
order not to over-narrow a value domain of the controlling variable.
|
167
|
+
|
168
|
+
Thu Jun 7 16:30:23 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
169
|
+
|
170
|
+
* spec/adlint/c/domain_spec.rb : Add unit specifications of domain of
|
171
|
+
variables' value.
|
172
|
+
* MANIFEST : Ditto.
|
173
|
+
|
174
|
+
Thu Jun 7 11:54:09 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
175
|
+
|
176
|
+
* etc/mesg.d/ja_JP/messages.yml : Add W1066, W1067, W1068, W1069,
|
177
|
+
W1070, W1071, W1072, W1073, W1074, W1075, W1076, W1077 and W9003
|
178
|
+
message definitions.
|
179
|
+
* etc/mesg.d/en_US/messages.yml : Ditto.
|
180
|
+
|
181
|
+
Wed Jun 6 11:27:32 2012 Rie Shima <rkakuuchi@users.sourceforge.net>
|
182
|
+
|
183
|
+
* features/message_detection/W0687.feature : Add W0687 functional
|
184
|
+
specification.
|
185
|
+
* features/message_detection/W0688.feature : Add W0688 functional
|
186
|
+
specification.
|
187
|
+
* features/message_detection/W0689.feature : Add W0689 functional
|
188
|
+
specification.
|
189
|
+
* features/message_detection/W0690.feature : Add W0690 functional
|
190
|
+
specification.
|
191
|
+
* MANIFEST : Add W0687, W0688, W0689 and W0690 functional
|
192
|
+
specifications.
|
193
|
+
|
1
194
|
Wed Jun 6 10:19:58 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
2
195
|
|
3
196
|
* release.ga : 1.10.0
|
@@ -15,7 +208,7 @@ Wed Jun 6 10:19:58 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
|
15
208
|
and definition without storage-class-specifier.
|
16
209
|
- Fix lack of sequence-point notification of controlling
|
17
210
|
expressions.
|
18
|
-
- Add unit
|
211
|
+
- Add unit specifications of C type models.
|
19
212
|
- Add W0001, W0002, W0003, W0007, W0010, W0013, W0109, W0583, W0606,
|
20
213
|
W0698, W0699, W0703, W0716, W0717, W0718, W0723 and W1031
|
21
214
|
functional specifications.
|
@@ -125,7 +318,7 @@ Thu May 31 09:43:09 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
|
125
318
|
expressions.
|
126
319
|
- Fix W0582, W0583 and W0584 detections in order to consider type
|
127
320
|
convertibility correctly.
|
128
|
-
- Add unit
|
321
|
+
- Add unit specifications of C type models.
|
129
322
|
- Add W0001, W0002, W0003, W0007, W0010, W0013, W0583, W0716, W0717
|
130
323
|
and W0718 functional specifications.
|
131
324
|
|
@@ -153,7 +346,7 @@ Wed May 30 19:18:11 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
|
153
346
|
* lib/adlint/c/type.rb : Add Type#convertible?(to_type) method to
|
154
347
|
check whether a type is implicitly convertible to another type.
|
155
348
|
|
156
|
-
* spec/adlint/c/type_spec.rb : Add unit
|
349
|
+
* spec/adlint/c/type_spec.rb : Add more unit specifications of C type
|
157
350
|
models.
|
158
351
|
|
159
352
|
Wed May 30 15:38:00 2012 Rie Shima <rkakuuchi@users.sourceforge.net>
|
@@ -250,7 +443,7 @@ Tue May 22 12:12:08 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
|
250
443
|
|
251
444
|
Mon May 21 16:33:19 2012 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
252
445
|
|
253
|
-
* spec/adlint/c/type_spec.rb : Add unit
|
446
|
+
* spec/adlint/c/type_spec.rb : Add unit specifications of C type
|
254
447
|
models.
|
255
448
|
* MANIFEST : Ditto.
|
256
449
|
|
data/MANIFEST
CHANGED
@@ -34,9 +34,14 @@ features/message_detection/W0003.feature
|
|
34
34
|
features/message_detection/W0007.feature
|
35
35
|
features/message_detection/W0010.feature
|
36
36
|
features/message_detection/W0013.feature
|
37
|
+
features/message_detection/W0093.feature
|
37
38
|
features/message_detection/W0109.feature
|
38
39
|
features/message_detection/W0583.feature
|
39
40
|
features/message_detection/W0606.feature
|
41
|
+
features/message_detection/W0687.feature
|
42
|
+
features/message_detection/W0688.feature
|
43
|
+
features/message_detection/W0689.feature
|
44
|
+
features/message_detection/W0690.feature
|
40
45
|
features/message_detection/W0698.feature
|
41
46
|
features/message_detection/W0699.feature
|
42
47
|
features/message_detection/W0703.feature
|
@@ -44,7 +49,14 @@ features/message_detection/W0716.feature
|
|
44
49
|
features/message_detection/W0717.feature
|
45
50
|
features/message_detection/W0718.feature
|
46
51
|
features/message_detection/W0723.feature
|
52
|
+
features/message_detection/W0732.feature
|
53
|
+
features/message_detection/W0733.feature
|
54
|
+
features/message_detection/W0734.feature
|
55
|
+
features/message_detection/W0735.feature
|
47
56
|
features/message_detection/W1031.feature
|
57
|
+
features/message_detection/W1052.feature
|
58
|
+
features/message_detection/W9001.feature
|
59
|
+
features/message_detection/W9003.feature
|
48
60
|
features/step_definitions/message_detection_steps.rb
|
49
61
|
features/support/env.rb
|
50
62
|
lib/adlint.rb
|
@@ -68,6 +80,7 @@ lib/adlint/c/message.rb
|
|
68
80
|
lib/adlint/c/message_shima.rb
|
69
81
|
lib/adlint/c/metric.rb
|
70
82
|
lib/adlint/c/object.rb
|
83
|
+
lib/adlint/c/operator.rb
|
71
84
|
lib/adlint/c/option.rb
|
72
85
|
lib/adlint/c/parser.y
|
73
86
|
lib/adlint/c/parser.rb
|
@@ -504,6 +517,10 @@ share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h
|
|
504
517
|
share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h
|
505
518
|
share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml
|
506
519
|
spec/spec_helper.rb
|
520
|
+
spec/adlint/c/ctrlexpr_spec.rb
|
521
|
+
spec/adlint/c/domain_spec.rb
|
522
|
+
spec/adlint/c/operator_spec.rb
|
523
|
+
spec/adlint/c/syntax_spec.rb
|
507
524
|
spec/adlint/c/type_spec.rb
|
508
525
|
spec/conf.d/empty_cinit.h
|
509
526
|
spec/conf.d/empty_pinit.h
|
data/NEWS
CHANGED
@@ -21,6 +21,29 @@
|
|
21
21
|
|
22
22
|
++
|
23
23
|
|
24
|
+
=== \AdLint 1.12.0 is released (2012-06-20)
|
25
|
+
|
26
|
+
==== Changes since the 1.10.0 release
|
27
|
+
|
28
|
+
* Add W0732 detection
|
29
|
+
* Add W0733 detection
|
30
|
+
* Add W0734 detection
|
31
|
+
* Add W0735 detection
|
32
|
+
* Add W9003 detection
|
33
|
+
* Revise the value domain narrowing in order not to over-narrow and
|
34
|
+
under-narrow a value domain of the controlling variable
|
35
|
+
* Fix bad multiplication logic in order to detect W0723 and W1052 correctly
|
36
|
+
* Add unit specifications of domain of variables' value
|
37
|
+
* Add unit specifications of syntax tree of the C language
|
38
|
+
* Add W0093, W0687, W0688, W0689, W0690, W0732, W0733, W0734, W0735, W1052,
|
39
|
+
W9001 and W9003 functional specifications
|
40
|
+
* Add W1066, W1067, W1068, W1069, W1070, W1071, W1072, W1073, W1074, W1075,
|
41
|
+
W1076, W1077 and W9003 message definitions
|
42
|
+
|
43
|
+
See the file
|
44
|
+
{ChangeLog}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/ChangeLog]
|
45
|
+
for more details.
|
46
|
+
|
24
47
|
=== \AdLint 1.10.0 is released (2012-06-06)
|
25
48
|
|
26
49
|
==== Changes since the 1.8.10 release
|
@@ -41,10 +64,6 @@
|
|
41
64
|
* Add W0001, W0002, W0003, W0007, W0010, W0013, W0109, W0583, W0606, W0698,
|
42
65
|
W0699, W0703, W0716, W0717, W0718, W0723 and W1031 functional specifications
|
43
66
|
|
44
|
-
See the file
|
45
|
-
{ChangeLog}[http://adlint.sourceforge.net/pmwiki/upload.d/Main/ChangeLog]
|
46
|
-
for more details.
|
47
|
-
|
48
67
|
=== \AdLint 1.8.10 is released (2012-05-18)
|
49
68
|
|
50
69
|
==== Changes since the 1.8.2 release
|
@@ -36,7 +36,7 @@
|
|
36
36
|
# X9999: "Your custom message for the fatal error of #9999."
|
37
37
|
# E9999: "Your custom message for the error of #9999."
|
38
38
|
|
39
|
-
version: "1.
|
39
|
+
version: "1.12.0"
|
40
40
|
|
41
41
|
message_definition:
|
42
42
|
X0001: "An unknown exception `%s' is found."
|
@@ -779,6 +779,19 @@ message_definition:
|
|
779
779
|
W1063: "The return value returned from enumeration type function to non constant expression."
|
780
780
|
W1064: "A integer constant is used in switch statement where case label is enumeration type."
|
781
781
|
W1065: "A value of different enumeration type is used in switch statement where case label is an enumeration type."
|
782
|
+
W1066: "A value of the `float' typed compound expression is explicitly converted into a `double' value."
|
783
|
+
W1067: "A value of the `float' typed compound expression is explicitly converted into a `long double' value."
|
784
|
+
W1068: "A value of the `double' typed compound expression is explicitly converted into a `long double' value."
|
785
|
+
W1069: "No trailing `else' clause is found in this `if-else-if' statements chain."
|
786
|
+
W1070: "This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths."
|
787
|
+
W1071: "Function `%s' has multiple termination points."
|
788
|
+
W1072: "A `goto' statement is found."
|
789
|
+
W1073: "A return value of function `%s' is not used."
|
790
|
+
W1074: "Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually."
|
791
|
+
W1075: "This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage."
|
792
|
+
W1076: "`%s' is defined as internal-linkage, but it has no forward declaration."
|
793
|
+
W1077: "Declaring array object without a size."
|
782
794
|
W9001: "This statement doesn't reach the control."
|
783
795
|
W9002: "There is no line feed character at the end of file."
|
796
|
+
W9003: "An object typed `%s' is implicitly converted into an object of other type."
|
784
797
|
C0001: "A warning is detected in external identifier name `%s'."
|
@@ -36,7 +36,7 @@
|
|
36
36
|
# X9999: "Your custom message for the fatal error of #9999."
|
37
37
|
# E9999: "Your custom message for the error of #9999."
|
38
38
|
|
39
|
-
version: "1.
|
39
|
+
version: "1.12.0"
|
40
40
|
|
41
41
|
message_definition:
|
42
42
|
X0001: "不明な例外条件 `%s' を検出しました。"
|
@@ -779,6 +779,19 @@ message_definition:
|
|
779
779
|
W1063: "戻り値が列挙型の関数から、非定数式が返されています。"
|
780
780
|
W1064: "列挙型の制御式が使われている switch 文で、整数定数が case ラベルに使われています。"
|
781
781
|
W1065: "列挙型の制御式が使われている switch 文で、異なる列挙型の値が case ラベルに使われています。"
|
782
|
+
W1066: "明示的に float 型の複合式の値を double 型に変換しています。"
|
783
|
+
W1067: "明示的に float 型の複合式の値を long double 型に変換しています。"
|
784
|
+
W1068: "明示的に double 型の複合式の値を long double 型に変換しています。"
|
785
|
+
W1069: "この `if-else-if' 文には、末尾の `else' 節がありません。"
|
786
|
+
W1070: "この `switch' 文には実行経路が 2 つしか無いため、`if-else' 文に変換可能です。"
|
787
|
+
W1071: "関数 `%s' には複数の終了点があります。"
|
788
|
+
W1072: "`goto' 文を使用しています。"
|
789
|
+
W1073: "関数 `%s' の戻り値を破棄しています。"
|
790
|
+
W1074: "`sizeof' 演算子のオペランドは実行されないため、副作用が発生しません。"
|
791
|
+
W1075: "`%s' は以前に内部結合として宣言されていますが、この宣言には `static' がありません。"
|
792
|
+
W1076: "関数 `%s' は内部結合を持ちますが、事前に内部結合として宣言していません。"
|
793
|
+
W1077: "サイズが省略された配列を宣言しています。"
|
782
794
|
W9001: "この文には制御が到達しません。"
|
783
795
|
W9002: "ファイルの末尾に改行文字がありません。"
|
796
|
+
W9003: "暗黙的に `%s' 型のオブジェクトが異なる型のオブジェクトに変換されています。"
|
784
797
|
C0001: "この外部識別名 `%s' で警告を検知しました。"
|
@@ -0,0 +1,87 @@
|
|
1
|
+
Feature: W0093
|
2
|
+
|
3
|
+
W0093 detects that a division-by-zero may occur.
|
4
|
+
|
5
|
+
Scenario: narrowing denominator variable by an iteration controlling
|
6
|
+
variable which has same value domain of the denominator.
|
7
|
+
Given a target source named "W0093.c" with:
|
8
|
+
"""
|
9
|
+
static void foo(void)
|
10
|
+
{
|
11
|
+
int k;
|
12
|
+
|
13
|
+
for (int i = 0; i < 10; i++) {
|
14
|
+
for (int j = 0; j < 10; j++) {
|
15
|
+
if (i == j) {
|
16
|
+
k = j / i; /* W0093 */
|
17
|
+
}
|
18
|
+
else {
|
19
|
+
k = j / i; /* W0093 */
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
"""
|
25
|
+
When I successfully run `adlint W0093.c` on noarch
|
26
|
+
Then the output should exactly match with:
|
27
|
+
| mesg | line | column |
|
28
|
+
| W0093 | 8 | 23 |
|
29
|
+
| W0093 | 11 | 23 |
|
30
|
+
| W0629 | 1 | 13 |
|
31
|
+
| W0628 | 1 | 13 |
|
32
|
+
|
33
|
+
Scenario: narrowing denominator variable by an iteration controlling
|
34
|
+
variable which has narrower value domain than the denominator.
|
35
|
+
Given a target source named "W0093.c" with:
|
36
|
+
"""
|
37
|
+
static void foo(void)
|
38
|
+
{
|
39
|
+
int k;
|
40
|
+
|
41
|
+
for (int i = 0; i < 10; i++) {
|
42
|
+
for (int j = 3; j < 5; j++) {
|
43
|
+
if (i == j) {
|
44
|
+
k = j / i; /* OK */
|
45
|
+
}
|
46
|
+
else {
|
47
|
+
k = j / i; /* W0093 */
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
"""
|
53
|
+
When I successfully run `adlint W0093.c` on noarch
|
54
|
+
Then the output should exactly match with:
|
55
|
+
| mesg | line | column |
|
56
|
+
| W0093 | 11 | 23 |
|
57
|
+
| W0629 | 1 | 13 |
|
58
|
+
| W0628 | 1 | 13 |
|
59
|
+
|
60
|
+
Scenario: narrowing denominator variable by an iteration controlling
|
61
|
+
variable which has narrower value domain contains zero.
|
62
|
+
Given a target source named "W0093.c" with:
|
63
|
+
"""
|
64
|
+
static void foo(void)
|
65
|
+
{
|
66
|
+
int k;
|
67
|
+
|
68
|
+
for (int i = -5; i < 5; i++) {
|
69
|
+
for (int j = -1; j < 2; j++) {
|
70
|
+
if (i == j) {
|
71
|
+
k = j / i; /* W0093 */
|
72
|
+
}
|
73
|
+
else {
|
74
|
+
k = j / i; /* OK */
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
"""
|
80
|
+
When I successfully run `adlint W0093.c` on noarch
|
81
|
+
Then the output should exactly match with:
|
82
|
+
| mesg | line | column |
|
83
|
+
| W0093 | 8 | 23 |
|
84
|
+
| W0629 | 1 | 13 |
|
85
|
+
| W0628 | 1 | 13 |
|
86
|
+
|
87
|
+
# vim:ts=2:sw=2:sts=2:et:
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: W0687
|
2
|
+
|
3
|
+
W0687 detects that #undef directive deletes the `defined' operator.
|
4
|
+
|
5
|
+
Scenario: #undef directive with the `defined' operator
|
6
|
+
Given a target source named "W0687.c" with:
|
7
|
+
"""
|
8
|
+
#undef defined /* W0687 */
|
9
|
+
"""
|
10
|
+
When I successfully run `adlint W0687.c` on noarch
|
11
|
+
Then the output should exactly match with:
|
12
|
+
| mesg | line | column |
|
13
|
+
| W0687 | 1 | 8 |
|
14
|
+
|
15
|
+
Scenario: #undef directive with ordinary macro name
|
16
|
+
Given a target source named "W0687.c" with:
|
17
|
+
"""
|
18
|
+
#define MACRO (0)
|
19
|
+
#undef MACRO /* OK */
|
20
|
+
"""
|
21
|
+
When I successfully run `adlint W0687.c` on noarch
|
22
|
+
Then the output should exactly match with:
|
23
|
+
| mesg | line | column |
|
24
|
+
|
25
|
+
# vim:ts=2:sw=2:sts=2:et:
|
@@ -0,0 +1,63 @@
|
|
1
|
+
Feature: W0688
|
2
|
+
|
3
|
+
W0688 detects that the line number of #line directive is less than 1 or
|
4
|
+
greater than 32767.
|
5
|
+
|
6
|
+
Scenario: zero as the line number
|
7
|
+
Given a target source named "W0688.c" with:
|
8
|
+
"""
|
9
|
+
#line 0 "test.c" /* W0688 */
|
10
|
+
"""
|
11
|
+
When I successfully run `adlint W0688.c` on noarch
|
12
|
+
Then the output should exactly match with:
|
13
|
+
| mesg | line | column |
|
14
|
+
| W0688 | 1 | 7 |
|
15
|
+
|
16
|
+
Scenario: valid min line number
|
17
|
+
Given a target source named "W0688.c" with:
|
18
|
+
"""
|
19
|
+
#line 1 "test.c" /* OK */
|
20
|
+
"""
|
21
|
+
When I successfully run `adlint W0688.c` on noarch
|
22
|
+
Then the output should exactly match with:
|
23
|
+
| mesg | line | column |
|
24
|
+
|
25
|
+
Scenario: valid line number
|
26
|
+
Given a target source named "W0688.c" with:
|
27
|
+
"""
|
28
|
+
#line 1024 "test.c" /* OK */
|
29
|
+
"""
|
30
|
+
When I successfully run `adlint W0688.c` on noarch
|
31
|
+
Then the output should exactly match with:
|
32
|
+
| mesg | line | column |
|
33
|
+
|
34
|
+
Scenario: valid max line number
|
35
|
+
Given a target source named "W0688.c" with:
|
36
|
+
"""
|
37
|
+
#line 32767 "test.c" /* OK */
|
38
|
+
"""
|
39
|
+
When I successfully run `adlint W0688.c` on noarch
|
40
|
+
Then the output should exactly match with:
|
41
|
+
| mesg | line | column |
|
42
|
+
|
43
|
+
Scenario: 32768 as the line number
|
44
|
+
Given a target source named "W0688.c" with:
|
45
|
+
"""
|
46
|
+
#line 32768 "test.c" /* W0688 */
|
47
|
+
"""
|
48
|
+
When I successfully run `adlint W0688.c` on noarch
|
49
|
+
Then the output should exactly match with:
|
50
|
+
| mesg | line | column |
|
51
|
+
| W0688 | 1 | 7 |
|
52
|
+
|
53
|
+
Scenario: too big as the line number
|
54
|
+
Given a target source named "W0688.c" with:
|
55
|
+
"""
|
56
|
+
#line 4294967296 "test.c" /* W0688 */
|
57
|
+
"""
|
58
|
+
When I successfully run `adlint W0688.c` on noarch
|
59
|
+
Then the output should exactly match with:
|
60
|
+
| mesg | line | column |
|
61
|
+
| W0688 | 1 | 7 |
|
62
|
+
|
63
|
+
# vim:ts=2:sw=2:sts=2:et:
|
@@ -0,0 +1,46 @@
|
|
1
|
+
Feature: W0689
|
2
|
+
|
3
|
+
W0689 detects that the syntax of #line directive is illformed.
|
4
|
+
|
5
|
+
Scenario: line number as an arithmetic-expression and no file name
|
6
|
+
Given a target source named "W0689.c" with:
|
7
|
+
"""
|
8
|
+
#line 35 * 100 /* W0689 */
|
9
|
+
"""
|
10
|
+
When I successfully run `adlint W0689.c` on noarch
|
11
|
+
Then the output should exactly match with:
|
12
|
+
| mesg | line | column |
|
13
|
+
| W0689 | 1 | 10 |
|
14
|
+
|
15
|
+
Scenario: line number as an arithmetic-expression and valid file name
|
16
|
+
Given a target source named "W0689.c" with:
|
17
|
+
"""
|
18
|
+
#line 35 * 100 "test.c" /* W0689 */
|
19
|
+
"""
|
20
|
+
When I successfully run `adlint W0689.c` on noarch
|
21
|
+
Then the output should exactly match with:
|
22
|
+
| mesg | line | column |
|
23
|
+
| W0689 | 1 | 10 |
|
24
|
+
|
25
|
+
Scenario: valid line number and invalid file name
|
26
|
+
Given a target source named "W0689.c" with:
|
27
|
+
"""
|
28
|
+
#line 35 L"******.c" /* W0689 */
|
29
|
+
"""
|
30
|
+
When I successfully run `adlint W0689.c` on noarch
|
31
|
+
Then the output should exactly match with:
|
32
|
+
| mesg | line | column |
|
33
|
+
| W0689 | 1 | 10 |
|
34
|
+
|
35
|
+
Scenario: inverted arguments
|
36
|
+
Given a target source named "W0689.c" with:
|
37
|
+
"""
|
38
|
+
#line __FILE__ 35 /* W0689 */
|
39
|
+
"""
|
40
|
+
When I successfully run `adlint W0689.c` on noarch
|
41
|
+
Then the output should exactly match with:
|
42
|
+
| mesg | line | column |
|
43
|
+
| W0689 | 1 | 16 |
|
44
|
+
| W0690 | 1 | 7 |
|
45
|
+
|
46
|
+
# vim:ts=2:sw=2:sts=2:et:
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Feature: W0690
|
2
|
+
|
3
|
+
W0690 detects that no line number is in the #line directive.
|
4
|
+
|
5
|
+
Scenario: an identifier as arguments
|
6
|
+
Given a target source named "W0690.c" with:
|
7
|
+
"""
|
8
|
+
#line LINE1000 /* W0690 */
|
9
|
+
"""
|
10
|
+
When I successfully run `adlint W0690.c` on noarch
|
11
|
+
Then the output should exactly match with:
|
12
|
+
| mesg | line | column |
|
13
|
+
| W0690 | 1 | 7 |
|
14
|
+
|
15
|
+
Scenario: inverted arguments
|
16
|
+
Given a target source named "W0690.c" with:
|
17
|
+
"""
|
18
|
+
#line __FILE__ 35 /* W0690 */
|
19
|
+
"""
|
20
|
+
When I successfully run `adlint W0690.c` on noarch
|
21
|
+
Then the output should exactly match with:
|
22
|
+
| mesg | line | column |
|
23
|
+
| W0689 | 1 | 16 |
|
24
|
+
| W0690 | 1 | 7 |
|
25
|
+
|
26
|
+
Scenario: line number and macro replaceable filename
|
27
|
+
Given a target source named "W0690.c" with:
|
28
|
+
"""
|
29
|
+
#line 35 __FILE__ 35 /* OK */
|
30
|
+
"""
|
31
|
+
When I successfully run `adlint W0690.c` on noarch
|
32
|
+
Then the output should exactly match with:
|
33
|
+
| mesg | line | column |
|
34
|
+
|
35
|
+
# vim:ts=2:sw=2:sts=2:et:
|
@@ -1,8 +1,9 @@
|
|
1
1
|
Feature: W0698
|
2
2
|
|
3
|
-
W0698 detects that`return
|
3
|
+
W0698 detects that a `return' statement without expression is found in a
|
4
|
+
non-void function.
|
4
5
|
|
5
|
-
Scenario:
|
6
|
+
Scenario: returning nothing from `int' function
|
6
7
|
Given a target source named "W0698.c" with:
|
7
8
|
"""
|
8
9
|
int func(void)
|