adlint 3.0.10 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 |