adlint 3.0.10 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/ChangeLog +67 -0
  2. data/MANIFEST +2 -0
  3. data/NEWS +10 -3
  4. data/etc/mesg.d/c_builtin/en_US/messages.yml +29 -1
  5. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +29 -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/W0003.feature +5 -0
  9. data/features/code_check/W0023.feature +32 -0
  10. data/features/code_check/W0024.feature +22 -0
  11. data/features/code_check/W0093.feature +71 -0
  12. data/features/code_check/W0097.feature +4 -0
  13. data/features/code_check/W0100.feature +10 -0
  14. data/features/code_check/W0119.feature +8 -0
  15. data/features/code_check/W0133.feature +8 -0
  16. data/features/code_check/W0134.feature +8 -0
  17. data/features/code_check/W0136.feature +8 -0
  18. data/features/code_check/W0138.feature +8 -0
  19. data/features/code_check/W0140.feature +8 -0
  20. data/features/code_check/W0142.feature +8 -0
  21. data/features/code_check/W0143.feature +8 -0
  22. data/features/code_check/W0144.feature +8 -0
  23. data/features/code_check/W0145.feature +8 -0
  24. data/features/code_check/W0146.feature +8 -0
  25. data/features/code_check/W0147.feature +8 -0
  26. data/features/code_check/W0148.feature +8 -0
  27. data/features/code_check/W0149.feature +8 -0
  28. data/features/code_check/W0150.feature +8 -0
  29. data/features/code_check/W0151.feature +8 -0
  30. data/features/code_check/W0152.feature +8 -0
  31. data/features/code_check/W0153.feature +8 -0
  32. data/features/code_check/W0154.feature +8 -0
  33. data/features/code_check/W0155.feature +8 -0
  34. data/features/code_check/W0156.feature +8 -0
  35. data/features/code_check/W0157.feature +8 -0
  36. data/features/code_check/W0158.feature +8 -0
  37. data/features/code_check/W0159.feature +8 -0
  38. data/features/code_check/W0160.feature +8 -0
  39. data/features/code_check/W0161.feature +8 -0
  40. data/features/code_check/W0162.feature +8 -0
  41. data/features/code_check/W0163.feature +8 -0
  42. data/features/code_check/W0164.feature +8 -0
  43. data/features/code_check/W0165.feature +8 -0
  44. data/features/code_check/W0166.feature +8 -0
  45. data/features/code_check/W0167.feature +8 -0
  46. data/features/code_check/W0168.feature +8 -0
  47. data/features/code_check/W0169.feature +8 -0
  48. data/features/code_check/W0170.feature +8 -0
  49. data/features/code_check/W0171.feature +8 -0
  50. data/features/code_check/W0172.feature +8 -0
  51. data/features/code_check/W0173.feature +8 -0
  52. data/features/code_check/W0174.feature +8 -0
  53. data/features/code_check/W0175.feature +8 -0
  54. data/features/code_check/W0176.feature +8 -0
  55. data/features/code_check/W0177.feature +8 -0
  56. data/features/code_check/W0178.feature +8 -0
  57. data/features/code_check/W0179.feature +8 -0
  58. data/features/code_check/W0180.feature +8 -0
  59. data/features/code_check/W0181.feature +8 -0
  60. data/features/code_check/W0250.feature +8 -0
  61. data/features/code_check/W0422.feature +194 -0
  62. data/features/code_check/W0459.feature +16 -0
  63. data/features/code_check/W0460.feature +342 -0
  64. data/features/code_check/W0461.feature +5 -0
  65. data/features/code_check/W0497.feature +12 -0
  66. data/features/code_check/W0499.feature +6 -0
  67. data/features/code_check/W0502.feature +6 -0
  68. data/features/code_check/W0570.feature +47 -0
  69. data/features/code_check/W0573.feature +8 -0
  70. data/features/code_check/W0582.feature +4 -0
  71. data/features/code_check/W0583.feature +4 -0
  72. data/features/code_check/W0584.feature +10 -0
  73. data/features/code_check/W0599.feature +10 -0
  74. data/features/code_check/W0644.feature +2 -0
  75. data/features/code_check/W0649.feature +14 -0
  76. data/features/code_check/W0650.feature +12 -0
  77. data/features/code_check/W0685.feature +10 -0
  78. data/features/code_check/W0686.feature +8 -0
  79. data/features/code_check/W0711.feature +2 -0
  80. data/features/code_check/W0712.feature +2 -0
  81. data/features/code_check/W0713.feature +2 -0
  82. data/features/code_check/W0714.feature +2 -0
  83. data/features/code_check/W0715.feature +2 -0
  84. data/features/code_check/W0718.feature +2 -0
  85. data/features/code_check/W0719.feature +8 -0
  86. data/features/code_check/W0732.feature +18 -0
  87. data/features/code_check/W0733.feature +18 -0
  88. data/features/code_check/W0734.feature +24 -0
  89. data/features/code_check/W0735.feature +24 -0
  90. data/features/code_check/W0747.feature +8 -0
  91. data/features/code_check/W0749.feature +8 -0
  92. data/features/code_check/W0750.feature +8 -0
  93. data/features/code_check/W0753.feature +8 -0
  94. data/features/code_check/W0754.feature +8 -0
  95. data/features/code_check/W0759.feature +8 -0
  96. data/features/code_check/W0760.feature +8 -0
  97. data/features/code_check/W0761.feature +8 -0
  98. data/features/code_check/W0762.feature +8 -0
  99. data/features/code_check/W0794.feature +6 -0
  100. data/features/code_check/W1050.feature +8 -0
  101. data/features/code_check/W1066.feature +8 -0
  102. data/features/code_check/W1067.feature +8 -0
  103. data/features/code_check/W1068.feature +8 -0
  104. data/features/code_check/W1071.feature +4 -0
  105. data/features/code_check/W9003.feature +2 -0
  106. data/lib/adlint/cc1.rb +1 -0
  107. data/lib/adlint/cc1/branch.rb +34 -13
  108. data/lib/adlint/cc1/conv.rb +3 -3
  109. data/lib/adlint/cc1/ctrlexpr.rb +12 -7
  110. data/lib/adlint/cc1/environ.rb +12 -2
  111. data/lib/adlint/cc1/expr.rb +10 -8
  112. data/lib/adlint/cc1/interp.rb +56 -49
  113. data/lib/adlint/cc1/mediator.rb +9 -5
  114. data/lib/adlint/cc1/object.rb +37 -34
  115. data/lib/adlint/cc1/trace.rb +287 -0
  116. data/lib/adlint/cc1/type.rb +15 -15
  117. data/lib/adlint/cc1/value.rb +823 -427
  118. data/lib/adlint/cpp/eval.rb +5 -2
  119. data/lib/adlint/cpp/source.rb +21 -22
  120. data/lib/adlint/exam/c_builtin/cc1_check.rb +1636 -1067
  121. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +28 -22
  122. data/lib/adlint/exam/c_builtin/cc1_code.rb +4 -4
  123. data/lib/adlint/exam/c_builtin/cc1_metric.rb +14 -14
  124. data/lib/adlint/location.rb +5 -7
  125. data/lib/adlint/metric.rb +2 -2
  126. data/lib/adlint/prelude.rb +6 -2
  127. data/lib/adlint/report.rb +2 -2
  128. data/lib/adlint/version.rb +3 -3
  129. data/share/doc/developers_guide_ja.html +10 -4
  130. data/share/doc/developers_guide_ja.texi +8 -2
  131. data/share/doc/users_guide_en.html +679 -72
  132. data/share/doc/users_guide_en.texi +557 -12
  133. data/share/doc/users_guide_ja.html +678 -74
  134. data/share/doc/users_guide_ja.texi +554 -13
  135. data/spec/adlint/cc1/ctrlexpr_spec.rb +20 -11
  136. data/spec/adlint/cc1/domain_spec.rb +9 -0
  137. metadata +4 -2
