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_ja.info
3
3
  @documentlanguage ja
4
4
  @documentencoding utf-8
5
- @settitle AdLint 3.0.10 利用者ガイド
5
+ @settitle AdLint 3.2.0 利用者ガイド
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
@@ -3180,6 +3180,13 @@ context_line
3180
3180
  * W9002::ファイルの末尾に改行文字がありません。
3181
3181
  * W9003::暗黙的に `%s' 型のオブジェクトが `%s' 型のオブジェクトに変換されています。
3182
3182
  * C0001::この識別名 `%s' で警告を検知しました。
3183
+ * C1000::次の実行パスで警告を検知しました。
3184
+ * C1001::この制御式を真として評価しました。
3185
+ * C1002::この制御式を偽として評価しました。
3186
+ * C1003::ここで該当変数が初期値を指定せずに定義されています。
3187
+ * C1004::ここで該当変数に NULL の値を割り当てました。
3188
+ * C1005::ここで該当変数に NULL の可能性がある値を割り当てました。
3189
+ * C1006::ここで該当変数に値を割り当てました。
3183
3190
  @end menu
3184
3191
 
3185
3192
  @node X0001
@@ -5676,7 +5683,12 @@ int func(int a, int b)
5676
5683
 
5677
5684
  @subsection 関連メッセージ
5678
5685
 
5679
- なし。
5686
+ @itemize
5687
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
5688
+ @item @ref{C1001} この制御式を真として評価しました。
5689
+ @item @ref{C1002} この制御式を偽として評価しました。
5690
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
5691
+ @end itemize
5680
5692
 
5681
5693
  @subsection 対応バージョン
5682
5694
 
@@ -5704,7 +5716,12 @@ int b = 10 / A; /* W0096 */
5704
5716
 
5705
5717
  @subsection 関連メッセージ
5706
5718
 
5707
- なし。
5719
+ @itemize
5720
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
5721
+ @item @ref{C1001} この制御式を真として評価しました。
5722
+ @item @ref{C1002} この制御式を偽として評価しました。
5723
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
5724
+ @end itemize
5708
5725
 
5709
5726
  @subsection 対応バージョン
5710
5727
 
@@ -5741,7 +5758,12 @@ int func(int a, int b)
5741
5758
 
5742
5759
  @subsection 関連メッセージ
5743
5760
 
5744
- なし。
5761
+ @itemize
5762
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
5763
+ @item @ref{C1001} この制御式を真として評価しました。
5764
+ @item @ref{C1002} この制御式を偽として評価しました。
5765
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
5766
+ @end itemize
5745
5767
 
5746
5768
  @subsection 対応バージョン
5747
5769
 
@@ -6159,6 +6181,10 @@ unsigned int func(unsigned int a)
6159
6181
 
6160
6182
  @itemize
6161
6183
  @item @ref{W0116} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てる恐れがあります。
6184
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
6185
+ @item @ref{C1001} この制御式を真として評価しました。
6186
+ @item @ref{C1002} この制御式を偽として評価しました。
6187
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
6162
6188
  @end itemize
6163
6189
 
6164
6190
  @subsection 対応バージョン
@@ -6192,6 +6218,10 @@ unsigned int func(unsigned int a)
6192
6218
 
6193
6219
  @itemize
6194
6220
  @item @ref{W0115} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てます。
6221
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
6222
+ @item @ref{C1001} この制御式を真として評価しました。
6223
+ @item @ref{C1002} この制御式を偽として評価しました。
6224
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
6195
6225
  @end itemize
6196
6226
 
6197
6227
  @subsection 対応バージョン
@@ -22385,7 +22415,13 @@ void func(int a, int *p)
22385
22415
 
22386
22416
  @subsection 関連メッセージ
22387
22417
 
22388
- なし。
22418
+ @itemize
22419
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
22420
+ @item @ref{C1001} この制御式を真として評価しました。
22421
+ @item @ref{C1002} この制御式を偽として評価しました。
22422
+ @item @ref{C1004} ここで該当変数に NULL の値を割り当てました。
22423
+ @item @ref{C1005} ここで該当変数に NULL の可能性がある値を割り当てました。
22424
+ @end itemize
22389
22425
 
22390
22426
  @subsection 対応バージョン
22391
22427
 
@@ -22420,7 +22456,13 @@ void func(int a, int *p)
22420
22456
 
22421
22457
  @subsection 関連メッセージ
22422
22458
 
22423
- なし。
22459
+ @itemize
22460
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
22461
+ @item @ref{C1001} この制御式を真として評価しました。
22462
+ @item @ref{C1002} この制御式を偽として評価しました。
22463
+ @item @ref{C1004} ここで該当変数に NULL の値を割り当てました。
22464
+ @item @ref{C1005} ここで該当変数に NULL の可能性がある値を割り当てました。
22465
+ @end itemize
22424
22466
 
22425
22467
  @subsection 対応バージョン
22426
22468
 
@@ -22454,7 +22496,13 @@ int *func(int *p)
22454
22496
 
22455
22497
  @subsection 関連メッセージ
22456
22498
 
22457
- なし。
22499
+ @itemize
22500
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
22501
+ @item @ref{C1001} この制御式を真として評価しました。
22502
+ @item @ref{C1002} この制御式を偽として評価しました。
22503
+ @item @ref{C1004} ここで該当変数に NULL の値を割り当てました。
22504
+ @item @ref{C1005} ここで該当変数に NULL の可能性がある値を割り当てました。
22505
+ @end itemize
22458
22506
 
22459
22507
  @subsection 対応バージョン
22460
22508
 
@@ -22489,7 +22537,13 @@ int *func(int *p)
22489
22537
 
22490
22538
  @subsection 関連メッセージ
22491
22539
 
22492
- なし。
22540
+ @itemize
22541
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
22542
+ @item @ref{C1001} この制御式を真として評価しました。
22543
+ @item @ref{C1002} この制御式を偽として評価しました。
22544
+ @item @ref{C1004} ここで該当変数に NULL の値を割り当てました。
22545
+ @item @ref{C1005} ここで該当変数に NULL の可能性がある値を割り当てました。
22546
+ @end itemize
22493
22547
 
22494
22548
  @subsection 対応バージョン
22495
22549
 
@@ -22957,6 +23011,10 @@ if(a > 0) { /* W0459 */
22957
23011
  @item @ref{W0460} 変数 `%s' の値は、この式の評価時点では設定されていないことがあります。
