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
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_en.info
3
3
  @documentlanguage en
4
4
  @documentencoding utf-8
5
- @settitle AdLint 3.0.10 User's Guide
5
+ @settitle AdLint 3.2.0 User's Guide
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
@@ -3120,6 +3120,13 @@ context_line
3120
3120
  * W9002::There is no line feed character at the end of file.
3121
3121
  * W9003::An object typed `%s' is implicitly converted into an object of type `%s'.
3122
3122
  * C0001::A warning is detected as a pair of this identifier `%s'.
3123
+ * C1000::Warning above is detected in the following context.
3124
+ * C1001::This controlling-expression is evaluated to be true.
3125
+ * C1002::This controlling-expression is evaluated to be false.
3126
+ * C1003::The problematic variable is defined here without initializer.
3127
+ * C1004::NULL value is assigned to the the problematic variable.
3128
+ * C1005::A value possibly be NULL is assigned to the problematic variable.
3129
+ * C1006::New value is assigned to the problematic variable.
3123
3130
  @end menu
3124
3131
 
3125
3132
  @node X0001
@@ -5569,7 +5576,12 @@ int func(int a, int b)
5569
5576
 
5570
5577
  @subsection Related message
5571
5578
 
5572
- None.
5579
+ @itemize
5580
+ @item @ref{C1000} Warning above is detected in the following context.
5581
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
5582
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
5583
+ @item @ref{C1006} New value is assigned to the problematic variable.
5584
+ @end itemize
5573
5585
 
5574
5586
  @subsection Since
5575
5587
 
@@ -5597,7 +5609,12 @@ int b = 10 / A; /* W0096 */
5597
5609
 
5598
5610
  @subsection Related message
5599
5611
 
5600
- None.
5612
+ @itemize
5613
+ @item @ref{C1000} Warning above is detected in the following context.
5614
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
5615
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
5616
+ @item @ref{C1006} New value is assigned to the problematic variable.
5617
+ @end itemize
5601
5618
 
5602
5619
  @subsection Since
5603
5620
 
@@ -5634,7 +5651,12 @@ int func(int a, int b)
5634
5651
 
5635
5652
  @subsection Related message
5636
5653
 
5637
- None.
5654
+ @itemize
5655
+ @item @ref{C1000} Warning above is detected in the following context.
5656
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
5657
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
5658
+ @item @ref{C1006} New value is assigned to the problematic variable.
5659
+ @end itemize
5638
5660
 
5639
5661
  @subsection Since
5640
5662
 
@@ -6037,6 +6059,10 @@ unsigned int func(unsigned int a)
6037
6059
 
6038
6060
  @itemize
6039
6061
  @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit.
6062
+ @item @ref{C1000} Warning above is detected in the following context.
6063
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
6064
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
6065
+ @item @ref{C1006} New value is assigned to the problematic variable.
6040
6066
  @end itemize
6041
6067
 
6042
6068
  @subsection Since
@@ -6070,6 +6096,10 @@ unsigned int func(unsigned int a)
6070
6096
 
6071
6097
  @itemize
6072
6098
  @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit.
6099
+ @item @ref{C1000} Warning above is detected in the following context.
6100
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
6101
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
6102
+ @item @ref{C1006} New value is assigned to the problematic variable.
6073
6103
  @end itemize
6074
6104
 
6075
6105
  @subsection Since
@@ -22134,7 +22164,13 @@ void func(int a, int *p)
22134
22164
 
22135
22165
  @subsection Related message
22136
22166
 
22137
- None.
22167
+ @itemize
22168
+ @item @ref{C1000} Warning above is detected in the following context.
22169
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22170
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22171
+ @item @ref{C1004} NULL value is assigned to the the problematic variable.
22172
+ @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable.
22173
+ @end itemize
22138
22174
 
22139
22175
  @subsection Since
22140
22176
 
@@ -22169,7 +22205,13 @@ void func(int a, int *p)
22169
22205
 
22170
22206
  @subsection Related message
22171
22207
 
22172
- None.
22208
+ @itemize
22209
+ @item @ref{C1000} Warning above is detected in the following context.
22210
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22211
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22212
+ @item @ref{C1004} NULL value is assigned to the the problematic variable.
22213
+ @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable.
22214
+ @end itemize
22173
22215
 
22174
22216
  @subsection Since
22175
22217
 
@@ -22203,7 +22245,13 @@ int *func(int *p)
22203
22245
 
22204
22246
  @subsection Related message
22205
22247
 
22206
- None.
22248
+ @itemize
22249
+ @item @ref{C1000} Warning above is detected in the following context.
22250
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22251
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22252
+ @item @ref{C1004} NULL value is assigned to the the problematic variable.
22253
+ @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable.
22254
+ @end itemize
22207
22255
 
22208
22256
  @subsection Since
22209
22257
 
@@ -22238,7 +22286,13 @@ int *func(int *p)
22238
22286
 
22239
22287
  @subsection Related message
22240
22288
 
22241
- None.
22289
+ @itemize
22290
+ @item @ref{C1000} Warning above is detected in the following context.
22291
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22292
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22293
+ @item @ref{C1004} NULL value is assigned to the the problematic variable.
22294
+ @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable.
22295
+ @end itemize
22242
22296
 
22243
22297
  @subsection Since
22244
22298
 
@@ -22703,6 +22757,10 @@ if(a > 0) { /* W0459 */
22703
22757
  @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated.
22704
22758
  @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
22705
22759
  @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function.
22760
+ @item @ref{C1000} Warning above is detected in the following context.
22761
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22762
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22763
+ @item @ref{C1003} The problematic variable is defined here without initializer.
22706
22764
  @end itemize
22707
22765
 
22708
22766
  @subsection Since
@@ -22743,6 +22801,10 @@ void func(int a)
22743
22801
  @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
22744
22802
  @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
22745
22803
  @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function.
22804
+ @item @ref{C1000} Warning above is detected in the following context.
22805
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22806
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22807
+ @item @ref{C1003} The problematic variable is defined here without initializer.
22746
22808
  @end itemize
22747
22809
 
22748
22810
  @subsection Since
@@ -22780,6 +22842,10 @@ void func2(int a)
22780
22842
  @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
22781
22843
  @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated.
22782
22844
  @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function.
22845
+ @item @ref{C1000} Warning above is detected in the following context.
22846
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22847
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22848
+ @item @ref{C1003} The problematic variable is defined here without initializer.
22783
22849
  @end itemize
22784
22850
 
22785
22851
  @subsection Since
@@ -22821,6 +22887,10 @@ int func2(int a)
22821
22887
  @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
22822
22888
  @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated.
22823
22889
  @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
22890
+ @item @ref{C1000} Warning above is detected in the following context.
22891
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
22892
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
22893
+ @item @ref{C1003} The problematic variable is defined here without initializer.
22824
22894
  @end itemize
22825
22895
 
22826
22896
  @subsection Since
@@ -24654,6 +24724,10 @@ int b = -5 << 1; /* W0568 */
24654
24724
  @itemize
24655
24725
  @item @ref{W0569} The result of left shift operation against the signed expression value is undefined.
24656
24726
  @item @ref{W0570} This signed left shift operation may make undefined value.
24727
+ @item @ref{C1000} Warning above is detected in the following context.
24728
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
24729
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
24730
+ @item @ref{C1006} New value is assigned to the problematic variable.
24657
24731
  @end itemize
24658
24732
 
24659
24733
  @subsection Since
@@ -24694,6 +24768,10 @@ int func(int a)
24694
24768
  @itemize
24695
24769
  @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined.
24696
24770
  @item @ref{W0570} This signed left shift operation may make undefined value.
24771
+ @item @ref{C1000} Warning above is detected in the following context.
24772
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
24773
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
24774
+ @item @ref{C1006} New value is assigned to the problematic variable.
24697
24775
  @end itemize
24698
24776
 
24699
24777
  @subsection Since
@@ -24734,6 +24812,10 @@ int func(int a)
24734
24812
  @itemize
24735
24813
  @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined.
24736
24814
  @item @ref{W0569} The result of left shift operation against the signed expression value is undefined.
24815
+ @item @ref{C1000} Warning above is detected in the following context.
24816
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
24817
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
24818
+ @item @ref{C1006} New value is assigned to the problematic variable.
24737
24819
  @end itemize
24738
24820
 
24739
24821
  @subsection Since
@@ -25674,6 +25756,10 @@ void func(int a)
25674
25756
 
25675
25757
  @itemize
25676
25758
  @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type.
25759
+ @item @ref{C1000} Warning above is detected in the following context.
25760
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
25761
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
25762
+ @item @ref{C1006} New value is assigned to the problematic variable.
25677
25763
  @end itemize
25678
25764
 
25679
25765
  @subsection Since
@@ -25709,6 +25795,10 @@ void fuu(int a)
25709
25795
 
25710
25796
  @itemize
25711
25797
  @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type.
25798
+ @item @ref{C1000} Warning above is detected in the following context.
25799
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
25800
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
25801
+ @item @ref{C1006} New value is assigned to the problematic variable.
25712
25802
  @end itemize
25713
25803
 
25714
25804
  @subsection Since
@@ -29368,7 +29458,12 @@ void func(unsigned int a)
29368
29458
 
29369
29459
  @subsection Related message
29370
29460
 
29371
- None.
29461
+ @itemize
29462
+ @item @ref{C1000} Warning above is detected in the following context.
29463
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
29464
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
29465
+ @item @ref{C1006} New value is assigned to the problematic variable.
29466
+ @end itemize
29372
29467
 
29373
29468
  @subsection Since
29374
29469
 
@@ -29400,7 +29495,12 @@ int foo(void)
29400
29495
 
29401
29496
  @subsection Related message
29402
29497
 
29403
- None.
29498
+ @itemize
29499
+ @item @ref{C1000} Warning above is detected in the following context.
29500
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
29501
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
29502
+ @item @ref{C1006} New value is assigned to the problematic variable.
29503
+ @end itemize
29404
29504
 
29405
29505
  @subsection Since
29406
29506
 
@@ -29756,7 +29856,12 @@ signed char sc4 = (signed char) -129.5; /* W0720 */
29756
29856
 
29757
29857
  @subsection Related message
29758
29858
 
29759
- None.
29859
+ @itemize
29860
+ @item @ref{C1000} Warning above is detected in the following context.
29861
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
29862
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
29863
+ @item @ref{C1006} New value is assigned to the problematic variable.
29864
+ @end itemize
29760
29865
 
29761
29866
  @subsection Since
29762
29867
 
@@ -30583,7 +30688,12 @@ void func(unsigned int a)
30583
30688
 
30584
30689
  @subsection Related message
30585
30690
 
30586
- None.
30691
+ @itemize
30692
+ @item @ref{C1000} Warning above is detected in the following context.
30693
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
30694
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
30695
+ @item @ref{C1006} New value is assigned to the problematic variable.
30696
+ @end itemize
30587
30697
 
30588
30698
  @subsection Since
30589
30699
 
@@ -34128,6 +34238,10 @@ void func(unsigned int ui)
34128
34238
  @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type.
34129
34239
  @item @ref{W1051} The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow.
34130
34240
  @item @ref{W1052} The result of unsigned arithmetic expression typed `%s' can be going around by overflow.
