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.
- data/ChangeLog +67 -0
- data/MANIFEST +2 -0
- data/NEWS +10 -3
- data/etc/mesg.d/c_builtin/en_US/messages.yml +29 -1
- data/etc/mesg.d/c_builtin/ja_JP/messages.yml +29 -1
- data/etc/mesg.d/core/en_US/messages.yml +1 -1
- data/etc/mesg.d/core/ja_JP/messages.yml +1 -1
- data/features/code_check/W0003.feature +5 -0
- data/features/code_check/W0023.feature +32 -0
- data/features/code_check/W0024.feature +22 -0
- data/features/code_check/W0093.feature +71 -0
- data/features/code_check/W0097.feature +4 -0
- data/features/code_check/W0100.feature +10 -0
- data/features/code_check/W0119.feature +8 -0
- data/features/code_check/W0133.feature +8 -0
- data/features/code_check/W0134.feature +8 -0
- data/features/code_check/W0136.feature +8 -0
- data/features/code_check/W0138.feature +8 -0
- data/features/code_check/W0140.feature +8 -0
- data/features/code_check/W0142.feature +8 -0
- data/features/code_check/W0143.feature +8 -0
- data/features/code_check/W0144.feature +8 -0
- data/features/code_check/W0145.feature +8 -0
- data/features/code_check/W0146.feature +8 -0
- data/features/code_check/W0147.feature +8 -0
- data/features/code_check/W0148.feature +8 -0
- data/features/code_check/W0149.feature +8 -0
- data/features/code_check/W0150.feature +8 -0
- data/features/code_check/W0151.feature +8 -0
- data/features/code_check/W0152.feature +8 -0
- data/features/code_check/W0153.feature +8 -0
- data/features/code_check/W0154.feature +8 -0
- data/features/code_check/W0155.feature +8 -0
- data/features/code_check/W0156.feature +8 -0
- data/features/code_check/W0157.feature +8 -0
- data/features/code_check/W0158.feature +8 -0
- data/features/code_check/W0159.feature +8 -0
- data/features/code_check/W0160.feature +8 -0
- data/features/code_check/W0161.feature +8 -0
- data/features/code_check/W0162.feature +8 -0
- data/features/code_check/W0163.feature +8 -0
- data/features/code_check/W0164.feature +8 -0
- data/features/code_check/W0165.feature +8 -0
- data/features/code_check/W0166.feature +8 -0
- data/features/code_check/W0167.feature +8 -0
- data/features/code_check/W0168.feature +8 -0
- data/features/code_check/W0169.feature +8 -0
- data/features/code_check/W0170.feature +8 -0
- data/features/code_check/W0171.feature +8 -0
- data/features/code_check/W0172.feature +8 -0
- data/features/code_check/W0173.feature +8 -0
- data/features/code_check/W0174.feature +8 -0
- data/features/code_check/W0175.feature +8 -0
- data/features/code_check/W0176.feature +8 -0
- data/features/code_check/W0177.feature +8 -0
- data/features/code_check/W0178.feature +8 -0
- data/features/code_check/W0179.feature +8 -0
- data/features/code_check/W0180.feature +8 -0
- data/features/code_check/W0181.feature +8 -0
- data/features/code_check/W0250.feature +8 -0
- data/features/code_check/W0422.feature +194 -0
- data/features/code_check/W0459.feature +16 -0
- data/features/code_check/W0460.feature +342 -0
- data/features/code_check/W0461.feature +5 -0
- data/features/code_check/W0497.feature +12 -0
- data/features/code_check/W0499.feature +6 -0
- data/features/code_check/W0502.feature +6 -0
- data/features/code_check/W0570.feature +47 -0
- data/features/code_check/W0573.feature +8 -0
- data/features/code_check/W0582.feature +4 -0
- data/features/code_check/W0583.feature +4 -0
- data/features/code_check/W0584.feature +10 -0
- data/features/code_check/W0599.feature +10 -0
- data/features/code_check/W0644.feature +2 -0
- data/features/code_check/W0649.feature +14 -0
- data/features/code_check/W0650.feature +12 -0
- data/features/code_check/W0685.feature +10 -0
- data/features/code_check/W0686.feature +8 -0
- data/features/code_check/W0711.feature +2 -0
- data/features/code_check/W0712.feature +2 -0
- data/features/code_check/W0713.feature +2 -0
- data/features/code_check/W0714.feature +2 -0
- data/features/code_check/W0715.feature +2 -0
- data/features/code_check/W0718.feature +2 -0
- data/features/code_check/W0719.feature +8 -0
- data/features/code_check/W0732.feature +18 -0
- data/features/code_check/W0733.feature +18 -0
- data/features/code_check/W0734.feature +24 -0
- data/features/code_check/W0735.feature +24 -0
- data/features/code_check/W0747.feature +8 -0
- data/features/code_check/W0749.feature +8 -0
- data/features/code_check/W0750.feature +8 -0
- data/features/code_check/W0753.feature +8 -0
- data/features/code_check/W0754.feature +8 -0
- data/features/code_check/W0759.feature +8 -0
- data/features/code_check/W0760.feature +8 -0
- data/features/code_check/W0761.feature +8 -0
- data/features/code_check/W0762.feature +8 -0
- data/features/code_check/W0794.feature +6 -0
- data/features/code_check/W1050.feature +8 -0
- data/features/code_check/W1066.feature +8 -0
- data/features/code_check/W1067.feature +8 -0
- data/features/code_check/W1068.feature +8 -0
- data/features/code_check/W1071.feature +4 -0
- data/features/code_check/W9003.feature +2 -0
- data/lib/adlint/cc1.rb +1 -0
- data/lib/adlint/cc1/branch.rb +34 -13
- data/lib/adlint/cc1/conv.rb +3 -3
- data/lib/adlint/cc1/ctrlexpr.rb +12 -7
- data/lib/adlint/cc1/environ.rb +12 -2
- data/lib/adlint/cc1/expr.rb +10 -8
- data/lib/adlint/cc1/interp.rb +56 -49
- data/lib/adlint/cc1/mediator.rb +9 -5
- data/lib/adlint/cc1/object.rb +37 -34
- data/lib/adlint/cc1/trace.rb +287 -0
- data/lib/adlint/cc1/type.rb +15 -15
- data/lib/adlint/cc1/value.rb +823 -427
- data/lib/adlint/cpp/eval.rb +5 -2
- data/lib/adlint/cpp/source.rb +21 -22
- data/lib/adlint/exam/c_builtin/cc1_check.rb +1636 -1067
- data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +28 -22
- data/lib/adlint/exam/c_builtin/cc1_code.rb +4 -4
- data/lib/adlint/exam/c_builtin/cc1_metric.rb +14 -14
- data/lib/adlint/location.rb +5 -7
- data/lib/adlint/metric.rb +2 -2
- data/lib/adlint/prelude.rb +6 -2
- data/lib/adlint/report.rb +2 -2
- data/lib/adlint/version.rb +3 -3
- data/share/doc/developers_guide_ja.html +10 -4
- data/share/doc/developers_guide_ja.texi +8 -2
- data/share/doc/users_guide_en.html +679 -72
- data/share/doc/users_guide_en.texi +557 -12
- data/share/doc/users_guide_ja.html +678 -74
- data/share/doc/users_guide_ja.texi +554 -13
- data/spec/adlint/cc1/ctrlexpr_spec.rb +20 -11
- data/spec/adlint/cc1/domain_spec.rb +9 -0
- metadata +4 -2
|
@@ -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
|
|
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
|
|