adlint 3.0.10 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/ChangeLog
CHANGED
@@ -1,3 +1,70 @@
|
|
1
|
+
Wed Aug 28 10:51:30 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
2
|
+
|
3
|
+
* release.ga : 3.2.0
|
4
|
+
- Support experimental context-tracing feature so that the warning
|
5
|
+
message can be complemented with the context messages.
|
6
|
+
|
7
|
+
Tue Aug 27 19:35:30 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
8
|
+
|
9
|
+
* share/doc/users_guide_ja.texi : Add descriptions about newly added
|
10
|
+
context-messages supporting context-tracing.
|
11
|
+
* share/doc/users_guide_en.texi : Ditto.
|
12
|
+
|
13
|
+
Mon Aug 26 11:44:55 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
14
|
+
|
15
|
+
* release.rc : 3.1.0
|
16
|
+
- Support experimental context-tracing feature so that the warning
|
17
|
+
message can be complemented with the context messages.
|
18
|
+
|
19
|
+
Fri Aug 23 15:55:53 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
20
|
+
|
21
|
+
* lib/adlint/cc1/value.rb : Fix value version management degraded
|
22
|
+
during supporting context-tracing.
|
23
|
+
|
24
|
+
* features/code_check/W0460.feature : Add scenario to reproduce
|
25
|
+
false-positive of W0460 code check.
|
26
|
+
|
27
|
+
Thu Aug 22 14:17:54 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
28
|
+
|
29
|
+
* lib/adlint/cc1/interp.rb : Fix bad context-tracing during or after
|
30
|
+
evaluation of an iteration statement.
|
31
|
+
* lib/adlint/cc1/object.rb : Ditto.
|
32
|
+
* lib/adlint/cc1/value.rb : Ditto.
|
33
|
+
|
34
|
+
* lib/adlint/cc1/trace.rb : Revise context-tracing interface in order
|
35
|
+
not to output context messages about futural controlling-expressions.
|
36
|
+
* lib/adlint/exam/c_builtin/cc1_check.rb : Ditto.
|
37
|
+
|
38
|
+
Wed Aug 7 15:01:04 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
39
|
+
|
40
|
+
* lib/adlint/exam/c_builtin/cc1_check.rb : Fix bad W0570 code check
|
41
|
+
degraded during supporting context-tracing.
|
42
|
+
|
43
|
+
* features/code_check/W0570.feature : Add scenario to reproduce a known
|
44
|
+
bug.
|
45
|
+
|
46
|
+
Wed Aug 7 13:40:55 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
47
|
+
|
48
|
+
* lib/adlint/cc1/trace.rb : Fix bad context message emission of
|
49
|
+
undefinable variables.
|
50
|
+
|
51
|
+
* features/code_check/W0460.feature : Add scenario to reproduce bad
|
52
|
+
context message problem.
|
53
|
+
|
54
|
+
Wed Aug 7 10:28:42 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
55
|
+
|
56
|
+
* lib/adlint/**/* : Support context-tracing to improve readability of
|
57
|
+
warning messages.
|
58
|
+
* lib/adlint/cc1/trace.rb : Add new context tracing module.
|
59
|
+
|
60
|
+
* features/code_check/* : Add scenarios for testing context-tracing.
|
61
|
+
|
62
|
+
Wed Jul 10 15:14:43 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
63
|
+
|
64
|
+
* lib/adlint/cc1/value.rb : Refactor relationships between VersionGroup
|
65
|
+
object and its Version object in order to exactly represent a design
|
66
|
+
of the value version management.
|
67
|
+
|
1
68
|
Fri Jun 28 10:23:30 2013 Yutaka Yanoh <yanoh@users.sourceforge.net>
|
2
69
|
|
3
70
|
* release.ga : 3.0.10
|
data/MANIFEST
CHANGED
@@ -222,6 +222,7 @@ features/code_check/W0501.feature
|
|
222
222
|
features/code_check/W0502.feature
|
223
223
|
features/code_check/W0534.feature
|
224
224
|
features/code_check/W0542.feature
|
225
|
+
features/code_check/W0570.feature
|
225
226
|
features/code_check/W0573.feature
|
226
227
|
features/code_check/W0580.feature
|
227
228
|
features/code_check/W0582.feature
|
@@ -386,6 +387,7 @@ lib/adlint/cc1/scanner.rb
|
|
386
387
|
lib/adlint/cc1/scope.rb
|
387
388
|
lib/adlint/cc1/seqp.rb
|
388
389
|
lib/adlint/cc1/syntax.rb
|
390
|
+
lib/adlint/cc1/trace.rb
|
389
391
|
lib/adlint/cc1/type.rb
|
390
392
|
lib/adlint/cc1/util.rb
|
391
393
|
lib/adlint/cc1/value.rb
|
data/NEWS
CHANGED
@@ -21,6 +21,16 @@
|
|
21
21
|
|
22
22
|
++
|
23
23
|
|
24
|
+
=== \AdLint 3.2.0 is released (2013-08-28)
|
25
|
+
|
26
|
+
==== Changes since the 3.0.10 release
|
27
|
+
|
28
|
+
* Support experimental context-tracing feature so that the warning message can
|
29
|
+
be complemented with the context messages
|
30
|
+
|
31
|
+
See the file {ChangeLog}[https://github.com/yanoh/adlint/blob/master/ChangeLog]
|
32
|
+
for more details.
|
33
|
+
|
24
34
|
=== \AdLint 3.0.10 is released (2013-06-28)
|
25
35
|
|
26
36
|
==== Changes since the 3.0.8 release
|
@@ -43,9 +53,6 @@
|
|
43
53
|
* Fix bypassing inner-variable's value mutation in order to correctly propagate
|
44
54
|
mutation to the outer-variable
|
45
55
|
|
46
|
-
See the file {ChangeLog}[https://github.com/yanoh/adlint/blob/master/ChangeLog]
|
47
|
-
for more details.
|
48
|
-
|
49
56
|
=== \AdLint 3.0.8 is released (2013-05-31)
|
50
57
|
|
51
58
|
==== Changes since the 3.0.4 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
|
52
|
+
version: "3.2.0"
|
53
53
|
|
54
54
|
message_definition:
|
55
55
|
W0001:
|
@@ -2996,3 +2996,31 @@ message_definition:
|
|
2996
2996
|
classes:
|
2997
2997
|
- "INF:X99"
|
2998
2998
|
format: "A warning is detected as a pair of this identifier `%s'."
|
2999
|
+
C1000:
|
3000
|
+
classes:
|
3001
|
+
- "INF:X99"
|
3002
|
+
format: "Warning above is detected in the following context."
|
3003
|
+
C1001:
|
3004
|
+
classes:
|
3005
|
+
- "INF:X99"
|
3006
|
+
format: "This controlling-expression is evaluated to be true."
|
3007
|
+
C1002:
|
3008
|
+
classes:
|
3009
|
+
- "INF:X99"
|
3010
|
+
format: "This controlling-expression is evaluated to be false."
|
3011
|
+
C1003:
|
3012
|
+
classes:
|
3013
|
+
- "INF:X99"
|
3014
|
+
format: "The problematic variable is defined here without initializer."
|
3015
|
+
C1004:
|
3016
|
+
classes:
|
3017
|
+
- "INF:X99"
|
3018
|
+
format: "NULL value is assigned to the the problematic variable."
|
3019
|
+
C1005:
|
3020
|
+
classes:
|
3021
|
+
- "INF:X99"
|
3022
|
+
format: "A value possibly be NULL is assigned to the problematic variable."
|
3023
|
+
C1006:
|
3024
|
+
classes:
|
3025
|
+
- "INF:X99"
|
3026
|
+
format: "New value is assigned to the problematic variable."
|
@@ -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
|
52
|
+
version: "3.2.0"
|
53
53
|
|
54
54
|
message_definition:
|
55
55
|
W0001:
|
@@ -2996,3 +2996,31 @@ message_definition:
|
|
2996
2996
|
classes:
|
2997
2997
|
- "INF:X99"
|
2998
2998
|
format: "この識別名 `%s' で警告を検知しました。"
|
2999
|
+
C1000:
|
3000
|
+
classes:
|
3001
|
+
- "INF:X99"
|
3002
|
+
format: "次の実行パスで警告を検知しました。"
|
3003
|
+
C1001:
|
3004
|
+
classes:
|
3005
|
+
- "INF:X99"
|
3006
|
+
format: "この制御式を真として評価しました。"
|
3007
|
+
C1002:
|
3008
|
+
classes:
|
3009
|
+
- "INF:X99"
|
3010
|
+
format: "この制御式を偽として評価しました。"
|
3011
|
+
C1003:
|
3012
|
+
classes:
|
3013
|
+
- "INF:X99"
|
3014
|
+
format: "ここで該当変数が初期値を指定せずに定義されています。"
|
3015
|
+
C1004:
|
3016
|
+
classes:
|
3017
|
+
- "INF:X99"
|
3018
|
+
format: "ここで該当変数に NULL の値を割り当てました。"
|
3019
|
+
C1005:
|
3020
|
+
classes:
|
3021
|
+
- "INF:X99"
|
3022
|
+
format: "ここで該当変数に NULL の可能性がある値を割り当てました。"
|
3023
|
+
C1006:
|
3024
|
+
classes:
|
3025
|
+
- "INF:X99"
|
3026
|
+
format: "ここで該当変数に値を割り当てました。"
|
@@ -18,6 +18,8 @@ Feature: W0023
|
|
18
18
|
| W9003 | 3 | 24 |
|
19
19
|
| W0023 | 3 | 22 |
|
20
20
|
| W0424 | 3 | 20 |
|
21
|
+
| C1000 | | |
|
22
|
+
| C1005 | 1 | 29 |
|
21
23
|
| W9003 | 3 | 22 |
|
22
24
|
| W0628 | 1 | 6 |
|
23
25
|
|
@@ -37,6 +39,8 @@ Feature: W0023
|
|
37
39
|
| W9003 | 3 | 24 |
|
38
40
|
| W0023 | 3 | 22 |
|
39
41
|
| W0424 | 3 | 20 |
|
42
|
+
| C1000 | | |
|
43
|
+
| C1005 | 1 | 29 |
|
40
44
|
| W9003 | 3 | 22 |
|
41
45
|
| W0628 | 1 | 6 |
|
42
46
|
|
@@ -55,7 +59,11 @@ Feature: W0023
|
|
55
59
|
| W0117 | 1 | 6 |
|
56
60
|
| W0023 | 3 | 22 |
|
57
61
|
| W0424 | 3 | 20 |
|
62
|
+
| C1000 | | |
|
63
|
+
| C1005 | 1 | 29 |
|
58
64
|
| W0424 | 3 | 24 |
|
65
|
+
| C1000 | | |
|
66
|
+
| C1005 | 1 | 50 |
|
59
67
|
| W1052 | 3 | 22 |
|
60
68
|
| W9003 | 3 | 22 |
|
61
69
|
| W0628 | 1 | 6 |
|
@@ -75,8 +83,14 @@ Feature: W0023
|
|
75
83
|
| W0117 | 1 | 6 |
|
76
84
|
| W0023 | 3 | 22 |
|
77
85
|
| W0093 | 3 | 22 |
|
86
|
+
| C1000 | | |
|
87
|
+
| C1006 | 1 | 50 |
|
78
88
|
| W0424 | 3 | 20 |
|
89
|
+
| C1000 | | |
|
90
|
+
| C1005 | 1 | 29 |
|
79
91
|
| W0424 | 3 | 24 |
|
92
|
+
| C1000 | | |
|
93
|
+
| C1005 | 1 | 50 |
|
80
94
|
| W9003 | 3 | 22 |
|
81
95
|
| W0628 | 1 | 6 |
|
82
96
|
|
@@ -96,11 +110,17 @@ Feature: W0023
|
|
96
110
|
| W0117 | 1 | 6 |
|
97
111
|
| W0023 | 3 | 23 |
|
98
112
|
| W0424 | 3 | 21 |
|
113
|
+
| C1000 | | |
|
114
|
+
| C1005 | 1 | 29 |
|
99
115
|
| W0424 | 3 | 25 |
|
116
|
+
| C1000 | | |
|
117
|
+
| C1005 | 1 | 50 |
|
100
118
|
| W1052 | 3 | 23 |
|
101
119
|
| W0023 | 3 | 28 |
|
102
120
|
| W0424 | 3 | 20 |
|
103
121
|
| W0424 | 3 | 30 |
|
122
|
+
| C1000 | | |
|
123
|
+
| C1005 | 1 | 71 |
|
104
124
|
| W1052 | 3 | 28 |
|
105
125
|
| W9003 | 3 | 28 |
|
106
126
|
| W0628 | 1 | 6 |
|
@@ -120,7 +140,11 @@ Feature: W0023
|
|
120
140
|
| W0117 | 1 | 6 |
|
121
141
|
| W0023 | 3 | 22 |
|
122
142
|
| W0424 | 3 | 20 |
|
143
|
+
| C1000 | | |
|
144
|
+
| C1005 | 1 | 50 |
|
123
145
|
| W0424 | 3 | 24 |
|
146
|
+
| C1000 | | |
|
147
|
+
| C1005 | 1 | 29 |
|
124
148
|
| W1052 | 3 | 22 |
|
125
149
|
| W9003 | 3 | 28 |
|
126
150
|
| W0024 | 3 | 26 |
|
@@ -162,8 +186,14 @@ Feature: W0023
|
|
162
186
|
| mesg | line | column |
|
163
187
|
| W0117 | 1 | 6 |
|
164
188
|
| W0116 | 3 | 22 |
|
189
|
+
| C1000 | | |
|
190
|
+
| C1006 | 1 | 29 |
|
165
191
|
| W0424 | 3 | 20 |
|
192
|
+
| C1000 | | |
|
193
|
+
| C1005 | 1 | 29 |
|
166
194
|
| W0424 | 3 | 25 |
|
195
|
+
| C1000 | | |
|
196
|
+
| C1005 | 1 | 50 |
|
167
197
|
| W9003 | 3 | 22 |
|
168
198
|
| W0628 | 1 | 6 |
|
169
199
|
|
@@ -199,5 +229,7 @@ Feature: W0023
|
|
199
229
|
| W9003 | 4 | 5 |
|
200
230
|
| W0023 | 4 | 7 |
|
201
231
|
| W0424 | 4 | 10 |
|
232
|
+
| C1000 | | |
|
233
|
+
| C1005 | 1 | 29 |
|
202
234
|
| W9003 | 4 | 5 |
|
203
235
|
| W0628 | 1 | 6 |
|
@@ -32,6 +32,8 @@ Feature: W0024
|
|
32
32
|
| W0117 | 1 | 12 |
|
33
33
|
| W0024 | 3 | 12 |
|
34
34
|
| W0424 | 3 | 14 |
|
35
|
+
| C1000 | | |
|
36
|
+
| C1005 | 1 | 28 |
|
35
37
|
| W0628 | 1 | 12 |
|
36
38
|
|
37
39
|
Scenario: a pointer variable as lhs of the additive-expression
|
@@ -49,6 +51,8 @@ Feature: W0024
|
|
49
51
|
| W9003 | 3 | 16 |
|
50
52
|
| W0024 | 3 | 14 |
|
51
53
|
| W0424 | 3 | 12 |
|
54
|
+
| C1000 | | |
|
55
|
+
| C1005 | 1 | 35 |
|
52
56
|
| W0628 | 1 | 12 |
|
53
57
|
|
54
58
|
Scenario: a pointer variable as rhs of the additive-expression
|
@@ -66,6 +70,8 @@ Feature: W0024
|
|
66
70
|
| W9003 | 3 | 12 |
|
67
71
|
| W0024 | 3 | 14 |
|
68
72
|
| W0424 | 3 | 16 |
|
73
|
+
| C1000 | | |
|
74
|
+
| C1005 | 1 | 35 |
|
69
75
|
| W0628 | 1 | 12 |
|
70
76
|
|
71
77
|
Scenario: a pointer variable as lhs of the additive-expression
|
@@ -84,6 +90,8 @@ Feature: W0024
|
|
84
90
|
| W9003 | 3 | 14 |
|
85
91
|
| W0024 | 3 | 12 |
|
86
92
|
| W0424 | 3 | 10 |
|
93
|
+
| C1000 | | |
|
94
|
+
| C1005 | 1 | 28 |
|
87
95
|
| W0628 | 1 | 12 |
|
88
96
|
|
89
97
|
Scenario: postfix-decrement-expression with a pointer variable
|
@@ -100,6 +108,8 @@ Feature: W0024
|
|
100
108
|
| W0117 | 1 | 12 |
|
101
109
|
| W0024 | 3 | 13 |
|
102
110
|
| W0424 | 3 | 12 |
|
111
|
+
| C1000 | | |
|
112
|
+
| C1005 | 1 | 28 |
|
103
113
|
| W0628 | 1 | 12 |
|
104
114
|
|
105
115
|
Scenario: prefix-decrement-expression with a pointer variable
|
@@ -116,6 +126,8 @@ Feature: W0024
|
|
116
126
|
| W0117 | 1 | 12 |
|
117
127
|
| W0024 | 3 | 12 |
|
118
128
|
| W0424 | 3 | 14 |
|
129
|
+
| C1000 | | |
|
130
|
+
| C1005 | 1 | 28 |
|
119
131
|
| W0628 | 1 | 12 |
|
120
132
|
|
121
133
|
Scenario: a pointer variable as lhs of the additive-expression
|
@@ -133,6 +145,8 @@ Feature: W0024
|
|
133
145
|
| W9003 | 3 | 16 |
|
134
146
|
| W0024 | 3 | 14 |
|
135
147
|
| W0424 | 3 | 12 |
|
148
|
+
| C1000 | | |
|
149
|
+
| C1005 | 1 | 35 |
|
136
150
|
| W0628 | 1 | 12 |
|
137
151
|
|
138
152
|
Scenario: a pointer variable as rhs of the additive-expression
|
@@ -150,6 +164,8 @@ Feature: W0024
|
|
150
164
|
| W9003 | 3 | 12 |
|
151
165
|
| W0024 | 3 | 14 |
|
152
166
|
| W0424 | 3 | 16 |
|
167
|
+
| C1000 | | |
|
168
|
+
| C1005 | 1 | 35 |
|
153
169
|
| W0628 | 1 | 12 |
|
154
170
|
|
155
171
|
Scenario: pointer variables are incremented and decremented
|
@@ -167,6 +183,8 @@ Feature: W0024
|
|
167
183
|
| W0024 | 3 | 13 |
|
168
184
|
| W0024 | 3 | 19 |
|
169
185
|
| W0424 | 3 | 18 |
|
186
|
+
| C1000 | | |
|
187
|
+
| C1005 | 1 | 42 |
|
170
188
|
| W0424 | 3 | 13 |
|
171
189
|
| W0424 | 3 | 19 |
|
172
190
|
| W0628 | 1 | 12 |
|
@@ -206,6 +224,8 @@ Feature: W0024
|
|
206
224
|
| W9003 | 3 | 16 |
|
207
225
|
| W0023 | 3 | 14 |
|
208
226
|
| W0424 | 3 | 12 |
|
227
|
+
| C1000 | | |
|
228
|
+
| C1005 | 1 | 35 |
|
209
229
|
| W0628 | 1 | 12 |
|
210
230
|
|
211
231
|
Scenario: pointer variable minus 2
|
@@ -223,4 +243,6 @@ Feature: W0024
|
|
223
243
|
| W9003 | 3 | 16 |
|
224
244
|
| W0023 | 3 | 14 |
|
225
245
|
| W0424 | 3 | 12 |
|
246
|
+
| C1000 | | |
|
247
|
+
| C1005 | 1 | 35 |
|
226
248
|
| W0628 | 1 | 12 |
|
@@ -27,7 +27,11 @@ Feature: W0093
|
|
27
27
|
| mesg | line | column |
|
28
28
|
| W1076 | 1 | 13 |
|
29
29
|
| W0093 | 8 | 23 |
|
30
|
+
| C1000 | | |
|
31
|
+
| C1006 | 5 | 14 |
|
30
32
|
| W0093 | 11 | 23 |
|
33
|
+
| C1000 | | |
|
34
|
+
| C1006 | 5 | 14 |
|
31
35
|
| W0629 | 1 | 13 |
|
32
36
|
| W0628 | 1 | 13 |
|
33
37
|
|
@@ -56,6 +60,8 @@ Feature: W0093
|
|
56
60
|
| mesg | line | column |
|
57
61
|
| W1076 | 1 | 13 |
|
58
62
|
| W0093 | 11 | 23 |
|
63
|
+
| C1000 | | |
|
64
|
+
| C1006 | 5 | 14 |
|
59
65
|
| W0629 | 1 | 13 |
|
60
66
|
| W0628 | 1 | 13 |
|
61
67
|
|
@@ -86,3 +92,68 @@ Feature: W0093
|
|
86
92
|
| W0093 | 8 | 23 |
|
87
93
|
| W0629 | 1 | 13 |
|
88
94
|
| W0628 | 1 | 13 |
|
95
|
+
|
96
|
+
Scenario: possible zero-devide because of an incomplete if-else-if statement
|
97
|
+
Given a target source named "fixture.c" with:
|
98
|
+
"""
|
99
|
+
int foo(int i)
|
100
|
+
{
|
101
|
+
int j = 0;
|
102
|
+
|
103
|
+
if (i < 0) { /* false */
|
104
|
+
j = -i;
|
105
|
+
}
|
106
|
+
else if (i > 0) { /* false */
|
107
|
+
j = i;
|
108
|
+
}
|
109
|
+
|
110
|
+
return 5 / j; /* W0093 */
|
111
|
+
}
|
112
|
+
"""
|
113
|
+
When I successfully run `adlint fixture.c` on noarch
|
114
|
+
Then the output should exactly match with:
|
115
|
+
| mesg | line | column |
|
116
|
+
| W0117 | 1 | 5 |
|
117
|
+
| W0093 | 12 | 14 |
|
118
|
+
| C1000 | | |
|
119
|
+
| C1006 | 3 | 9 |
|
120
|
+
| C1002 | 5 | 11 |
|
121
|
+
| C1002 | 8 | 16 |
|
122
|
+
| W0104 | 1 | 13 |
|
123
|
+
| W1069 | 5 | 5 |
|
124
|
+
| W0628 | 1 | 5 |
|
125
|
+
|
126
|
+
Scenario: possible zero-devide because of an incomplete if-else-if statement
|
127
|
+
Given a target source named "fixture.c" with:
|
128
|
+
"""
|
129
|
+
int foo(int i)
|
130
|
+
{
|
131
|
+
int j;
|
132
|
+
|
133
|
+
if (i < 0) { /* false */
|
134
|
+
j = -i;
|
135
|
+
}
|
136
|
+
else if (i > 0) {
|
137
|
+
j = i; /* false */
|
138
|
+
}
|
139
|
+
|
140
|
+
return 5 / j; /* W0093 */
|
141
|
+
}
|
142
|
+
"""
|
143
|
+
When I successfully run `adlint fixture.c` on noarch
|
144
|
+
Then the output should exactly match with:
|
145
|
+
| mesg | line | column |
|
146
|
+
| W0117 | 1 | 5 |
|
147
|
+
| W0460 | 12 | 14 |
|
148
|
+
| C1000 | | |
|
149
|
+
| C1003 | 3 | 9 |
|
150
|
+
| C1002 | 5 | 11 |
|
151
|
+
| C1002 | 8 | 16 |
|
152
|
+
| W0093 | 12 | 14 |
|
153
|
+
| C1000 | | |
|
154
|
+
| C1006 | 3 | 9 |
|
155
|
+
| C1002 | 5 | 11 |
|
156
|
+
| C1002 | 8 | 16 |
|
157
|
+
| W0104 | 1 | 13 |
|
158
|
+
| W1069 | 5 | 5 |
|
159
|
+
| W0628 | 1 | 5 |
|