34241
+ @item @ref{C1000} Warning above is detected in the following context.
34242
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
34243
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
34244
+ @item @ref{C1006} New value is assigned to the problematic variable.
34131
34245
  @end itemize
34132
34246
 
34133
34247
  @subsection Since
@@ -34174,6 +34288,10 @@ void func(unsigned int ui)
34174
34288
  @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
34175
34289
  @item @ref{W1051} The result of unsigned arithmetic expression typed `%s' is going around 0 by overflow.
34176
34290
  @item @ref{W1052} The result of unsigned arithmetic expression typed `%s' can be going around by overflow.
34291
+ @item @ref{C1000} Warning above is detected in the following context.
34292
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
34293
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
34294
+ @item @ref{C1006} New value is assigned to the problematic variable.
34177
34295
  @end itemize
34178
34296
 
34179
34297
  @subsection Since
@@ -35393,6 +35511,433 @@ int very_long_long_long_long_long_long_long_identifier_2 = 1; /* W0052 */
35393
35511
 
35394
35512
  1.0.0
35395
35513
 
35514
+ @node C1000
35515
+ @section C1000
35516
+ @cindex C1000
35517
+
35518
+ @subsection Message body
35519
+
35520
+ Warning above is detected in the following context.
35521
+
35522
+ @subsection Content
35523
+
35524
+ This message indicates that the above @ref{W0093,W0093}, @ref{W0096,W0096},
35525
+ @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0421,W0421},
35526
+ @ref{W0422,W0422}, @ref{W0423,W0423}, @ref{W0424,W0424}, @ref{W0459,W0459},
35527
+ @ref{W0460,W0460}, @ref{W0461,W0461}, @ref{W0462,W0462}, @ref{W0568,W0568},
35528
+ @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608},
35529
+ @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745},
35530
+ @ref{W1049,W1049} and @ref{W1050,W1050} warnings are detected in the context
35531
+ described by the following messages.
35532
+
35533
+ @subsection Sample code
35534
+
35535
+ @verbatim
35536
+ 1: int foo(int i)
35537
+ 2: {
35538
+ 3: int j; /* C1003 */
35539
+ 4:
35540
+ 5: if (i < 0) { /* C1001 */
35541
+ 6: if (i < -10) { /* C1002 */
35542
+ 7: j = 2;
35543
+ 8: }
35544
+ 9: else if (i < -5) { /* C1002 */
35545
+ 10: j = 3;
35546
+ 11: }
35547
+ 12: }
35548
+ 13: else {
35549
+ 14: j = 1;
35550
+ 15: }
35551
+ 16:
35552
+ 17: return j; /* W0460 */
35553
+ 18: }
35554
+
35555
+ a.c:17:12:warning:c_builtin:W0460:UNC:X99:A value of variable `j' wouldn't set when this expression is evaluated.
35556
+ :::context:c_builtin:C1000:INF:X99:Warning above is detected in the following context.
35557
+ a.c:3:9:context:c_builtin:C1003:INF:X99:The problematic variable is defined here without initializer.
35558
+ a.c:5:11:context:c_builtin:C1001:INF:X99:This controlling-expression is evaluated to be true.
35559
+ a.c:6:15:context:c_builtin:C1002:INF:X99:This controlling-expression is evaluated to be false.
35560
+ a.c:9:20:context:c_builtin:C1002:INF:X99:This controlling-expression is evaluated to be false.
35561
+ @end verbatim
35562
+
35563
+ @subsection Related message
35564
+
35565
+ @itemize
35566
+ @item @ref{C1001} This controlling-expression is evaluated to be true.
35567
+ @item @ref{C1002} This controlling-expression is evaluated to be false.
35568
+ @item @ref{C1003} The problematic variable is defined here without initializer.
35569
+ @item @ref{C1004} NULL value is assigned to the the problematic variable.
35570
+ @item @ref{C1005} A value possibly be NULL is assigned to the problematic variable.
35571
+ @item @ref{C1006} New value is assigned to the problematic variable.
35572
+ @end itemize
35573
+
35574
+ @subsection Since
35575
+
35576
+ 3.2.0
35577
+
35578
+ @node C1001
35579
+ @section C1001
35580
+ @cindex C1001
35581
+
35582
+ @subsection Message body
35583
+
35584
+ This controlling-expression is evaluated to be true.
35585
+
35586
+ @subsection Content
35587
+
35588
+ This message indicates that the controlling-expression was evaluated as true in
35589
+ the context of detecting @ref{W0093,W0093}, @ref{W0096,W0096},
35590
+ @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0421,W0421},
35591
+ @ref{W0422,W0422}, @ref{W0423,W0423}, @ref{W0424,W0424}, @ref{W0459,W0459},
35592
+ @ref{W0460,W0460}, @ref{W0461,W0461}, @ref{W0462,W0462}, @ref{W0568,W0568},
35593
+ @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608},
35594
+ @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745},
35595
+ @ref{W1049,W1049} and @ref{W1050,W1050} warnings.
35596
+
35597
+ @subsection Sample code
35598
+
35599
+ @verbatim
35600
+ int foo(int i)
35601
+ {
35602
+ int j; /* C1003 */
35603
+
35604
+ if (i < 0) { /* C1001 */
35605
+ if (i < -10) { /* C1002 */
35606
+ j = 2;
35607
+ }
35608
+ else if (i < -5) { /* C1002 */
35609
+ j = 3;
35610
+ }
35611
+ }
35612
+ else {
35613
+ j = 1;
35614
+ }
35615
+
35616
+ return j; /* W0460 */
35617
+ }
35618
+ @end verbatim
35619
+
35620
+ @subsection Related message
35621
+
35622
+ @itemize
35623
+ @item @ref{W0093} This expression may cause division-by-zero.
35624
+ @item @ref{W0096} It divided by a constant expression which definitely zero.
35625
+ @item @ref{W0097} This expression must cause division-by-zero.
35626
+ @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit.
35627
+ @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit.
35628
+ @item @ref{W0421} Value of the dereferencing pointer must be NULL.
35629
+ @item @ref{W0422} Value of the dereferencing pointer may be NULL.
35630
+ @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL.
35631
+ @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL.
35632
+ @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
35633
+ @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated.
35634
+ @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
35635
+ @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function.
35636
+ @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined.
35637
+ @item @ref{W0569} The result of left shift operation against the signed expression value is undefined.
35638
+ @item @ref{W0570} This signed left shift operation may make undefined value.
35639
+ @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type.
35640
+ @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type.
35641
+ @item @ref{W0705} This non-constant array subscript may cause out-of-range access.
35642
+ @item @ref{W0707} This constant array subscript must cause out-of-range access.
35643
+ @item @ref{W0720} The value with floating-point type doesn't fit in the range of converted type.
35644
+ @item @ref{W0745} This non-constant array subscript may cause out-of-range access.
35645
+ @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
35646
+ @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type.
35647
+ @end itemize
35648
+
35649
+ @subsection Since
35650
+
35651
+ 3.2.0
35652
+
35653
+ @node C1002
35654
+ @section C1002
35655
+ @cindex C1002
35656
+
35657
+ @subsection Message body
35658
+
35659
+ This controlling-expression is evaluated to be false.
35660
+
35661
+ @subsection Content
35662
+
35663
+ This message indicates that the controlling-expression was evaluated as false
35664
+ in the context of detecting @ref{W0093,W0093}, @ref{W0096,W0096},
35665
+ @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0421,W0421},
35666
+ @ref{W0422,W0422}, @ref{W0423,W0423}, @ref{W0424,W0424}, @ref{W0459,W0459},
35667
+ @ref{W0460,W0460}, @ref{W0461,W0461}, @ref{W0462,W0462}, @ref{W0568,W0568},
35668
+ @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608},
35669
+ @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745},
35670
+ @ref{W1049,W1049} and @ref{W1050,W1050} warnings.
35671
+
35672
+ @subsection Sample code
35673
+
35674
+ @verbatim
35675
+ int foo(int i)
35676
+ {
35677
+ int j; /* C1003 */
35678
+
35679
+ if (i < 0) { /* C1001 */
35680
+ if (i < -10) { /* C1002 */
35681
+ j = 2;
35682
+ }
35683
+ else if (i < -5) { /* C1002 */
35684
+ j = 3;
35685
+ }
35686
+ }
35687
+ else {
35688
+ j = 1;
35689
+ }
35690
+
35691
+ return j; /* W0460 */
35692
+ }
35693
+ @end verbatim
35694
+
35695
+ @subsection Related message
35696
+
35697
+ @itemize
35698
+ @item @ref{W0093} This expression may cause division-by-zero.
35699
+ @item @ref{W0096} It divided by a constant expression which definitely zero.
35700
+ @item @ref{W0097} This expression must cause division-by-zero.
35701
+ @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit.
35702
+ @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit.
35703
+ @item @ref{W0421} Value of the dereferencing pointer must be NULL.
35704
+ @item @ref{W0422} Value of the dereferencing pointer may be NULL.
35705
+ @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL.
35706
+ @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL.
35707
+ @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
35708
+ @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated.
35709
+ @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
35710
+ @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function.
35711
+ @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined.
35712
+ @item @ref{W0569} The result of left shift operation against the signed expression value is undefined.
35713
+ @item @ref{W0570} This signed left shift operation may make undefined value.
35714
+ @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type.
35715
+ @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type.
35716
+ @item @ref{W0705} This non-constant array subscript may cause out-of-range access.
35717
+ @item @ref{W0707} This constant array subscript must cause out-of-range access.
35718
+ @item @ref{W0720} The value with floating-point type doesn't fit in the range of converted type.
35719
+ @item @ref{W0745} This non-constant array subscript may cause out-of-range access.
35720
+ @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
35721
+ @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type.
35722
+ @end itemize
35723
+
35724
+ @subsection Since
35725
+
35726
+ 3.2.0
35727
+
35728
+ @node C1003
35729
+ @section C1003
35730
+ @cindex C1003
35731
+
35732
+ @subsection Message body
35733
+
35734
+ The problematic variable is defined here without initializer.
35735
+
35736
+ @subsection Content
35737
+
35738
+ This message indicates where the problematic variable is defined in the context
35739
+ of detecting @ref{W0459,W0459}, @ref{W0460,W0460}, @ref{W0461,W0461} and
35740
+ @ref{W0462,W0462} warnings.
35741
+
35742
+ @subsection Sample code
35743
+
35744
+ @verbatim
35745
+ int foo(int i)
35746
+ {
35747
+ int j; /* C1003 */
35748
+
35749
+ if (i < 0) { /* C1001 */
35750
+ if (i < -10) { /* C1002 */
35751
+ j = 2;
35752
+ }
35753
+ else if (i < -5) { /* C1002 */
35754
+ j = 3;
35755
+ }
35756
+ }
35757
+ else {
35758
+ j = 1;
35759
+ }
35760
+
35761
+ return j; /* W0460 */
35762
+ }
35763
+ @end verbatim
35764
+
35765
+ @subsection Related message
35766
+
35767
+ @itemize
35768
+ @item @ref{W0459} A value of variable `%s' doesn't set when this expression is evaluated. This program is danger.
35769
+ @item @ref{W0460} A value of variable `%s' wouldn't set when this expression is evaluated.
35770
+ @item @ref{W0461} A pointer which points the undetermined variable is used for the actual argument of the function. This program is danger.
35771
+ @item @ref{W0462} A pointer which the value will probably not set is used for the actual argument of the function.
35772
+ @end itemize
35773
+
35774
+ @subsection Since
35775
+
35776
+ 3.2.0
35777
+
35778
+ @node C1004
35779
+ @section C1004
35780
+ @cindex C1004
35781
+
35782
+ @subsection Message body
35783
+
35784
+ NULL value is assigned to the the problematic variable.
35785
+
35786
+ @subsection Content
35787
+
35788
+ This message indicates where the NULL value was assigned to the problematic
35789
+ variable in the context of detecting @ref{W0421,W0421}, @ref{W0422,W0422},
35790
+ @ref{W0423,W0423} and @ref{W0424,W0424} warnings.
35791
+
35792
+ @subsection Sample code
35793
+
35794
+ @verbatim
35795
+ extern int *bar(void);
35796
+ extern int *baz(void);
35797
+
35798
+ void foo(int i)
35799
+ {
35800
+ int *p = NULL; /* C1004 */
35801
+
35802
+ if (i < 0) { /* C1002 */
35803
+ p = bar();
35804
+ if (!p) {
35805
+ return;
35806
+ }
35807
+ }
35808
+ else {
35809
+ p = baz(); /* C1005 */
35810
+ }
35811
+
35812
+ *p += 2; /* W0422 */
35813
+ }
35814
+ @end verbatim
35815
+
35816
+ @subsection Related message
35817
+
35818
+ @itemize
35819
+ @item @ref{W0421} Value of the dereferencing pointer must be NULL.
35820
+ @item @ref{W0422} Value of the dereferencing pointer may be NULL.
35821
+ @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL.
35822
+ @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL.
35823
+ @end itemize
35824
+
35825
+ @subsection Since
35826
+
35827
+ 3.2.0
35828
+
35829
+ @node C1005
35830
+ @section C1005
35831
+ @cindex C1005
35832
+
35833
+ @subsection Message body
35834
+
35835
+ A value possibly be NULL is assigned to the problematic variable.
35836
+
35837
+ @subsection Content
35838
+
35839
+ This message indicates where the value possibly be NULL was assigned to the
35840
+ problematic variable in the context of detecting @ref{W0421,W0421},
35841
+ @ref{W0422,W0422}, @ref{W0423,W0423} and @ref{W0424,W0424} warnings.
35842
+
35843
+ @subsection Sample code
35844
+
35845
+ @verbatim
35846
+ extern int *bar(void);
35847
+ extern int *baz(void);
35848
+
35849
+ void foo(int i)
35850
+ {
35851
+ int *p = NULL; /* C1004 */
35852
+
35853
+ if (i < 0) { /* C1002 */
35854
+ p = bar();
35855
+ if (!p) {
35856
+ return;
35857
+ }
35858
+ }
35859
+ else {
35860
+ p = baz(); /* C1005 */
35861
+ }
35862
+
35863
+ *p += 2; /* W0422 */
35864
+ }
35865
+ @end verbatim
35866
+
35867
+ @subsection Related message
35868
+
35869
+ @itemize
35870
+ @item @ref{W0421} Value of the dereferencing pointer must be NULL.
35871
+ @item @ref{W0422} Value of the dereferencing pointer may be NULL.
35872
+ @item @ref{W0423} Arithmetic operation is being made to the pointer which its value will be NULL.
35873
+ @item @ref{W0424} Arithmetic operation is being made to the pointer which its value might be NULL.
35874
+ @end itemize
35875
+
35876
+ @subsection Since
35877
+
35878
+ 3.2.0
35879
+
35880
+ @node C1006
35881
+ @section C1006
35882
+ @cindex C1006
35883
+
35884
+ @subsection Message body
35885
+
35886
+ New value is assigned to the problematic variable.
35887
+
35888
+ @subsection Content
35889
+
35890
+ This message indicates where a value was assigned to the problematic variable
35891
+ in the context of detecting @ref{W0093,W0093}, @ref{W0096,W0096},
35892
+ @ref{W0097,W0097}, @ref{W0115,W0115}, @ref{W0116,W0116}, @ref{W0568,W0568},
35893
+ @ref{W0569,W0569}, @ref{W0570,W0570}, @ref{W0607,W0607}, @ref{W0608,W0608},
35894
+ @ref{W0705,W0705}, @ref{W0707,W0707}, @ref{W0720,W0720}, @ref{W0745,W0745},
35895
+ @ref{W1049,W1049} and @ref{W1050,W1050} warnings.
35896
+
35897
+ @subsection Sample code
35898
+
35899
+ @verbatim
35900
+ int foo(int i)
35901
+ {
35902
+ int j = 0; /* C1006 */
35903
+
35904
+ if (i < 0) { /* C1002 */
35905
+ j = -i;
35906
+ }
35907
+ else if (i > 0) { /* C1002 */
35908
+ j = i;
35909
+ }
35910
+
35911
+ return 5 / j; /* W0093 */
35912
+ }
35913
+ @end verbatim
35914
+
35915
+ @subsection Related message
35916
+
35917
+ @itemize
35918
+ @item @ref{W0093} This expression may cause division-by-zero.
35919
+ @item @ref{W0096} It divided by a constant expression which definitely zero.
35920
+ @item @ref{W0097} This expression must cause division-by-zero.
35921
+ @item @ref{W0115} Unsigned left shift operator `<<' drop the high-order bit.
35922
+ @item @ref{W0116} Unsigned left shift operator `<<' can be drop high-order bit.
35923
+ @item @ref{W0568} The result of left shift operation against the signed constant expression value is undefined.
35924
+ @item @ref{W0569} The result of left shift operation against the signed expression value is undefined.
35925
+ @item @ref{W0570} This signed left shift operation may make undefined value.
35926
+ @item @ref{W0607} An integer expression which the value which the value is minus converted to unsigned type.
35927
+ @item @ref{W0608} An integer expression which the value might be minus converted to unsigned type.
35928
+ @item @ref{W0705} This non-constant array subscript may cause out-of-range access.
35929
+ @item @ref{W0707} This constant array subscript must cause out-of-range access.
35930
+ @item @ref{W0720} The value with floating-point type doesn't fit in the range of converted type.
35931
+ @item @ref{W0745} This non-constant array subscript may cause out-of-range access.
35932
+ @item @ref{W1049} The result of conversion to signed integer type in integer expression might not be expressed by a signed type.
35933
+ @item @ref{W1050} The result of conversion to signed integer type in integer expression is not express by a signed type.
35934
+ @end itemize
35935
+
35936
+ @subsection Since
35937
+
35938
+ 3.2.0
35939
+
35940
+
35396
35941
  @node Metrics
35397
35942
  @chapter Metrics List
35398
35943