@@ -34,6 +34,8 @@ Feature: W0174
34
34
  | mesg | line | column |
35
35
  | W0117 | 1 | 6 |
36
36
  | W0608 | 3 | 28 |
37
+ | C1000 | | |
38
+ | C1006 | 1 | 16 |
37
39
  | W0100 | 3 | 24 |
38
40
  | W0104 | 1 | 16 |
39
41
  | W0834 | 3 | 29 |
@@ -73,6 +75,8 @@ Feature: W0174
73
75
  | mesg | line | column |
74
76
  | W0117 | 1 | 6 |
75
77
  | W0608 | 4 | 9 |
78
+ | C1000 | | |
79
+ | C1006 | 1 | 16 |
76
80
  | W0100 | 3 | 24 |
77
81
  | W0104 | 1 | 16 |
78
82
  | W0834 | 3 | 5 |
@@ -115,6 +119,8 @@ Feature: W0174
115
119
  | W0118 | 1 | 13 |
116
120
  | W0117 | 3 | 6 |
117
121
  | W0608 | 5 | 9 |
122
+ | C1000 | | |
123
+ | C1006 | 3 | 16 |
118
124
  | W0104 | 3 | 16 |
119
125
  | W0834 | 1 | 17 |
120
126
  | W0834 | 5 | 10 |
