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.
- data/ChangeLog +413 -5
- data/MANIFEST +6 -0
- data/NEWS +43 -4
- data/etc/mesg.d/en_US/messages.yml +1 -1
- data/etc/mesg.d/ja_JP/messages.yml +1 -1
- data/lib/adlint/c.rb +1 -0
- data/lib/adlint/c/enum.rb +52 -0
- data/lib/adlint/c/expr.rb +43 -102
- data/lib/adlint/c/interp.rb +1 -1
- data/lib/adlint/c/mediator.rb +1 -0
- data/lib/adlint/c/message.rb +831 -49
- data/lib/adlint/c/message_shima.rb +236 -0
- data/lib/adlint/c/metric.rb +9 -0
- data/lib/adlint/c/object.rb +37 -32
- data/lib/adlint/c/parser.rb +7 -7
- data/lib/adlint/c/parser.y +7 -7
- data/lib/adlint/c/phase.rb +21 -0
- data/lib/adlint/c/syntax.rb +11 -4
- data/lib/adlint/c/type.rb +1 -1
- data/lib/adlint/cpp.rb +1 -0
- data/lib/adlint/cpp/asm.rb +73 -0
- data/lib/adlint/cpp/message.rb +13 -0
- data/lib/adlint/cpp/message_shima.rb +36 -0
- data/lib/adlint/cpp/phase.rb +3 -0
- data/lib/adlint/cpp/source.rb +9 -0
- data/lib/adlint/version.rb +3 -3
- data/share/demo/Makefile +4 -0
- data/share/demo/bad_conv/bad_conv.c +12 -0
- data/share/demo/bad_enum/bad_enum.c +48 -2
- data/share/demo/bad_label/bad_label.c +26 -0
- data/share/demo/bad_macro/bad_macro.c +3 -0
- data/share/demo/implicit_conv/implicit_conv.c +1 -0
- data/share/demo/inline_asm/inline_asm.c +18 -0
- data/share/demo/invalid_call/invalid_call.c +5 -0
- data/share/demo/multi_decl/multi_decl_1.c +30 -0
- data/share/demo/overflow/overflow.c +3 -3
- data/share/demo/redundant_select/redundant_select.c +25 -0
- data/share/demo/reserved_ident/reserved_ident.c +98 -0
- data/share/doc/developers_guide_ja.html +3 -3
- data/share/doc/developers_guide_ja.texi +1 -1
- data/share/doc/users_guide_en.html +234 -126
- data/share/doc/users_guide_en.texi +207 -98
- data/share/doc/users_guide_ja.html +247 -156
- data/share/doc/users_guide_ja.texi +221 -130
- data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +1 -1
- 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.
|
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
|
3329
|
-
|
3330
|
-
|
3331
|
-
|
3332
|
-
|
3333
|
-
|
3334
|
-
|
3335
|
-
|
3336
|
-
|
3337
|
-
|
3338
|
-
|
3339
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
34824
|
+
1.6.0
|
34734
34825
|
|
34735
34826
|
@node W1064
|
34736
34827
|
@section W1064
|