adlint 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. data/ChangeLog +413 -5
  2. data/MANIFEST +6 -0
  3. data/NEWS +43 -4
  4. data/etc/mesg.d/en_US/messages.yml +1 -1
  5. data/etc/mesg.d/ja_JP/messages.yml +1 -1
  6. data/lib/adlint/c.rb +1 -0
  7. data/lib/adlint/c/enum.rb +52 -0
  8. data/lib/adlint/c/expr.rb +43 -102
  9. data/lib/adlint/c/interp.rb +1 -1
  10. data/lib/adlint/c/mediator.rb +1 -0
  11. data/lib/adlint/c/message.rb +831 -49
  12. data/lib/adlint/c/message_shima.rb +236 -0
  13. data/lib/adlint/c/metric.rb +9 -0
  14. data/lib/adlint/c/object.rb +37 -32
  15. data/lib/adlint/c/parser.rb +7 -7
  16. data/lib/adlint/c/parser.y +7 -7
  17. data/lib/adlint/c/phase.rb +21 -0
  18. data/lib/adlint/c/syntax.rb +11 -4
  19. data/lib/adlint/c/type.rb +1 -1
  20. data/lib/adlint/cpp.rb +1 -0
  21. data/lib/adlint/cpp/asm.rb +73 -0
  22. data/lib/adlint/cpp/message.rb +13 -0
  23. data/lib/adlint/cpp/message_shima.rb +36 -0
  24. data/lib/adlint/cpp/phase.rb +3 -0
  25. data/lib/adlint/cpp/source.rb +9 -0
  26. data/lib/adlint/version.rb +3 -3
  27. data/share/demo/Makefile +4 -0
  28. data/share/demo/bad_conv/bad_conv.c +12 -0
  29. data/share/demo/bad_enum/bad_enum.c +48 -2
  30. data/share/demo/bad_label/bad_label.c +26 -0
  31. data/share/demo/bad_macro/bad_macro.c +3 -0
  32. data/share/demo/implicit_conv/implicit_conv.c +1 -0
  33. data/share/demo/inline_asm/inline_asm.c +18 -0
  34. data/share/demo/invalid_call/invalid_call.c +5 -0
  35. data/share/demo/multi_decl/multi_decl_1.c +30 -0
  36. data/share/demo/overflow/overflow.c +3 -3
  37. data/share/demo/redundant_select/redundant_select.c +25 -0
  38. data/share/demo/reserved_ident/reserved_ident.c +98 -0
  39. data/share/doc/developers_guide_ja.html +3 -3
  40. data/share/doc/developers_guide_ja.texi +1 -1
  41. data/share/doc/users_guide_en.html +234 -126
  42. data/share/doc/users_guide_en.texi +207 -98
  43. data/share/doc/users_guide_ja.html +247 -156
  44. data/share/doc/users_guide_ja.texi +221 -130
  45. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +1 -1
  46. metadata +8 -2
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_ja.info
3
3
  @documentlanguage ja
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.4.0 利用者ガイド
5
+ @settitle AdLint 1.6.0 利用者ガイド
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -3325,18 +3325,23 @@ char arg;
3325
3325
  @subsection サンプルコード
3326
3326
 
3327
3327
  @verbatim