@@ -151,6 +157,8 @@ Feature: W0174
151
157
  | mesg | line | column |
152
158
  | W0117 | 1 | 20 |
153
159
  | W0608 | 3 | 12 |
160
+ | C1000 | | |
161
+ | C1006 | 1 | 30 |
154
162
  | W0104 | 1 | 30 |
155
163
  | W0834 | 1 | 1 |
156
164
  | W0834 | 3 | 13 |
@@ -33,6 +33,8 @@ Feature: W0175
33
33
  | mesg | line | column |
34
34
  | W0117 | 1 | 6 |
35
35
  | W0608 | 3 | 28 |
36
+ | C1000 | | |
37
+ | C1006 | 1 | 14 |
36
38
  | W0100 | 3 | 24 |
37
39
  | W0104 | 1 | 14 |
38
40
  | W0834 | 3 | 29 |
@@ -72,6 +74,8 @@ Feature: W0175
72
74
  | mesg | line | column |
73
75
  | W0117 | 1 | 6 |
74
76
  | W0608 | 4 | 9 |
77
+ | C1000 | | |
78
+ | C1006 | 1 | 14 |
75
79
  | W0100 | 3 | 24 |
76
80
  | W0104 | 1 | 14 |
77
81
  | W0834 | 3 | 5 |
@@ -114,6 +118,8 @@ Feature: W0175
114
118
  | W0118 | 1 | 13 |
115
119
  | W0117 | 3 | 6 |
116
120
  | W0608 | 5 | 9 |
121
+ | C1000 | | |
122
+ | C1006 | 3 | 14 |
117
123
  | W0104 | 3 | 14 |
118
124
  | W0834 | 1 | 17 |
119
125
  | W0834 | 5 | 10 |
@@ -150,6 +156,8 @@ Feature: W0175
150
156
  | mesg | line | column |
151
157
  | W0117 | 1 | 20 |
152
158
  | W0608 | 3 | 12 |
159
+ | C1000 | | |
160
+ | C1006 | 1 | 28 |
153
161
  | W0104 | 1 | 28 |
154
162
  | W0834 | 1 | 1 |
155
163
  | W0834 | 3 | 13 |
@@ -33,6 +33,8 @@ Feature: W0176
33
33
  | mesg | line | column |
34
34
  | W0117 | 1 | 6 |
35
35
  | W0608 | 3 | 28 |
36
+ | C1000 | | |
37
+ | C1006 | 1 | 15 |
36
38
  | W0100 | 3 | 24 |
37
39
  | W0104 | 1 | 15 |
38
40
  | W0834 | 3 | 29 |
@@ -72,6 +74,8 @@ Feature: W0176
72
74
  | mesg | line | column |
73
75
  | W0117 | 1 | 6 |
74
76
  | W0608 | 4 | 9 |
77
+ | C1000 | | |
78
+ | C1006 | 1 | 15 |
75
79
  | W0100 | 3 | 24 |