22958
23012
  @item @ref{W0461} 値が定まっていない変数を指すポインタを関数の実引数として使っています。このプログラムは危険です。
22959
23013
  @item @ref{W0462} 値が設定されていないことがありうる変数を指すポインタを関数の実引数として使っています。
23014
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
23015
+ @item @ref{C1001} この制御式を真として評価しました。
23016
+ @item @ref{C1002} この制御式を偽として評価しました。
23017
+ @item @ref{C1003} ここで該当変数が初期値を指定せずに定義されています。
22960
23018
  @end itemize
22961
23019
 
22962
23020
  @subsection 対応バージョン
@@ -22998,6 +23056,10 @@ void func(int a)
22998
23056
  @item @ref{W0459} 変数 `%s' の値は、この式の評価時点では設定されていません。このプログラムは危険です。
22999
23057
  @item @ref{W0461} 値が定まっていない変数を指すポインタを関数の実引数として使っています。このプログラムは危険です。
23000
23058
  @item @ref{W0462} 値が設定されていないことがありうる変数を指すポインタを関数の実引数として使っています。
23059
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
23060
+ @item @ref{C1001} この制御式を真として評価しました。
23061
+ @item @ref{C1002} この制御式を偽として評価しました。
23062
+ @item @ref{C1003} ここで該当変数が初期値を指定せずに定義されています。
23001
23063
  @end itemize
23002
23064
 
23003
23065
  @subsection 対応バージョン
@@ -23037,6 +23099,10 @@ void func2(int a)
23037
23099
  @item @ref{W0459} 変数 `%s' の値は、この式の評価時点では設定されていません。このプログラムは危険です。
23038
23100
  @item @ref{W0460} 変数 `%s' の値は、この式の評価時点では設定されていないことがあります。
23039
23101
  @item @ref{W0462} 値が設定されていないことがありうる変数を指すポインタを関数の実引数として使っています。
23102
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
23103
+ @item @ref{C1001} この制御式を真として評価しました。
23104
+ @item @ref{C1002} この制御式を偽として評価しました。
23105
+ @item @ref{C1003} ここで該当変数が初期値を指定せずに定義されています。
23040
23106
  @end itemize
23041
23107
 
23042
23108
  @subsection 対応バージョン
@@ -23079,6 +23145,10 @@ int func2(int a)
23079
23145
  @item @ref{W0459} 変数 `%s' の値は、この式の評価時点では設定されていません。このプログラムは危険です。