3328
- int value;
3329
- int number;
3330
- switch(number) {
3331
- case 1:
3332
- value = 1;
3333
- break;
3334
- case 2:
3335
- value = 2;
3336
- break;
3337
- case 3;
3338
- value = 3;
3339
- break; /* W0003 */
3328
+ int foo(int i)
3329
+ {
3330
+ int j;
3331
+
3332
+ switch(i) { /* W0003 */
3333
+ case 1:
3334
+ j = 1;
3335
+ break;
3336
+ case 2:
3337
+ j = 2;
3338
+ break;
3339
+ case 3:
3340
+ j = 3;
3341
+ break;
3342
+ }
3343
+
3344
+ return j;
3340
3345
  }
3341
3346
  @end verbatim
3342
3347
 
@@ -4631,7 +4636,7 @@ extern int func(void) __attribute__ ((__const__)); /* W0061 */
4631
4636
  @subsection 関連メッセージ
4632
4637
 
4633
4638
  @itemize
4634
- @item @ref{W0062} __typeof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。
4639
+ @item @ref{W0062} `__typeof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。
4635
4640
  @item @ref{W0063} `__alignof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。
4636
4641
  @end itemize
4637
4642
 
@@ -23915,15 +23920,29 @@ void func() /* W0540 */
23915
23920
 
23916
23921
  @subsection 内容
23917
23922
 
23918
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
23919
-
23920
23923
  アセンブラコードは環境によって変わるため、複数の関数に点在させると、別の環境に移植するときの変更コストが大きくなります。
23921
23924
 
23922
23925
  @subsection サンプルコード
23923
23926
 
23924
- @c{未実装}
23925
23927
  @verbatim
23926
- /* 追記予定 */
23928
+ void foo(int arg1, int *arg2, int arg3)
23929
+ {
23930
+ asm("movl %ecx, %eax"); /* W0541 */
23931
+ __asm__("movl %ecx, (%eax)"); /* W0541 */
23932
+
23933
+ asm { /* W0541 */
23934
+ xorl eax, eax
23935
+ }
23936
+
23937
+ __asm__ volatile ( /* W0541 */
23938
+ "int $0x80"
23939
+ : "=a" (r)
23940
+ "+b" (arg1),
23941
+ "+c" (arg2),
23942
+ "+d" (arg3)
23943
+ : "a" (128)
23944
+ : "memory", "cc");
23945
+ }
23927
23946
  @end verbatim
23928
23947
 
23929
23948
  @subsection 関連メッセージ
@@ -23932,7 +23951,7 @@ void func() /* W0540 */
23932
23951
 
23933
23952
  @subsection 対応バージョン
23934
23953
 
23935
- 2.0.0 の予定
23954
+ 1.6.0
23936
23955
 
23937
23956
  @node W0542
23938
23957
  @section W0542
@@ -24787,8 +24806,6 @@ void func(short a)
24787
24806
 
24788
24807
  @subsection 内容
24789
24808
 
24790
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
24791
-
24792
24809
  このような変換指定子の動作は処理系定義のため移植性が低下します。
24793
24810
 
24794
24811
  @subsection サンプルコード
@@ -24804,7 +24821,7 @@ scanf("%[a-z]", &c); /* W0573 */
24804
24821
 
24805
24822
  @subsection 対応バージョン
24806
24823
 
24807
- 2.0.0 の予定
24824
+ 1.6.0
24808
24825
 
24809
24826
  @node W0574
24810
24827
  @section W0574
@@ -24969,8 +24986,6 @@ void func(int a)
24969
24986
 
24970
24987
  @subsection 内容
24971
24988
 
24972
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
24973
-
24974
24989
  サンプルコードの関数では
24975
24990
  @code{int} 型変数 @code{a} の 2 乗した値が @code{int} 型の範囲に収まらないことを想定して
24976
24991
  @code{long} 型変数 @code{b} へ代入しています。
@@ -24992,7 +25007,7 @@ void func(int a)
24992
25007
 
24993
25008
  @subsection 対応バージョン
24994
25009
 
24995
- 2.0.0 の予定
25010
+ 1.6.0
24996
25011
 
24997
25012
  @node W0580
24998
25013
  @section W0580
@@ -28707,15 +28722,13 @@ void func(void)
28707
28722
 
28708
28723
  @subsection 内容
28709
28724
 
28710
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
28711
-
28712
28725
  未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。
28713
28726
 
28714
28727
  @subsection サンプルコード
28715
28728
 
28716
- @c{未実装}
28717
28729
  @verbatim
28718
- /* 追記予定 */
28730
+ char c;
28731
+ scanf("%[z-a]", &c); /* W0685 */
28719
28732
  @end verbatim
28720
28733
 
28721
28734
  @subsection 関連メッセージ
@@ -28756,7 +28769,7 @@ void func(void)
28756
28769
 
28757
28770
  @subsection 対応バージョン
28758
28771
 
28759
- 2.0.0 の予定
28772
+ 1.6.0
28760
28773
 
28761
28774
  @node W0686
28762
28775
  @section W0686
@@ -28768,15 +28781,13 @@ void func(void)
28768
28781
 
28769
28782
  @subsection 内容
28770
28783
 
28771
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
28772
-
28773
28784
  未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。
28774
28785
 
28775
28786
  @subsection サンプルコード
28776
28787
 
28777
- @c{未実装}
28778
28788
  @verbatim
28779
- /* 追記予定 */
28789
+ char c;
28790
+ scanf("%[abcda]", &c); /* W0686 */
28780
28791
  @end verbatim
28781
28792
 
28782
28793
  @subsection 関連メッセージ
@@ -28817,7 +28828,7 @@ void func(void)
28817
28828
 
28818
28829
  @subsection 対応バージョン
28819
28830
 
28820
- 2.0.0 の予定
28831
+ 1.6.0
28821
28832
 
28822
28833
  @node W0687
28823
28834
  @section W0687
@@ -30033,7 +30044,7 @@ enum Fruits { APPLE, BANANA, ORANGE };
30033
30044
  void func(void)
30034
30045
  {
30035
30046
  enum Color c;
30036
-
30047
+
30037
30048
  c = ORANGE; /* W0729 */
30038
30049
  }
30039
30050
  @end verbatim
@@ -32056,8 +32067,6 @@ unsigned int ui = 0x0F000000U << 8; /* W0780 */
32056
32067
 
32057
32068
  @subsection 内容
32058
32069
 
32059
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32060
-
32061
32070
  このような @code{switch} 文がプログラマの意図通りだとしたら、
32062
32071
  冗長な記述という意味で問題があります。
32063
32072
  また、意図通りでないとしたら @code{case} 節の書き忘れが考えられますので、
@@ -32066,9 +32075,32 @@ unsigned int ui = 0x0F000000U << 8; /* W0780 */
32066
32075
 
32067
32076
  @subsection サンプルコード
32068
32077
 
32069
- @c{未実装}
32070
32078
  @verbatim
32071
- /* 追記予定 */
32079
+ int foo(const int i)
32080
+ {
32081
+ if (i > 5) {
32082
+ switch (i) { /* W0781 */
32083
+ case 0:
32084
+ return 1;
32085
+ case 5:
32086
+ return 2;
32087
+ default:
32088
+ return 3;
32089
+ }
32090
+ }
32091
+
32092
+ switch (i) { /* OK */
32093
+ case 0:
32094
+ return 4;
32095
+ default:
32096
+ switch (i) { /* W0781 */
32097
+ case 10:
32098
+ return 5;
32099
+ default:
32100
+ return 6;
32101
+ }
32102
+ }
32103
+ }
32072
32104
  @end verbatim
32073
32105
 
32074
32106
  @subsection 関連メッセージ
@@ -32077,7 +32109,7 @@ unsigned int ui = 0x0F000000U << 8; /* W0780 */
32077
32109
 
32078
32110
  @subsection 対応バージョン
32079
32111
 
32080
- 2.0.0 の予定
32112
+ 1.6.0
32081
32113
 
32082
32114
  @node W0783
32083
32115
  @section W0783
@@ -32211,8 +32243,6 @@ struct ST { /* W0786 */
32211
32243
 
32212
32244
  @subsection 内容
32213
32245
 
32214
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32215
-
32216
32246
  宣言が異なるスコープにある場合の動作は処理系定義になります。
32217
32247
  また、宣言が同じスコープにある場合は標準制約違反になります。
32218
32248
  従って、移植性が低下します。
@@ -32220,9 +32250,18 @@ struct ST { /* W0786 */
32220
32250
 
32221
32251
  @subsection サンプルコード
32222
32252
 
32223
- @c{未実装}
32224
32253
  @verbatim
32225
- /* 追記予定 */
32254
+ void func1(void)
32255
+ {
32256
+ extern int num;
32257
+ extern void func3(void);
32258
+ }
32259
+
32260
+ void func2(void)
32261
+ {
32262
+ extern double num; /* W0787 */
32263
+ extern void func3(int); /* W0787 */
32264
+ }
32226
32265
  @end verbatim
32227
32266
 
32228
32267
  @subsection 関連メッセージ
@@ -32234,7 +32273,7 @@ struct ST { /* W0786 */
32234
32273
 
32235
32274
  @subsection 対応バージョン
32236
32275
 
32237
- 2.0.0 の予定
32276
+ 1.6.0
32238
32277
 
32239
32278
  @node W0788
32240
32279
  @section W0788
@@ -32246,8 +32285,6 @@ struct ST { /* W0786 */
32246
32285
 
32247
32286
  @subsection 内容
32248
32287
 
32249
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32250
-
32251
32288
  宣言が異なるスコープにある場合の動作は処理系定義になります。
32252
32289
  また、宣言が同じスコープにある場合は標準制約違反になります。
32253
32290
  従って、移植性が低下します。
@@ -32255,9 +32292,14 @@ struct ST { /* W0786 */
32255
32292
 
32256
32293
  @subsection サンプルコード
32257
32294
 
32258
- @c{未実装}
32259
32295
  @verbatim
32260
- /* 追記予定 */
32296
+ extern int func(void);
32297
+
32298
+ void func(void) /* W0788 */
32299
+ {
32300
+ typedef int num;
32301
+ double num; /* W0788 */
32302
+ }
32261
32303
  @end verbatim
32262
32304
 
32263
32305
  @subsection 関連メッセージ
@@ -32269,7 +32311,7 @@ struct ST { /* W0786 */
32269
32311
 
32270
32312
  @subsection 対応バージョン
32271
32313
 
32272
- 2.0.0 の予定
32314
+ 1.6.0
32273
32315
 
32274
32316
  @node W0789
32275
32317
  @section W0789
@@ -32281,8 +32323,6 @@ struct ST { /* W0786 */
32281
32323
 
32282
32324
  @subsection 内容
32283
32325
 
32284
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32285
-
32286
32326
  宣言が異なるスコープにある場合の動作は処理系定義になります。
32287
32327
  また、宣言が同じスコープにある場合は標準制約違反になります。
32288
32328
  従って、移植性が低下します。
@@ -32290,9 +32330,15 @@ struct ST { /* W0786 */
32290
32330
 
32291
32331
  @subsection サンプルコード
32292
32332
 
32293
- @c{未実装}
32294
32333
  @verbatim
32295
- /* 追記予定 */
32334
+ int num = 0;
32335
+ extern int func1(void);
32336
+
32337
+ void func2(void)
32338
+ {
32339
+ extern double num; /* W0789 */
32340
+ extern void func1(void); /* W0789 */
32341
+ }
32296
32342
  @end verbatim
32297
32343
 
32298
32344
  @subsection 関連メッセージ
@@ -32304,7 +32350,7 @@ struct ST { /* W0786 */
32304
32350
 
32305
32351
  @subsection 対応バージョン
32306
32352
 
32307
- 2.0.0 の予定
32353
+ 1.6.0
32308
32354
 
32309
32355
  @node W0790
32310
32356
  @section W0790
@@ -32899,16 +32945,13 @@ ISO C90 で規定されている予約語を定義、再定義、定義解消す
32899
32945
 
32900
32946
  @subsection 内容
32901
32947
 
32902
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32903
-
32904
32948
  ISO C90 で規定されている予約語を定義、再定義、定義解消することは未定義の動作になります。
32905
32949
  したがって、予期しない動作を引き起こす可能性あります。
32906
32950
 
32907
32951
  @subsection サンプルコード
32908
32952
 
32909
- @c{未実装}
32910
32953
  @verbatim
32911
- /* 追記予定 */
32954
+ #undef __STDC_VERSION__ /* W0807 */
32912
32955
  @end verbatim
32913
32956
 
32914
32957
  @subsection 関連メッセージ
@@ -32920,7 +32963,7 @@ ISO C90 で規定されている予約語を定義、再定義、定義解消す
32920
32963
 
32921
32964
  @subsection 対応バージョン
32922
32965
 
32923
- 2.0.0 の予定
32966
+ 1.6.0
32924
32967
 
32925
32968
  @node W0808
32926
32969
  @section W0808
@@ -32932,16 +32975,13 @@ ISO C90 で規定されている予約語を定義、再定義、定義解消す
32932
32975
 
32933
32976
  @subsection 内容
32934
32977
 
32935
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32936
-
32937
32978
  ISO C90 で規定されている予約語を定義、再定義、定義解消することは未定義の動作になります。
32938
32979
  したがって、予期しない動作を引き起こす可能性あります。
32939
32980
 
32940
32981
  @subsection サンプルコード
32941
32982
 
32942
- @c{未実装}
32943
32983
  @verbatim
32944
- /* 追記予定 */
32984
+ #define __FILE__ "test.c" /* W0808 */
32945
32985
  @end verbatim
32946
32986
 
32947
32987
  @subsection 関連メッセージ
@@ -32953,7 +32993,7 @@ ISO C90 で規定されている予約語を定義、再定義、定義解消す
32953
32993
 
32954
32994
  @subsection 対応バージョン
32955
32995
 
32956
- 2.0.0 の予定
32996
+ 1.6.0
32957
32997
 
32958
32998
  @node W0809
32959
32999
  @section W0809
@@ -32965,16 +33005,15 @@ ISO C90 で規定されている予約語を定義、再定義、定義解消す
32965
33005
 
32966
33006
  @subsection 内容
32967
33007
 
32968
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
32969
-
32970
33008
  ISO C90 で規定されている予約語を再使用することは未定義の動作になります。
32971
33009
  したがって、予期しない動作を引き起こす可能性あります。
32972
33010
 
32973
33011
  @subsection サンプルコード
32974
33012
 
32975
- @c{未実装}
32976
33013
  @verbatim
32977
- /* 追記予定 */
33014
+ extern int __value; /* W0809 */
33015
+ int _VAL = 10; /* W0809 */
33016
+ static void _func(void); /* W0809 */
32978
33017
  @end verbatim
32979
33018
 
32980
33019
  @subsection 関連メッセージ
@@ -32983,7 +33022,7 @@ ISO C90 で規定されている予約語を再使用することは未定義の
32983
33022
 
32984
33023
  @subsection 対応バージョン
32985
33024
 
32986
- 2.0.0 の予定
33025
+ 1.6.0
32987
33026
 
32988
33027
  @node W0810
32989
33028
  @section W0810
@@ -33552,15 +33591,27 @@ struct ST a[5]; /* W1029 */
33552
33591
 
33553
33592
  @subsection 内容
33554
33593
 
33555
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
33556
-
33557
33594
  同じ名前のラベルが、関数内で 2 回以上使われています。このような使い方は誤りです。
33558
33595
 
33559
33596
  @subsection サンプルコード
33560
33597
 
33561
- @c{未実装}
33562
33598
  @verbatim
33563
- /* 追記予定 */
33599
+ void func(int a, int b)
33600
+ {
33601
+ if (a == 0) {
33602
+ int c = 0;
33603
+ RETRY:
33604
+ b = 10;
33605
+ }
33606
+
33607
+ if (b != 0) {
33608
+ goto RETRY;
33609
+ }
33610
+ RETRY: /* W1030 */
33611
+ b = 1;
33612
+
33613
+ ...snip...
33614
+ }
33564
33615
  @end verbatim
33565
33616
 
33566
33617
  @subsection 関連メッセージ
@@ -33569,7 +33620,7 @@ struct ST a[5]; /* W1029 */
33569
33620
 
33570
33621
  @subsection 対応バージョン
33571
33622
 
33572
- 2.0.0 の予定
33623
+ 1.6.0
33573
33624
 
33574
33625
  @node W1031
33575
33626
  @section W1031
@@ -34281,15 +34332,19 @@ unsigned int func(unsigned int a, unsigned int b)
34281
34332
 
34282
34333
  @subsection 内容
34283
34334
 
34284
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34285
-
34286
34335
  非列挙型から列挙型への変換が生じています。
34287
34336
 
34288
34337
  @subsection サンプルコード
34289
34338
 
34290
- @c{未実装}
34291
34339
  @verbatim
34292
- /* 追記予定 */
34340
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34341
+
34342
+ extern void func1(enum Color);
34343
+
34344
+ void func2(void)
34345
+ {
34346
+ func1(4); /* W1053 */
34347
+ }
34293
34348
  @end verbatim
34294
34349
 
34295
34350
  @subsection 関連メッセージ
@@ -34311,7 +34366,7 @@ unsigned int func(unsigned int a, unsigned int b)
34311
34366
 
34312
34367
  @subsection 対応バージョン
34313
34368
 
34314
- 2.0.0 の予定
34369
+ 1.6.0
34315
34370
 
34316
34371
  @node W1054
34317
34372
  @section W1054
@@ -34323,15 +34378,19 @@ unsigned int func(unsigned int a, unsigned int b)
34323
34378
 
34324
34379
  @subsection 内容
34325
34380
 
34326
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34327
-
34328
34381
  非列挙型から列挙型への変換が生じています。
34329
34382
 
34330
34383
  @subsection サンプルコード
34331
34384
 
34332
- @c{未実装}
34333
34385
  @verbatim
34334
- /* 追記予定 */
34386
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34387
+
34388
+ extern enum Color col;
34389
+
34390
+ void func2(void)
34391
+ {
34392
+ col = 4; /* W1054 */
34393
+ }
34335
34394
  @end verbatim
34336
34395
 
34337
34396
  @subsection 関連メッセージ
@@ -34353,7 +34412,7 @@ unsigned int func(unsigned int a, unsigned int b)
34353
34412
 
34354
34413
  @subsection 対応バージョン
34355
34414
 
34356
- 2.0.0 の予定
34415
+ 1.6.0
34357
34416
 
34358
34417
  @node W1055
34359
34418
  @section W1055
@@ -34365,15 +34424,17 @@ unsigned int func(unsigned int a, unsigned int b)
34365
34424
 
34366
34425
  @subsection 内容
34367
34426
 
34368
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34369
-
34370
34427
  列挙型から非列挙型への変換が生じています。
34371
34428
 
34372
34429
  @subsection サンプルコード
34373
34430
 
34374
- @c{未実装}
34375
34431
  @verbatim
34376
- /* 追記予定 */
34432
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34433
+
34434
+ enum Color func(void)
34435
+ {
34436
+ return 4; /* W1055 */
34437
+ }
34377
34438
  @end verbatim
34378
34439
 
34379
34440
  @subsection 関連メッセージ
@@ -34395,7 +34456,7 @@ unsigned int func(unsigned int a, unsigned int b)
34395
34456
 
34396
34457
  @subsection 対応バージョン
34397
34458
 
34398
- 2.0.0 の予定
34459
+ 1.6.0
34399
34460
 
34400
34461
  @node W1056
34401
34462
  @section W1056
@@ -34407,14 +34468,20 @@ unsigned int func(unsigned int a, unsigned int b)
34407
34468
 
34408
34469
  @subsection 内容
34409
34470
 
34410
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34411
-
34412
34471
  列挙型から異なる列挙型への変換が生じています。
34413
34472
 
34414
34473
  @subsection サンプルコード
34415
34474
 
34416
34475
  @verbatim
34417
- /* 追記予定 */
34476
+ enum Color { RED = 1, GREEN= 2, BLUE = 4 };
34477
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
34478
+
34479
+ extern void func1(enum Color);
34480
+
34481
+ void func2(enum Season ssn)
34482
+ {
34483
+ func1(ssn); /* W1056 */
34484
+ }
34418
34485
  @end verbatim
34419
34486
 
34420
34487
  @subsection 関連メッセージ
@@ -34436,7 +34503,7 @@ unsigned int func(unsigned int a, unsigned int b)
34436
34503
 
34437
34504
  @subsection 対応バージョン
34438
34505
 
34439
- 2.0.0 の予定
34506
+ 1.6.0
34440
34507
 
34441
34508
  @node W1057
34442
34509
  @section W1057
@@ -34448,15 +34515,20 @@ unsigned int func(unsigned int a, unsigned int b)
34448
34515
 
34449
34516
  @subsection 内容
34450
34517
 
34451
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34452
-
34453
34518
  列挙型から異なる列挙型への変換が生じています。
34454
34519
 
34455
34520
  @subsection サンプルコード
34456
34521
 
34457
- @c{未実装}
34458
34522
  @verbatim
34459
- /* 追記予定 */
34523
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34524
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
34525
+
34526
+ extern enum Color col;
34527
+
34528
+ void func(enum Season ssn)
34529
+ {
34530
+ col = ssn; /* W1057 */
34531
+ }
34460
34532
  @end verbatim
34461
34533
 
34462
34534
  @subsection 関連メッセージ
@@ -34478,7 +34550,7 @@ unsigned int func(unsigned int a, unsigned int b)
34478
34550
 
34479
34551
  @subsection 対応バージョン
34480
34552
 
34481
- 2.0.0 の予定
34553
+ 1.6.0
34482
34554
 
34483
34555
  @node W1058
34484
34556
  @section W1058
@@ -34490,15 +34562,18 @@ unsigned int func(unsigned int a, unsigned int b)
34490
34562
 
34491
34563
  @subsection 内容
34492
34564
 
34493
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34494
-
34495
34565
  列挙型から異なる列挙型への変換が生じています。
34496
34566
 
34497
34567
  @subsection サンプルコード
34498
34568
 
34499
- @c{未実装}
34500
34569
  @verbatim
34501
- /* 追記予定 */
34570
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34571
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
34572
+
34573
+ enum Color func(enum Season ssn)
34574
+ {
34575
+ return ssn; /* W1058 */
34576
+ }
34502
34577
  @end verbatim
34503
34578
 
34504
34579
  @subsection 関連メッセージ
@@ -34520,7 +34595,7 @@ unsigned int func(unsigned int a, unsigned int b)
34520
34595
 
34521
34596
  @subsection 対応バージョン
34522
34597
 
34523
- 2.0.0 の予定
34598
+ 1.6.0
34524
34599
 
34525
34600
  @node W1059
34526
34601
  @section W1059
@@ -34532,15 +34607,19 @@ unsigned int func(unsigned int a, unsigned int b)
34532
34607
 
34533
34608
  @subsection 内容
34534
34609
 
34535
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34536
-
34537
34610
  列挙型から非列挙型への変換が生じています。
34538
34611
 
34539
34612
  @subsection サンプルコード
34540
34613
 
34541
- @c{未実装}
34542
34614
  @verbatim
34543
- /* 追記予定 */
34615
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34616
+
34617
+ extern void func1(int num);
34618
+
34619
+ void func2(enum Color col)
34620
+ {
34621
+ func1(col); /* W1059 */
34622
+ }
34544
34623
  @end verbatim
34545
34624
 
34546
34625
  @subsection 関連メッセージ
@@ -34562,7 +34641,7 @@ unsigned int func(unsigned int a, unsigned int b)
34562
34641
 
34563
34642
  @subsection 対応バージョン
34564
34643
 
34565
- 2.0.0 の予定
34644
+ 1.6.0
34566
34645
 
34567
34646
  @node W1060
34568
34647
  @section W1060
@@ -34574,15 +34653,17 @@ unsigned int func(unsigned int a, unsigned int b)
34574
34653
 
34575
34654
  @subsection 内容
34576
34655
 
34577
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34578
-
34579
34656
  非列挙型から列挙型への変換が生じています。
34580
34657
 
34581
34658
  @subsection サンプルコード
34582
34659
 
34583
- @c{未実装}
34584
34660
  @verbatim
34585
- /* 追記予定 */
34661
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34662
+
34663
+ int func2(enum Color col)
34664
+ {
34665
+ return col; /* W1060 */
34666
+ }
34586
34667
  @end verbatim
34587
34668
 
34588
34669
  @subsection 関連メッセージ
@@ -34604,7 +34685,7 @@ unsigned int func(unsigned int a, unsigned int b)
34604
34685
 
34605
34686
  @subsection 対応バージョン
34606
34687
 
34607
- 2.0.0 の予定
34688
+ 1.6.0
34608
34689
 
34609
34690
  @node W1061
34610
34691
  @section W1061
@@ -34616,15 +34697,19 @@ unsigned int func(unsigned int a, unsigned int b)
34616
34697
 
34617
34698
  @subsection 内容
34618
34699
 
34619
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34620
-
34621
34700
  非列挙型から列挙型への変換が生じています。
34622
34701
 
34623
34702
  @subsection サンプルコード
34624
34703
 
34625
- @c{未実装}
34626
34704
  @verbatim
34627
- /* 追記予定 */
34705
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34706
+
34707
+ extern void func1(enum Color);
34708
+
34709
+ void func2(int num)
34710
+ {
34711
+ func1(num); /* W1061 */
34712
+ }
34628
34713
  @end verbatim
34629
34714
 
34630
34715
  @subsection 関連メッセージ
@@ -34646,7 +34731,7 @@ unsigned int func(unsigned int a, unsigned int b)
34646
34731
 
34647
34732
  @subsection 対応バージョン
34648
34733
 
34649
- 2.0.0 の予定
34734
+ 1.6.0
34650
34735
 
34651
34736
  @node W1062
34652
34737
  @section W1062
@@ -34658,15 +34743,19 @@ unsigned int func(unsigned int a, unsigned int b)
34658
34743
 
34659
34744
  @subsection 内容
34660
34745
 
34661
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34662
-
34663
34746
  非列挙型から列挙型への変換が生じています。
34664
34747
 
34665
34748
  @subsection サンプルコード
34666
34749
 
34667
- @c{未実装}
34668
34750
  @verbatim
34669
- /* 追記予定 */
34751
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34752
+
34753
+ extern enum Color col;
34754
+
34755
+ void func(int num)
34756
+ {
34757
+ col = num + 1; /* W1062 */
34758
+ }
34670
34759
  @end verbatim
34671
34760
 
34672
34761
  @subsection 関連メッセージ
@@ -34688,7 +34777,7 @@ unsigned int func(unsigned int a, unsigned int b)
34688
34777
 
34689
34778
  @subsection 対応バージョン
34690
34779
 
34691
- 2.0.0 の予定
34780
+ 1.6.0
34692
34781
 
34693
34782
  @node W1063
34694
34783
  @section W1063
@@ -34700,15 +34789,17 @@ unsigned int func(unsigned int a, unsigned int b)
34700
34789
 
34701
34790
  @subsection 内容
34702
34791
 
34703
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
34704
-
34705
34792
  非列挙型から列挙型への変換が生じています。
34706
34793
 
34707
34794
  @subsection サンプルコード
34708
34795
 
34709
- @c{未実装}
34710
34796
  @verbatim
34711
- /* 追記予定 */
34797
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34798
+
34799
+ enum Color func(int num)
34800
+ {
34801
+ return num / 2; /* W1063 */
34802
+ }
34712
34803
  @end verbatim
34713
34804
 
34714
34805
  @subsection 関連メッセージ
@@ -34730,7 +34821,7 @@ unsigned int func(unsigned int a, unsigned int b)
34730
34821
 
34731
34822
  @subsection 対応バージョン
34732
34823
 
34733
- 2.0.0 の予定
34824
+ 1.6.0
34734
34825
 
34735
34826
  @node W1064
34736
34827
  @section W1064