76
80
  | W0104 | 1 | 15 |
77
81
  | W0834 | 3 | 5 |
@@ -114,6 +118,8 @@ Feature: W0176
114
118
  | W0118 | 1 | 13 |
115
119
  | W0117 | 3 | 6 |
116
120
  | W0608 | 5 | 9 |
121
+ | C1000 | | |
122
+ | C1006 | 3 | 15 |
117
123
  | W0104 | 3 | 15 |
118
124
  | W0834 | 1 | 17 |
119
125
  | W0834 | 5 | 10 |
@@ -150,6 +156,8 @@ Feature: W0176
150
156
  | mesg | line | column |
151
157
  | W0117 | 1 | 20 |
152
158
  | W0608 | 3 | 12 |
159
+ | C1000 | | |
160
+ | C1006 | 1 | 29 |
153
161
  | W0104 | 1 | 29 |
154
162
  | W0834 | 1 | 1 |
155
163
  | W0834 | 3 | 13 |
@@ -33,6 +33,8 @@ Feature: W0177
33
33
  | mesg | line | column |
34
34
  | W0117 | 1 | 6 |
35
35
  | W0608 | 3 | 23 |
36
+ | C1000 | | |
37
+ | C1006 | 1 | 20 |
36
38
  | W0100 | 3 | 19 |
37
39
  | W0104 | 1 | 20 |
38
40
  | W0834 | 1 | 10 |
@@ -71,6 +73,8 @@ Feature: W0177
71
73
  | mesg | line | column |
72
74
  | W0117 | 1 | 6 |
73
75
  | W0608 | 4 | 9 |
76
+ | C1000 | | |
77
+ | C1006 | 1 | 20 |
74
78
  | W0100 | 3 | 19 |
75
79
  | W0104 | 1 | 20 |
76
80
  | W0834 | 1 | 10 |
@@ -112,6 +116,8 @@ Feature: W0177
112
116
  | W0118 | 1 | 13 |
113
117
  | W0117 | 3 | 6 |
114
118
  | W0608 | 5 | 9 |
119
+ | C1000 | | |
120
+ | C1006 | 3 | 20 |
115
121
  | W0104 | 3 | 20 |
116
122
  | W0834 | 3 | 10 |
117
123
  | W0628 | 3 | 6 |
@@ -147,6 +153,8 @@ Feature: W0177
147
153
  | mesg | line | column |
148
154
  | W0117 | 1 | 15 |
149
155
  | W0608 | 3 | 12 |
156
+ | C1000 | | |
157
+ | C1006 | 1 | 29 |
150
158
  | W0104 | 1 | 29 |
151
159
  | W0834 | 1 | 19 |
152
160
  | W0628 | 1 | 15 |
@@ -34,6 +34,8 @@ Feature: W0178
34
34
  | mesg | line | column |
35
35
  | W0117 | 1 | 6 |
36
36
  | W0608 | 3 | 24 |
37
+ | C1000 | | |
38
+ | C1006 | 1 | 20 |
37
39
  | W0100 | 3 | 20 |
38
40
  | W0104 | 1 | 20 |
39
41
  | W0834 | 1 | 10 |
@@ -72,6 +74,8 @@ Feature: W0178
72
74
  | mesg | line | column |
73
75
  | W0117 | 1 | 6 |
74
76
  | W0608 | 4 | 9 |
77
+ | C1000 | | |
78
+ | C1006 | 1 | 20 |
75
79
  | W0100 | 3 | 20 |
76
80
  | W0104 | 1 | 20 |
77
81
  | W0834 | 1 | 10 |
@@ -113,6 +117,8 @@ Feature: W0178
113
117
  | W0118 | 1 | 13 |
114
118
  | W0117 | 3 | 6 |
115
119
  | W0608 | 5 | 9 |
120
+ | C1000 | | |
121
+ | C1006 | 3 | 20 |
116
122
  | W0104 | 3 | 20 |
117
123
  | W0834 | 3 | 10 |
118
124
  | W0628 | 3 | 6 |