23080
23146
  @item @ref{W0460} 変数 `%s' の値は、この式の評価時点では設定されていないことがあります。
23081
23147
  @item @ref{W0461} 値が定まっていない変数を指すポインタを関数の実引数として使っています。このプログラムは危険です。
23148
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
23149
+ @item @ref{C1001} この制御式を真として評価しました。
23150
+ @item @ref{C1002} この制御式を偽として評価しました。
23151
+ @item @ref{C1003} ここで該当変数が初期値を指定せずに定義されています。
23082
23152
  @end itemize
23083
23153
 
23084
23154
  @subsection 対応バージョン
@@ -24943,6 +25013,10 @@ int b = -5 << 1; /* W0568 */
24943
25013
  @itemize
24944
25014
  @item @ref{W0569} 符号付きの式の値を左シフト演算した結果は、未定義になります。
24945
25015
  @item @ref{W0570} 符号付きの式の値を左シフト演算した結果は、未定義になることがあります。
25016
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
25017
+ @item @ref{C1001} この制御式を真として評価しました。
25018
+ @item @ref{C1002} この制御式を偽として評価しました。
25019
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
24946
25020
  @end itemize
24947
25021
 
24948
25022
  @subsection 対応バージョン
@@ -24983,6 +25057,10 @@ int func(int a)
24983
25057
  @itemize
24984
25058
  @item @ref{W0568} 符号付き定数式の値を左シフト演算した結果は、未定義になります。
24985
25059
  @item @ref{W0570} 符号付きの式の値を左シフト演算した結果は、未定義になることがあります。
25060
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
25061
+ @item @ref{C1001} この制御式を真として評価しました。
25062
+ @item @ref{C1002} この制御式を偽として評価しました。
25063
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
24986
25064
  @end itemize
24987
25065
 
24988
25066
  @subsection 対応バージョン
@@ -25023,6 +25101,10 @@ int func(int a)
25023
25101
  @itemize
25024
25102
  @item @ref{W0568} 符号付き定数式の値を左シフト演算した結果は、未定義になります。
25025
25103
  @item @ref{W0569} 符号付きの式の値を左シフト演算した結果は、未定義になります。
25104
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
25105
+ @item @ref{C1001} この制御式を真として評価しました。
25106
+ @item @ref{C1002} この制御式を偽として評価しました。
25107
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
25026
25108
  @end itemize
25027
25109
 
25028
25110
  @subsection 対応バージョン
@@ -25978,6 +26060,10 @@ void func(int a)
25978
26060
 
25979
26061
  @itemize
25980
26062
  @item @ref{W0608} 値が負になることがありうる整数式が符号無し型に変換されています。
26063
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
26064
+ @item @ref{C1001} この制御式を真として評価しました。
26065
+ @item @ref{C1002} この制御式を偽として評価しました。
26066
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
25981
26067
  @end itemize
25982
26068
 
25983
26069
  @subsection 対応バージョン
@@ -26014,6 +26100,10 @@ void fuu(int a)
26014
26100
 
26015
26101
  @itemize
26016
26102
  @item @ref{W0607} 値が負になる整数式が符号無し型に変換されています。
26103
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
26104
+ @item @ref{C1001} この制御式を真として評価しました。
26105
+ @item @ref{C1002} この制御式を偽として評価しました。
26106
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
26017
26107
  @end itemize
26018
26108
 
26019
26109
  @subsection 対応バージョン
@@ -29682,7 +29772,12 @@ void func(unsigned int a)
29682
29772
 
29683
29773
  @subsection 関連メッセージ
29684
29774
 
29685
- なし。
29775
+ @itemize
29776
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
29777
+ @item @ref{C1001} この制御式を真として評価しました。
29778
+ @item @ref{C1002} この制御式を偽として評価しました。
29779
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
29780
+ @end itemize
29686
29781
 
29687
29782
  @subsection 対応バージョン
29688
29783
 
@@ -29714,7 +29809,12 @@ int foo(void)
29714
29809
 
29715
29810
  @subsection 関連メッセージ
29716
29811
 
29717
- なし。
29812
+ @itemize
29813
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
29814
+ @item @ref{C1001} この制御式を真として評価しました。
29815
+ @item @ref{C1002} この制御式を偽として評価しました。
29816
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
29817
+ @end itemize
29718
29818
 
29719
29819
  @subsection 対応バージョン
29720
29820
 
@@ -30075,7 +30175,12 @@ signed char sc4 = (signed char) -129.5; /* W0720 */
30075
30175
 
30076
30176
  @subsection 関連メッセージ
30077
30177
 
30078
- なし。
30178
+ @itemize
30179
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
30180
+ @item @ref{C1001} この制御式を真として評価しました。
30181
+ @item @ref{C1002} この制御式を偽として評価しました。
30182
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
30183
+ @end itemize
30079
30184
 
30080
30185
  @subsection 対応バージョン
30081
30186
 
@@ -30912,7 +31017,12 @@ void func(unsigned int a)
30912
31017
 
30913
31018
  @subsection 関連メッセージ
30914
31019
 
30915
- なし。
31020
+ @itemize
31021
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
31022
+ @item @ref{C1001} この制御式を真として評価しました。
31023
+ @item @ref{C1002} この制御式を偽として評価しました。
31024
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
31025
+ @end itemize
30916
31026
 
30917
31027
  @subsection 対応バージョン
30918
31028
 
@@ -34510,6 +34620,10 @@ void func(unsigned int ui)
34510
34620
  @item @ref{W1050} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できません。
34511
34621
  @item @ref{W1051} 符号無し型 `%s' の算術演算結果は、桁あふれによって 0 を回り込みます。
34512
34622
  @item @ref{W1052} 符号無し型 `%s' の算術演算結果は、桁あふれによって 0 を回り込むことがあります。
34623
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
34624
+ @item @ref{C1001} この制御式を真として評価しました。
34625
+ @item @ref{C1002} この制御式を偽として評価しました。
34626
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
34513
34627
  @end itemize
34514
34628
 
34515
34629
  @subsection 対応バージョン
@@ -34557,6 +34671,10 @@ void func(unsigned int ui)
34557
34671
  @item @ref{W1049} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できないことがあります。
34558
34672
  @item @ref{W1051} 符号無し型 `%s' の算術演算結果は、桁あふれによって 0 を回り込みます。
34559
34673
  @item @ref{W1052} 符号無し型 `%s' の算術演算結果は、桁あふれによって 0 を回り込むことがあります。
34674
+ @item @ref{C1000} 次の実行パスで警告を検知しました。
34675
+ @item @ref{C1001} この制御式を真として評価しました。
34676
+ @item @ref{C1002} この制御式を偽として評価しました。
34677
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
34560
34678
  @end itemize
34561
34679
 
34562
34680
  @subsection 対応バージョン
@@ -35786,11 +35904,434 @@ int very_long_long_long_long_long_long_long_identifier_1 = 0; /* C0001 */
35786
35904
  @item @ref{W0052} 識別子名 `%s' が他の識別子名と、コンパイラ特性で指定された文字数の範囲内で区別できません。
35787
35905
  @end itemize
35788
35906
 
35789
-
35790
35907
  @subsection 対応バージョン
35791
35908
 
35792
35909
  1.0.0
35793
35910
 