@@ -148,6 +154,8 @@ Feature: W0178
148
154
  | mesg | line | column |
149
155
  | W0117 | 1 | 16 |
150
156
  | W0608 | 3 | 12 |
157
+ | C1000 | | |
158
+ | C1006 | 1 | 30 |
151
159
  | W0104 | 1 | 30 |
152
160
  | W0834 | 1 | 20 |
153
161
  | W0628 | 1 | 16 |
@@ -33,6 +33,8 @@ Feature: W0179
33
33
  | mesg | line | column |
34
34
  | W0117 | 1 | 6 |
35
35
  | W0608 | 3 | 22 |
36
+ | C1000 | | |
37
+ | C1006 | 1 | 20 |
36
38
  | W0100 | 3 | 18 |
37
39
  | W0104 | 1 | 20 |
38
40
  | W0834 | 1 | 10 |
@@ -71,6 +73,8 @@ Feature: W0179
71
73
  | mesg | line | column |
72
74
  | W0117 | 1 | 6 |
73
75
  | W0608 | 4 | 9 |
76
+ | C1000 | | |
77
+ | C1006 | 1 | 20 |
74
78
  | W0100 | 3 | 18 |
75
79
  | W0104 | 1 | 20 |
76
80
  | W0834 | 1 | 10 |
@@ -112,6 +116,8 @@ Feature: W0179
112
116
  | W0118 | 1 | 13 |
113
117
  | W0117 | 3 | 6 |
114
118
  | W0608 | 5 | 9 |
119
+ | C1000 | | |
120
+ | C1006 | 3 | 20 |
115
121
  | W0104 | 3 | 20 |
116
122
  | W0834 | 3 | 10 |
117
123
  | W0628 | 3 | 6 |
@@ -147,6 +153,8 @@ Feature: W0179
147
153
  | mesg | line | column |
148
154
  | W0117 | 1 | 14 |
149
155
  | W0608 | 3 | 12 |
156
+ | C1000 | | |
157
+ | C1006 | 1 | 28 |
150
158
  | W0104 | 1 | 28 |
151
159
  | W0834 | 1 | 18 |
152
160
  | W0628 | 1 | 14 |
@@ -33,6 +33,8 @@ Feature: W0180
33
33
  | mesg | line | column |
34
34
  | W0117 | 1 | 6 |
35
35
  | W0608 | 3 | 23 |
36
+ | C1000 | | |
37
+ | C1006 | 1 | 20 |
36
38
  | W0100 | 3 | 19 |
37
39
  | W0104 | 1 | 20 |
38
40
  | W0834 | 1 | 10 |
@@ -71,6 +73,8 @@ Feature: W0180
71
73
  | mesg | line | column |
72
74
  | W0117 | 1 | 6 |
73
75
  | W0608 | 4 | 9 |
76
+ | C1000 | | |
77
+ | C1006 | 1 | 20 |
74
78
  | W0100 | 3 | 19 |
75
79
  | W0104 | 1 | 20 |
76
80
  | W0834 | 1 | 10 |
@@ -112,6 +116,8 @@ Feature: W0180
112
116
  | W0118 | 1 | 13 |
113
117
  | W0117 | 3 | 6 |
114
118
  | W0608 | 5 | 9 |
119
+ | C1000 | | |
120
+ | C1006 | 3 | 20 |
115
121
  | W0104 | 3 | 20 |
116
122
  | W0834 | 3 | 10 |
117
123
  | W0628 | 3 | 6 |
@@ -147,6 +153,8 @@ Feature: W0180
147
153
  | mesg | line | column |
148
154
  | W0117 | 1 | 15 |
149
155
  | W0608 | 3 | 12 |
156
+ | C1000 | | |
157
+ | C1006 | 1 | 29 |
150
158
  | W0104 | 1 | 29 |
151
159
  | W0834 | 1 | 19 |
152
160
  | W0628 | 1 | 15 |
@@ -35,6 +35,8 @@ Feature: W0181
35
35
  | mesg | line | column |
36
36
  | W0117 | 1 | 6 |
37
37
  | W0608 | 3 | 28 |
38
+ | C1000 | | |
39
+ | C1006 | 1 | 20 |
38
40
  | W0100 | 3 | 24 |
39
41
  | W0104 | 1 | 20 |
40
42
  | W0834 | 1 | 10 |
@@ -76,6 +78,8 @@ Feature: W0181
76
78
  | mesg | line | column |
77
79
  | W0117 | 1 | 6 |
78
80
  | W0608 | 4 | 9 |
81
+ | C1000 | | |
82
+ | C1006 | 1 | 20 |
79
83
  | W0100 | 3 | 24 |
80
84
  | W0104 | 1 | 20 |
81
85
  | W0834 | 1 | 10 |
@@ -120,6 +124,8 @@ Feature: W0181
120
124
  | W0118 | 1 | 13 |
121
125
  | W0117 | 3 | 6 |
122
126
  | W0608 | 5 | 9 |
127
+ | C1000 | | |
128
+ | C1006 | 3 | 20 |
123
129
  | W0104 | 3 | 20 |
124
130
  | W0834 | 1 | 17 |
125
131
  | W0834 | 3 | 10 |
@@ -158,6 +164,8 @@ Feature: W0181
158
164
  | mesg | line | column |
159
165
  | W0117 | 1 | 20 |
160
166
  | W0608 | 3 | 12 |
167
+ | C1000 | | |
168
+ | C1006 | 1 | 34 |
161
169
  | W0104 | 1 | 34 |
162
170
  | W0834 | 1 | 1 |
163
171
  | W0834 | 1 | 24 |
@@ -32,6 +32,8 @@ Feature: W0250
32
32
  | mesg | line | column |
33
33
  | W0117 | 1 | 6 |
34
34
  | W1049 | 3 | 14 |
35
+ | C1000 | | |
36
+ | C1006 | 1 | 23 |
35
37
  | W0100 | 3 | 10 |
36
38
  | W0104 | 1 | 23 |
37
39
  | W0628 | 1 | 6 |
@@ -68,6 +70,8 @@ Feature: W0250
68
70
  | mesg | line | column |
69
71
  | W0117 | 1 | 6 |
70
72
  | W1049 | 4 | 9 |
73
+ | C1000 | | |
74
+ | C1006 | 1 | 23 |
71
75
  | W0100 | 3 | 10 |
72
76
  | W0104 | 1 | 23 |
73
77
  | W0628 | 1 | 6 |
@@ -107,6 +111,8 @@ Feature: W0250
107
111
  | W0118 | 1 | 13 |
108
112
  | W0117 | 3 | 6 |
109
113
  | W1049 | 5 | 9 |
114
+ | C1000 | | |
115
+ | C1006 | 3 | 23 |
110
116
  | W0104 | 3 | 23 |
111
117
  | W0628 | 3 | 6 |
112
118
 
@@ -140,5 +146,7 @@ Feature: W0250
140
146
  | mesg | line | column |
141
147
  | W0117 | 1 | 6 |
142
148
  | W1049 | 3 | 12 |
149
+ | C1000 | | |
150
+ | C1006 | 1 | 23 |
143
151
  | W0104 | 1 | 23 |
144
152
  | W0628 | 1 | 6 |
@@ -28,8 +28,12 @@ Feature: W0422
28
28
  | W0118 | 2 | 14 |
29
29
  | W1076 | 4 | 12 |
30
30
  | W0422 | 7 | 13 |
31
+ | C1000 | | |
32
+ | C1005 | 6 | 24 |
31
33
  | W1076 | 10 | 12 |
32
34
  | W0422 | 13 | 13 |
35
+ | C1000 | | |
36
+ | C1005 | 12 | 24 |
33
37
  | W0629 | 4 | 12 |
34
38
  | W0629 | 10 | 12 |
35
39
  | W0628 | 4 | 12 |
@@ -94,6 +98,10 @@ Feature: W0422
94
98
  | mesg | line | column |
95
99
  | W0117 | 3 | 6 |
96
100
  | W0422 | 11 | 20 |