35911
+ @node C1000
35912
+ @section C1000
35913
+ @cindex C1000
35914
+
35915
+ @subsection メッセージ本文
35916
+
35917
+ 次の実行パスで警告を検知しました。
35918
+
35919
+ @subsection 内容
35920
+
35921
+ @ref{W0093,W0093}、@ref{W0096,W0096}、@ref{W0097,W0097}、@ref{W0115,W0115}、
35922
+ @ref{W0116,W0116}、@ref{W0421,W0421}、@ref{W0422,W0422}、@ref{W0423,W0423}、
35923
+ @ref{W0424,W0424}、@ref{W0459,W0459}、@ref{W0460,W0460}、@ref{W0461,W0461}、
35924
+ @ref{W0462,W0462}、@ref{W0568,W0568}、@ref{W0569,W0569}、@ref{W0570,W0570}、
35925
+ @ref{W0607,W0607}、@ref{W0608,W0608}、@ref{W0705,W0705}、@ref{W0707,W0707}、
35926
+ @ref{W0720,W0720}、@ref{W0745,W0745}、@ref{W1049,W1049}、@ref{W1050,W1050}
35927
+ メッセージの直後に出力され、このメッセージの後に問題を検出した状況を補足するメ
35928
+ ッセージが続くことを示します。
35929
+
35930
+ @subsection サンプルコード
35931
+
35932
+ @verbatim
35933
+ 1: int foo(int i)
35934
+ 2: {
35935
+ 3: int j; /* C1003 */
35936
+ 4:
35937
+ 5: if (i < 0) { /* C1001 */
35938
+ 6: if (i < -10) { /* C1002 */
35939
+ 7: j = 2;
35940
+ 8: }
35941
+ 9: else if (i < -5) { /* C1002 */
35942
+ 10: j = 3;
35943
+ 11: }
35944
+ 12: }
35945
+ 13: else {
35946
+ 14: j = 1;
35947
+ 15: }
35948
+ 16:
35949
+ 17: return j; /* W0460 */
35950
+ 18: }
35951
+
35952
+ a.c:17:12:warning:c_builtin:W0460:UNC:X99:変数 `j' の値は、この式の評価時点では設定されていないことがあります。
35953
+ :::context:c_builtin:C1000:INF:X99:次の実行パスで警告を検知しました。
35954
+ a.c:3:9:context:c_builtin:C1003:INF:X99:ここで該当変数が初期値を指定せずに定義されています。
35955
+ a.c:5:11:context:c_builtin:C1001:INF:X99:この制御式を真として評価しました。
35956
+ a.c:6:15:context:c_builtin:C1002:INF:X99:この制御式を偽として評価しました。
35957
+ a.c:9:20:context:c_builtin:C1002:INF:X99:この制御式を偽として評価しました。
35958
+ @end verbatim
35959
+
35960
+ @subsection 関連メッセージ
35961
+
35962
+ @itemize
35963
+ @item @ref{C1001} この制御式を真として評価しました。
35964
+ @item @ref{C1002} この制御式を偽として評価しました。
35965
+ @item @ref{C1003} ここで該当変数が初期値を指定せずに定義されています。
35966
+ @item @ref{C1004} ここで該当変数に NULL の値を割り当てました。
35967
+ @item @ref{C1005} ここで該当変数に NULL の可能性がある値を割り当てました。
35968
+ @item @ref{C1006} ここで該当変数に値を割り当てました。
35969
+ @end itemize
35970
+
35971
+ @subsection 対応バージョン
35972
+
35973
+ 3.2.0
35974
+
35975
+ @node C1001
35976
+ @section C1001
35977
+ @cindex C1001
35978
+
35979
+ @subsection メッセージ本文
35980
+
35981
+ この制御式を真として評価しました。
35982
+
35983
+ @subsection 内容
35984
+
35985
+ @ref{W0093,W0093}、@ref{W0096,W0096}、@ref{W0097,W0097}、@ref{W0115,W0115}、
35986
+ @ref{W0116,W0116}、@ref{W0421,W0421}、@ref{W0422,W0422}、@ref{W0423,W0423}、
35987
+ @ref{W0424,W0424}、@ref{W0459,W0459}、@ref{W0460,W0460}、@ref{W0461,W0461}、
35988
+ @ref{W0462,W0462}、@ref{W0568,W0568}、@ref{W0569,W0569}、@ref{W0570,W0570}、
35989
+ @ref{W0607,W0607}、@ref{W0608,W0608}、@ref{W0705,W0705}、@ref{W0707,W0707}、
35990
+ @ref{W0720,W0720}、@ref{W0745,W0745}、@ref{W1049,W1049}、@ref{W1050,W1050}
35991
+ メッセージを検出した状況として、該当制御式を真と評価したことを示します。
35992
+
35993
+ @subsection サンプルコード
35994
+
35995
+ @verbatim
35996
+ int foo(int i)
35997
+ {
35998
+ int j; /* C1003 */
35999
+
36000
+ if (i < 0) { /* C1001 */
36001
+ if (i < -10) { /* C1002 */
36002
+ j = 2;
36003
+ }
36004
+ else if (i < -5) { /* C1002 */
36005
+ j = 3;
36006
+ }
36007
+ }
36008
+ else {
36009
+ j = 1;
36010
+ }
36011
+
36012
+ return j; /* W0460 */
36013
+ }
36014
+ @end verbatim
36015
+
36016
+ @subsection 関連メッセージ
36017
+
36018
+ @itemize
36019
+ @item @ref{W0093} ゼロで除算される恐れがあります。
36020
+ @item @ref{W0096} ゼロになる定数式で除算しています。
36021
+ @item @ref{W0097} ゼロの値で除算しています。
36022
+ @item @ref{W0115} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てます。
36023
+ @item @ref{W0116} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てる恐れがあります。
36024
+ @item @ref{W0421} 値が NULL になるポインタに対して間接参照が行われています。
36025
+ @item @ref{W0422} 値が NULL になることがあるポインタに対して間接参照が行われています。
36026
+ @item @ref{W0423} 値が NULL になるポインタに対して算術演算を行っています。
36027
+ @item @ref{W0424} 値が NULL になることがあるポインタに対して算術演算を行っています。
36028
+ @item @ref{W0459} 変数 `%s' の値は、この式の評価時点では設定されていません。このプログラムは危険です。
36029
+ @item @ref{W0460} 変数 `%s' の値は、この式の評価時点では設定されていないことがあります。
36030
+ @item @ref{W0461} 値が定まっていない変数を指すポインタを関数の実引数として使っています。このプログラムは危険です。
36031
+ @item @ref{W0462} 値が設定されていないことがありうる変数を指すポインタを関数の実引数として使っています。
36032
+ @item @ref{W0568} 符号付き定数式の値を左シフト演算した結果は、未定義になります。
36033
+ @item @ref{W0569} 符号付きの式の値を左シフト演算した結果は、未定義になります。
36034
+ @item @ref{W0570} 符号付きの式の値を左シフト演算した結果は、未定義になることがあります。
36035
+ @item @ref{W0607} 値が負になる整数式が符号無し型に変換されています。
36036
+ @item @ref{W0608} 値が負になることがありうる整数式が符号無し型に変換されています。
36037
+ @item @ref{W0705} 配列の添字が領域外を指すことがあります。
36038
+ @item @ref{W0707} 配列の添字が領域外を指す定数です。
36039
+ @item @ref{W0720} 浮動小数点型の値が変換先の型の範囲に入りきりません。
36040
+ @item @ref{W0745} 配列の添字が、領域外を指しています。
36041
+ @item @ref{W1049} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できないことがあります。
36042
+ @item @ref{W1050} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できません。
36043
+ @end itemize
36044
+
36045
+ @subsection 対応バージョン
36046
+
36047
+ 3.2.0
36048
+
36049
+ @node C1002
36050
+ @section C1002
36051
+ @cindex C1002
36052
+
36053
+ @subsection メッセージ本文
36054
+
36055
+ この制御式を偽として評価しました。
36056
+
36057
+ @subsection 内容
36058
+
36059
+ @ref{W0093,W0093}、@ref{W0096,W0096}、@ref{W0097,W0097}、@ref{W0115,W0115}、
36060
+ @ref{W0116,W0116}、@ref{W0421,W0421}、@ref{W0422,W0422}、@ref{W0423,W0423}、
36061
+ @ref{W0424,W0424}、@ref{W0459,W0459}、@ref{W0460,W0460}、@ref{W0461,W0461}、
36062
+ @ref{W0462,W0462}、@ref{W0568,W0568}、@ref{W0569,W0569}、@ref{W0570,W0570}、
36063
+ @ref{W0607,W0607}、@ref{W0608,W0608}、@ref{W0705,W0705}、@ref{W0707,W0707}、
36064
+ @ref{W0720,W0720}、@ref{W0745,W0745}、@ref{W1049,W1049}、@ref{W1050,W1050}
36065
+ メッセージを検出した状況として、該当制御式を偽と評価したことを示します。
36066
+
36067
+ @subsection サンプルコード
36068
+
36069
+ @verbatim
36070
+ int foo(int i)
36071
+ {
36072
+ int j; /* C1003 */
36073
+
36074
+ if (i < 0) { /* C1001 */
36075
+ if (i < -10) { /* C1002 */
36076
+ j = 2;
36077
+ }
36078
+ else if (i < -5) { /* C1002 */
36079
+ j = 3;
36080
+ }
36081
+ }
36082
+ else {
36083
+ j = 1;
36084
+ }
36085
+
36086
+ return j; /* W0460 */
36087
+ }
36088
+ @end verbatim
36089
+
36090
+ @subsection 関連メッセージ
36091
+
36092
+ @itemize
36093
+ @item @ref{W0093} ゼロで除算される恐れがあります。
36094
+ @item @ref{W0096} ゼロになる定数式で除算しています。
36095
+ @item @ref{W0097} ゼロの値で除算しています。
36096
+ @item @ref{W0115} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てます。
36097
+ @item @ref{W0116} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てる恐れがあります。
36098
+ @item @ref{W0421} 値が NULL になるポインタに対して間接参照が行われています。
36099
+ @item @ref{W0422} 値が NULL になることがあるポインタに対して間接参照が行われています。
36100
+ @item @ref{W0423} 値が NULL になるポインタに対して算術演算を行っています。
36101
+ @item @ref{W0424} 値が NULL になることがあるポインタに対して算術演算を行っています。
36102
+ @item @ref{W0459} 変数 `%s' の値は、この式の評価時点では設定されていません。このプログラムは危険です。
36103
+ @item @ref{W0460} 変数 `%s' の値は、この式の評価時点では設定されていないことがあります。
36104
+ @item @ref{W0461} 値が定まっていない変数を指すポインタを関数の実引数として使っています。このプログラムは危険です。
36105
+ @item @ref{W0462} 値が設定されていないことがありうる変数を指すポインタを関数の実引数として使っています。
36106
+ @item @ref{W0568} 符号付き定数式の値を左シフト演算した結果は、未定義になります。
36107
+ @item @ref{W0569} 符号付きの式の値を左シフト演算した結果は、未定義になります。
36108
+ @item @ref{W0570} 符号付きの式の値を左シフト演算した結果は、未定義になることがあります。
36109
+ @item @ref{W0607} 値が負になる整数式が符号無し型に変換されています。
36110
+ @item @ref{W0608} 値が負になることがありうる整数式が符号無し型に変換されています。
36111
+ @item @ref{W0705} 配列の添字が領域外を指すことがあります。
36112
+ @item @ref{W0707} 配列の添字が領域外を指す定数です。
36113
+ @item @ref{W0720} 浮動小数点型の値が変換先の型の範囲に入りきりません。
36114
+ @item @ref{W0745} 配列の添字が、領域外を指しています。
36115
+ @item @ref{W1049} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できないことがあります。
36116
+ @item @ref{W1050} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できません。
36117
+ @end itemize
36118
+
36119
+ @subsection 対応バージョン
36120
+
36121
+ 3.2.0
36122
+
36123
+ @node C1003
36124
+ @section C1003
36125
+ @cindex C1003
36126
+
36127
+ @subsection メッセージ本文
36128
+
36129
+ ここで該当変数が初期値を指定せずに定義されています。
36130
+
36131
+ @subsection 内容
36132
+
36133
+ @ref{W0459,W0459}、@ref{W0460,W0460}、@ref{W0461,W0461}、@ref{W0462,W0462}
36134
+ メッセージを検出した状況として、どの位置で該当変数を定義したかを示します。
36135
+
36136
+ @subsection サンプルコード
36137
+
36138
+ @verbatim
36139
+ int foo(int i)
36140
+ {
36141
+ int j; /* C1003 */
36142
+
36143
+ if (i < 0) { /* C1001 */
36144
+ if (i < -10) { /* C1002 */
36145
+ j = 2;
36146
+ }
36147
+ else if (i < -5) { /* C1002 */
36148
+ j = 3;
36149
+ }
36150
+ }
36151
+ else {
36152
+ j = 1;
36153
+ }
36154
+
36155
+ return j; /* W0460 */
36156
+ }
36157
+ @end verbatim
36158
+
36159
+ @subsection 関連メッセージ
36160
+
36161
+ @itemize
36162
+ @item @ref{W0459} 変数 `%s' の値は、この式の評価時点では設定されていません。このプログラムは危険です。
36163
+ @item @ref{W0460} 変数 `%s' の値は、この式の評価時点では設定されていないことがあります。
36164
+ @item @ref{W0461} 値が定まっていない変数を指すポインタを関数の実引数として使っています。このプログラムは危険です。
36165
+ @item @ref{W0462} 値が設定されていないことがありうる変数を指すポインタを関数の実引数として使っています。
36166
+ @end itemize
36167
+
36168
+ @subsection 対応バージョン
36169
+
36170
+ 3.2.0
36171
+
36172
+ @node C1004
36173
+ @section C1004
36174
+ @cindex C1004
36175
+
36176
+ @subsection メッセージ本文
36177
+
36178
+ ここで該当変数に NULL の値を割り当てました。
36179
+
36180
+ @subsection 内容
36181
+
36182
+ @ref{W0421,W0421}、@ref{W0422,W0422}、@ref{W0423,W0423}、@ref{W0424,W0424}
36183
+ メッセージを検出した状況として、どの位置で該当変数に NULL を割り当てたかを示し
36184
+ ます。
36185
+
36186
+ @subsection サンプルコード
36187
+
36188
+ @verbatim
36189
+ extern int *bar(void);
36190
+ extern int *baz(void);
36191
+
36192
+ void foo(int i)
36193
+ {
36194
+ int *p = NULL; /* C1004 */
36195
+
36196
+ if (i < 0) { /* C1002 */
36197
+ p = bar();
36198
+ if (!p) {
36199
+ return;
36200
+ }
36201
+ }
36202
+ else {
36203
+ p = baz(); /* C1005 */
36204
+ }
36205
+
36206
+ *p += 2; /* W0422 */
36207
+ }
36208
+ @end verbatim
36209
+
36210
+ @subsection 関連メッセージ
36211
+
36212
+ @itemize
36213
+ @item @ref{W0421} 値が NULL になるポインタに対して間接参照が行われています。
36214
+ @item @ref{W0422} 値が NULL になることがあるポインタに対して間接参照が行われています。
36215
+ @item @ref{W0423} 値が NULL になるポインタに対して算術演算を行っています。
36216
+ @item @ref{W0424} 値が NULL になることがあるポインタに対して算術演算を行っています。
36217
+ @end itemize
36218
+
36219
+ @subsection 対応バージョン
36220
+
36221
+ 3.2.0
36222
+
36223
+ @node C1005
36224
+ @section C1005
36225
+ @cindex C1005
36226
+
36227
+ @subsection メッセージ本文
36228
+
36229
+ ここで該当変数に NULL の可能性がある値を割り当てました。
36230
+
36231
+ @subsection 内容
36232
+
36233
+ @ref{W0421,W0421}、@ref{W0422,W0422}、@ref{W0423,W0423}、@ref{W0424,W0424}
36234
+ メッセージを検出した状況として、どの位置で該当変数に NULL となり得る値を割り当
36235
+ てたかを示します。
36236
+
36237
+ @subsection サンプルコード
36238
+
36239
+ @verbatim
36240
+ extern int *bar(void);
36241
+ extern int *baz(void);
36242
+
36243
+ void foo(int i)
36244
+ {
36245
+ int *p = NULL; /* C1004 */
36246
+
36247
+ if (i < 0) { /* C1002 */
36248
+ p = bar();
36249
+ if (!p) {
36250
+ return;
36251
+ }
36252
+ }
36253
+ else {
36254
+ p = baz(); /* C1005 */
36255
+ }
36256
+
36257
+ *p += 2; /* W0422 */
36258
+ }
36259
+ @end verbatim
36260
+
36261
+ @subsection 関連メッセージ
36262
+
36263
+ @itemize
36264
+ @item @ref{W0421} 値が NULL になるポインタに対して間接参照が行われています。
36265
+ @item @ref{W0422} 値が NULL になることがあるポインタに対して間接参照が行われています。
36266
+ @item @ref{W0423} 値が NULL になるポインタに対して算術演算を行っています。
36267
+ @item @ref{W0424} 値が NULL になることがあるポインタに対して算術演算を行っています。
36268
+ @end itemize
36269
+
36270
+ @subsection 対応バージョン
36271
+
36272
+ 3.2.0
36273
+
36274
+ @node C1006
36275
+ @section C1006
36276
+ @cindex C1006
36277
+
36278
+ @subsection メッセージ本文
36279
+
36280
+ ここで該当変数に値を割り当てました。
36281
+
36282
+ @subsection 内容
36283
+
36284
+ @ref{W0093,W0093}、@ref{W0096,W0096}、@ref{W0097,W0097}、@ref{W0115,W0115}、
36285
+ @ref{W0116,W0116}、@ref{W0568,W0568}、@ref{W0569,W0569}、@ref{W0570,W0570}、
36286
+ @ref{W0607,W0607}、@ref{W0608,W0608}、@ref{W0705,W0705}、@ref{W0707,W0707}、
36287
+ @ref{W0720,W0720}、@ref{W0745,W0745}、@ref{W1049,W1049}、@ref{W1050,W1050}
36288
+ メッセージを検出した状況として、どの位置で該当変数に問題の値を割り当てたかを示
36289
+ します。
36290
+
36291
+ @subsection サンプルコード
36292
+
36293
+ @verbatim
36294
+ int foo(int i)
36295
+ {
36296
+ int j = 0; /* C1006 */
36297
+
36298
+ if (i < 0) { /* C1002 */
36299
+ j = -i;
36300
+ }
36301
+ else if (i > 0) { /* C1002 */
36302
+ j = i;
36303
+ }
36304
+
36305
+ return 5 / j; /* W0093 */
36306
+ }
36307
+ @end verbatim
36308
+
36309
+ @subsection 関連メッセージ
36310
+
36311
+ @itemize
36312
+ @item @ref{W0093} ゼロで除算される恐れがあります。
36313
+ @item @ref{W0096} ゼロになる定数式で除算しています。
36314
+ @item @ref{W0097} ゼロの値で除算しています。
36315
+ @item @ref{W0115} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てます。
36316
+ @item @ref{W0116} 符号無し左シフト演算 `<<' は、上位ビットを切り捨てる恐れがあります。
36317
+ @item @ref{W0568} 符号付き定数式の値を左シフト演算した結果は、未定義になります。
36318
+ @item @ref{W0569} 符号付きの式の値を左シフト演算した結果は、未定義になります。
36319
+ @item @ref{W0570} 符号付きの式の値を左シフト演算した結果は、未定義になることがあります。
36320
+ @item @ref{W0607} 値が負になる整数式が符号無し型に変換されています。
36321
+ @item @ref{W0608} 値が負になることがありうる整数式が符号無し型に変換されています。
36322
+ @item @ref{W0705} 配列の添字が領域外を指すことがあります。
36323
+ @item @ref{W0707} 配列の添字が領域外を指す定数です。
36324
+ @item @ref{W0720} 浮動小数点型の値が変換先の型の範囲に入りきりません。
36325
+ @item @ref{W0745} 配列の添字が、領域外を指しています。
36326
+ @item @ref{W1049} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できないことがあります。
36327
+ @item @ref{W1050} この整数式の符号付き整数型への変換結果は、符号付きの結果の型で表現できません。
36328
+ @end itemize
36329
+
36330
+ @subsection 対応バージョン
36331
+
36332
+ 3.2.0
36333
+
36334
+
35794
36335
  @node Metrics
35795
36336
  @chapter メトリクス一覧
35796
36337