101
+ | C1000 | | |
102
+ | C1001 | 5 | 9 |
103
+ | C1005 | 9 | 18 |
104
+ | C1005 | 10 | 16 |
97
105
  | W0024 | 12 | 19 |
98
106
  | W0114 | 5 | 5 |
99
107
  | W0114 | 8 | 9 |
@@ -120,6 +128,8 @@ Feature: W0422
120
128
  | W0704 | 3 | 16 |
121
129
  | C0001 | 1 | 13 |
122
130
  | W0422 | 5 | 14 |
131
+ | C1000 | | |
132
+ | C1005 | 3 | 16 |
123
133
  | W0123 | 5 | 14 |
124
134
  | W0104 | 3 | 16 |
125
135
  | W0105 | 3 | 16 |
@@ -176,6 +186,8 @@ Feature: W0422
176
186
  | W0117 | 1 | 6 |
177
187
  | W0117 | 3 | 5 |
178
188
  | W0421 | 6 | 16 |
189
+ | C1000 | | |
190
+ | C1004 | 1 | 6 |
179
191
  | W9003 | 8 | 22 |
180
192
  | W0027 | 8 | 19 |
181
193
  | W1071 | 3 | 5 |
@@ -207,6 +219,8 @@ Feature: W0422
207
219
  | W0117 | 1 | 6 |
208
220
  | W0117 | 3 | 5 |
209
221
  | W0421 | 6 | 16 |
222
+ | C1000 | | |
223
+ | C1004 | 1 | 6 |
210
224
  | W9003 | 8 | 21 |
211
225
  | W0027 | 8 | 18 |
212
226
  | W1071 | 3 | 5 |
@@ -283,3 +297,183 @@ Feature: W0422
283
297
  | W0628 | 3 | 5 |
284
298
  | W0589 | 1 | 6 |
285
299
  | W0593 | 1 | 6 |
300
+
301
+ Scenario: possible null-dereference because of an incomplete if statement
302
+ Given a target source named "fixture.c" with:
303
+ """
304
+ int *bar(void);
305
+
306
+ int foo(int i)
307
+ {
308
+ int *p;
309
+
310
+ if (i == 0) { /* true */
311
+ p = bar();
312
+ }
313
+
314
+ return *p; /* W0422 */
315
+ }
316
+ """
317
+ When I successfully run `adlint fixture.c` on noarch
318
+ Then the output should exactly match with:
319
+ | mesg | line | column |
320
+ | W0118 | 1 | 6 |
321
+ | W0117 | 3 | 5 |
322
+ | W0460 | 11 | 12 |
323
+ | C1000 | | |
324
+ | C1003 | 5 | 10 |
325
+ | C1002 | 7 | 11 |
326
+ | W0422 | 11 | 12 |
327
+ | C1000 | | |
328
+ | C1005 | 5 | 10 |
329
+ | C1001 | 7 | 11 |
330
+ | C1005 | 8 | 11 |
331
+ | W0100 | 5 | 10 |
332
+ | W0104 | 3 | 13 |
333
+ | W0628 | 3 | 5 |
334
+
335
+ Scenario: possible null-dereference because of an incomplete selection
336
+ statement
337
+ Given a target source named "fixture.c" with:
338
+ """
339
+ static void foo(void)
340
+ {
341
+ int i;
342
+ int *p;
343
+
344
+ switch (rand()) {
345
+ case 0: /* false */
346
+ p = &i;
347
+ break;
348
+ case 1: /* true */
349
+ p = NULL;
350
+ break;
351
+ default:
352
+ return;
353
+ }
354
+
355
+ *p = 5; /* W0422 */
356
+
357
+ if (i < rand()) { /* false */
358
+ p = &i;
359
+ }
360
+
361
+ *p = 6; /* W0422 */
362
+
363
+ if (rand() < 1) { /* false */
364
+ p = &i;
365
+ }
366
+
367
+ *p = 7; /* W0422 */
368
+ }
369
+ """
370
+ When I successfully run `adlint fixture.c` on noarch
371
+ Then the output should exactly match with:
372
+ | mesg | line | column |
373
+ | W1076 | 1 | 13 |
374
+ | W0109 | 6 | 13 |
375
+ | W0459 | 8 | 13 |
376
+ | C1000 | | |
377
+ | C1003 | 3 | 9 |
378
+ | W0422 | 17 | 5 |
379
+ | C1000 | | |
380
+ | C1005 | 4 | 10 |
381
+ | C1002 | 7 | 5 |
382
+ | C1001 | 10 | 5 |
383
+ | C1004 | 11 | 11 |
384
+ | W0459 | 19 | 11 |
385
+ | C1000 | | |
386
+ | C1003 | 3 | 9 |
387
+ | W0459 | 20 | 13 |
388
+ | C1000 | | |
389
+ | C1003 | 3 | 9 |
390
+ | W0422 | 23 | 5 |
391
+ | C1000 | | |
392
+ | C1005 | 4 | 10 |
393
+ | C1002 | 7 | 5 |
394
+ | C1001 | 10 | 5 |
395
+ | C1004 | 11 | 11 |
396
+ | C1002 | 19 | 11 |
397
+ | W0459 | 26 | 13 |
398
+ | C1000 | | |
399
+ | C1003 | 3 | 9 |
400
+ | W0422 | 29 | 5 |
401
+ | C1000 | | |
402
+ | C1005 | 4 | 10 |
403
+ | C1002 | 7 | 5 |
404
+ | C1001 | 10 | 5 |
405
+ | C1004 | 11 | 11 |
406
+ | C1002 | 19 | 11 |
407
+ | C1002 | 25 | 16 |
408
+ | W0100 | 3 | 9 |
409
+ | W1071 | 1 | 13 |
410
+ | W0629 | 1 | 13 |
411
+ | W0628 | 1 | 13 |
412
+
413
+ Scenario: possible null-dereference because of an incomplete iteration
414
+ statement
415
+ Given a target source named "fixture.c" with:
416
+ """
417
+ static void foo(void)
418
+ {
419
+ int i;
420
+ int *p;
421
+
422
+ switch (rand()) {
423
+ case 0: /* false */
424
+ p = &i;
425
+ break;
426
+ case 1: /* true */
427
+ p = NULL;
428
+ break;
429
+ default:
430
+ return;
431
+ }
432
+
433
+ *p = 5; /* W0422 */
434
+
435
+ for (i = 0; i < rand(); ++i) { /* false */
436
+ p = &i;
437
+ }
438
+
439
+ *p = 6; /* W0422 */
440
+
441
+ while (rand() < 1) { /* false */
442
+ p = &i;
443
+ }
444
+
445
+ *p = 7; /* W0422 */
446
+ }
447
+ """
448
+ When I successfully run `adlint fixture.c` on noarch
449
+ Then the output should exactly match with:
450
+ | mesg | line | column |
451
+ | W1076 | 1 | 13 |
452
+ | W0109 | 6 | 13 |
453
+ | W0459 | 8 | 13 |
454
+ | C1000 | | |
455
+ | C1003 | 3 | 9 |
456
+ | W0422 | 17 | 5 |
457
+ | C1000 | | |
458
+ | C1005 | 4 | 10 |
459
+ | C1002 | 7 | 5 |
460
+ | C1001 | 10 | 5 |
461
+ | C1004 | 11 | 11 |
462
+ | W0422 | 23 | 5 |
463
+ | C1000 | | |
464
+ | C1005 | 4 | 10 |
465
+ | C1002 | 7 | 5 |
466
+ | C1001 | 10 | 5 |
467
+ | C1004 | 11 | 11 |
468
+ | C1002 | 19 | 19 |
469
+ | W0422 | 29 | 5 |
470
+ | C1000 | | |
471
+ | C1005 | 4 | 10 |
472
+ | C1002 | 7 | 5 |
473
+ | C1001 | 10 | 5 |
474
+ | C1004 | 11 | 11 |
475
+ | C1002 | 19 | 19 |
476
+ | C1002 | 25 | 19 |
477
+ | W1071 | 1 | 13 |
478
+ | W0629 | 1 | 13 |
479
+ | W0628 | 1 | 13 |