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
@@ -1,8 +1,8 @@
1
1
  <html lang="ja">
2
2
  <head>
3
- <title>AdLint 1.4.0 利用者ガイド</title>
3
+ <title>AdLint 1.6.0 利用者ガイド</title>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="description" content="AdLint 1.4.0 利用者ガイド">
5
+ <meta name="description" content="AdLint 1.6.0 利用者ガイド">
6
6
  <meta name="generator" content="makeinfo 4.13">
7
7
  <link title="Top" rel="top" href="#Top">
8
8
  <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
44
44
  --></style>
45
45
  </head>
46
46
  <body>
47
- <h1 class="settitle">AdLint 1.4.0 利用者ガイド</h1>
47
+ <h1 class="settitle">AdLint 1.6.0 利用者ガイド</h1>
48
48
  <div class="node">
49
49
  <a name="Top"></a>
50
50
  <p><hr>
@@ -3463,18 +3463,23 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
3463
3463
 
3464
3464
  <h4 class="subsection">6.16.3 サンプルコード</h4>
3465
3465
 
3466
- <pre class="verbatim">int value;
3467
- int number;
3468
- switch(number) {
3469
- case 1:
3470
- value = 1;
3471
- break;
3472
- case 2:
3473
- value = 2;
3474
- break;
3475
- case 3;
3476
- value = 3;
3477
- break; /* W0003 */
3466
+ <pre class="verbatim">int foo(int i)
3467
+ {
3468
+ int j;
3469
+
3470
+ switch(i) { /* W0003 */
3471
+ case 1:
3472
+ j = 1;
3473
+ break;
3474
+ case 2:
3475
+ j = 2;
3476
+ break;
3477
+ case 3:
3478
+ j = 3;
3479
+ break;
3480
+ }
3481
+
3482
+ return j;
3478
3483
  }
3479
3484
  </pre>
3480
3485
 
@@ -5073,7 +5078,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
5073
5078
  <h4 class="subsection">6.55.4 関連メッセージ</h4>
5074
5079
 
5075
5080
  <ul>
5076
- <li><a href="#W0062">W0062</a> __typeof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。
5081
+ <li><a href="#W0062">W0062</a> `__typeof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。
5077
5082
  <li><a href="#W0063">W0063</a> `__alignof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。
5078
5083
  </ul>
5079
5084
 
@@ -27513,14 +27518,28 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27513
27518
 
27514
27519
  <h4 class="subsection">6.449.2 内容</h4>
27515
27520
 
27516
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
27517
-
27518
- <p>アセンブラコードは環境によって変わるため、複数の関数に点在させると、別の環境に移植するときの変更コストが大きくなります。
27521
+ <p>アセンブラコードは環境によって変わるため、複数の関数に点在させると、別の環境に移植するときの変更コストが大きくなります。
27519
27522
 
27520
27523
  <h4 class="subsection">6.449.3 サンプルコード</h4>
27521
27524
 
27522
- <!-- {未実装} -->
27523
- <pre class="verbatim">/* 追記予定 */
27525
+ <pre class="verbatim">void foo(int arg1, int *arg2, int arg3)
27526
+ {
27527
+ asm("movl %ecx, %eax"); /* W0541 */
27528
+ __asm__("movl %ecx, (%eax)"); /* W0541 */
27529
+
27530
+ asm { /* W0541 */
27531
+ xorl eax, eax
27532
+ }
27533
+
27534
+ __asm__ volatile ( /* W0541 */
27535
+ "int $0x80"
27536
+ : "=a" (r)
27537
+ "+b" (arg1),
27538
+ "+c" (arg2),
27539
+ "+d" (arg3)
27540
+ : "a" (128)
27541
+ : "memory", "cc");
27542
+ }
27524
27543
  </pre>
27525
27544
 
27526
27545
  <h4 class="subsection">6.449.4 関連メッセージ</h4>
@@ -27529,7 +27548,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27529
27548
 
27530
27549
  <h4 class="subsection">6.449.5 対応バージョン</h4>
27531
27550
 
27532
- <p>2.0.0 の予定
27551
+ <p>1.6.0
27533
27552
 
27534
27553
  <div class="node">
27535
27554
  <a name="W0542"></a>
@@ -28591,9 +28610,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
28591
28610
 
28592
28611
  <h4 class="subsection">6.475.2 内容</h4>
28593
28612
 
28594
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
28595
-
28596
- <p>このような変換指定子の動作は処理系定義のため移植性が低下します。
28613
+ <p>このような変換指定子の動作は処理系定義のため移植性が低下します。
28597
28614
 
28598
28615
  <h4 class="subsection">6.475.3 サンプルコード</h4>
28599
28616
 
@@ -28607,7 +28624,7 @@ scanf("%[a-z]", &amp;c); /* W0573 */
28607
28624
 
28608
28625
  <h4 class="subsection">6.475.5 対応バージョン</h4>
28609
28626
 
28610
- <p>2.0.0 の予定
28627
+ <p>1.6.0
28611
28628
 
28612
28629
  <div class="node">
28613
28630
  <a name="W0574"></a>
@@ -28821,9 +28838,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
28821
28838
 
28822
28839
  <h4 class="subsection">6.481.2 内容</h4>
28823
28840
 
28824
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
28825
-
28826
- <p>サンプルコードの関数では
28841
+ <p>サンプルコードの関数では
28827
28842
  <code>int</code> 型変数 <code>a</code> の 2 乗した値が <code>int</code> 型の範囲に収まらないことを想定して
28828
28843
  <code>long</code> 型変数 <code>b</code> へ代入しています。
28829
28844
  しかし、環境によっては <code>a * a</code> の演算はいったん <code>int</code> 型として結果を出したあとに
@@ -28843,7 +28858,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
28843
28858
 
28844
28859
  <h4 class="subsection">6.481.5 対応バージョン</h4>
28845
28860
 
28846
- <p>2.0.0 の予定
28861
+ <p>1.6.0
28847
28862
 
28848
28863
  <div class="node">
28849
28864
  <a name="W0580"></a>
@@ -33210,14 +33225,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33210
33225
 
33211
33226
  <h4 class="subsection">6.563.2 内容</h4>
33212
33227
 
33213
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
33214
-
33215
- <p>未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。
33228
+ <p>未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。
33216
33229
 
33217
33230
  <h4 class="subsection">6.563.3 サンプルコード</h4>
33218
33231
 
33219
- <!-- {未実装} -->
33220
- <pre class="verbatim">/* 追記予定 */
33232
+ <pre class="verbatim">char c;
33233
+ scanf("%[z-a]", &amp;c); /* W0685 */
33221
33234
  </pre>
33222
33235
 
33223
33236
  <h4 class="subsection">6.563.4 関連メッセージ</h4>
@@ -33258,7 +33271,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33258
33271
 
33259
33272
  <h4 class="subsection">6.563.5 対応バージョン</h4>
33260
33273
 
33261
- <p>2.0.0 の予定
33274
+ <p>1.6.0
33262
33275
 
33263
33276
  <div class="node">
33264
33277
  <a name="W0686"></a>
@@ -33279,14 +33292,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33279
33292
 
33280
33293
  <h4 class="subsection">6.564.2 内容</h4>
33281
33294
 
33282
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
33283
-
33284
- <p>未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。
33295
+ <p>未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。
33285
33296
 
33286
33297
  <h4 class="subsection">6.564.3 サンプルコード</h4>
33287
33298
 
33288
- <!-- {未実装} -->
33289
- <pre class="verbatim">/* 追記予定 */
33299
+ <pre class="verbatim">char c;
33300
+ scanf("%[abcda]", &amp;c); /* W0686 */
33290
33301
  </pre>
33291
33302
 
33292
33303
  <h4 class="subsection">6.564.4 関連メッセージ</h4>
@@ -33327,7 +33338,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33327
33338
 
33328
33339
  <h4 class="subsection">6.564.5 対応バージョン</h4>
33329
33340
 
33330
- <p>2.0.0 の予定
33341
+ <p>1.6.0
33331
33342
 
33332
33343
  <div class="node">
33333
33344
  <a name="W0687"></a>
@@ -34839,7 +34850,7 @@ enum Fruits { APPLE, BANANA, ORANGE };
34839
34850
  void func(void)
34840
34851
  {
34841
34852
  enum Color c;
34842
-
34853
+
34843
34854
  c = ORANGE; /* W0729 */
34844
34855
  }
34845
34856
  </pre>
@@ -37251,9 +37262,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37251
37262
 
37252
37263
  <h4 class="subsection">6.650.2 内容</h4>
37253
37264
 
37254
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
37255
-
37256
- <p>このような <code>switch</code> 文がプログラマの意図通りだとしたら、
37265
+ <p>このような <code>switch</code> 文がプログラマの意図通りだとしたら、
37257
37266
  冗長な記述という意味で問題があります。
37258
37267
  また、意図通りでないとしたら <code>case</code> 節の書き忘れが考えられますので、
37259
37268
  動作上のバグが発生する可能性があります。
@@ -37261,8 +37270,31 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37261
37270
 
37262
37271
  <h4 class="subsection">6.650.3 サンプルコード</h4>
37263
37272
 
37264
- <!-- {未実装} -->
37265
- <pre class="verbatim">/* 追記予定 */
37273
+ <pre class="verbatim">int foo(const int i)
37274
+ {
37275
+ if (i > 5) {
37276
+ switch (i) { /* W0781 */
37277
+ case 0:
37278
+ return 1;
37279
+ case 5:
37280
+ return 2;
37281
+ default:
37282
+ return 3;
37283
+ }
37284
+ }
37285
+
37286
+ switch (i) { /* OK */
37287
+ case 0:
37288
+ return 4;
37289
+ default:
37290
+ switch (i) { /* W0781 */
37291
+ case 10:
37292
+ return 5;
37293
+ default:
37294
+ return 6;
37295
+ }
37296
+ }
37297
+ }
37266
37298
  </pre>
37267
37299
 
37268
37300
  <h4 class="subsection">6.650.4 関連メッセージ</h4>
@@ -37271,7 +37303,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37271
37303
 
37272
37304
  <h4 class="subsection">6.650.5 対応バージョン</h4>
37273
37305
 
37274
- <p>2.0.0 の予定
37306
+ <p>1.6.0
37275
37307
 
37276
37308
  <div class="node">
37277
37309
  <a name="W0783"></a>
@@ -37446,17 +37478,24 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37446
37478
 
37447
37479
  <h4 class="subsection">6.655.2 内容</h4>
37448
37480
 
37449
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
37450
-
37451
- <p>宣言が異なるスコープにある場合の動作は処理系定義になります。
37481
+ <p>宣言が異なるスコープにある場合の動作は処理系定義になります。
37452
37482
  また、宣言が同じスコープにある場合は標準制約違反になります。
37453
37483
  従って、移植性が低下します。
37454
37484
  ただし、一方がもう一方の内側のスコープで宣言される場合は問題ありません。
37455
37485
 
37456
37486
  <h4 class="subsection">6.655.3 サンプルコード</h4>
37457
37487
 
37458
- <!-- {未実装} -->
37459
- <pre class="verbatim">/* 追記予定 */
37488
+ <pre class="verbatim">void func1(void)
37489
+ {
37490
+ extern int num;
37491
+ extern void func3(void);
37492
+ }
37493
+
37494
+ void func2(void)
37495
+ {
37496
+ extern double num; /* W0787 */
37497
+ extern void func3(int); /* W0787 */
37498
+ }
37460
37499
  </pre>
37461
37500
 
37462
37501
  <h4 class="subsection">6.655.4 関連メッセージ</h4>
@@ -37468,7 +37507,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37468
37507
 
37469
37508
  <h4 class="subsection">6.655.5 対応バージョン</h4>
37470
37509
 
37471
- <p>2.0.0 の予定
37510
+ <p>1.6.0
37472
37511
 
37473
37512
  <div class="node">
37474
37513
  <a name="W0788"></a>
@@ -37489,17 +37528,20 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37489
37528
 
37490
37529
  <h4 class="subsection">6.656.2 内容</h4>
37491
37530
 
37492
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
37493
-
37494
- <p>宣言が異なるスコープにある場合の動作は処理系定義になります。
37531
+ <p>宣言が異なるスコープにある場合の動作は処理系定義になります。
37495
37532
  また、宣言が同じスコープにある場合は標準制約違反になります。
37496
37533
  従って、移植性が低下します。
37497
37534
  ただし、一方がもう一方の内側のスコープで宣言される場合は問題ありません。
37498
37535
 
37499
37536
  <h4 class="subsection">6.656.3 サンプルコード</h4>
37500
37537
 
37501
- <!-- {未実装} -->
37502
- <pre class="verbatim">/* 追記予定 */
37538
+ <pre class="verbatim">extern int func(void);
37539
+
37540
+ void func(void) /* W0788 */
37541
+ {
37542
+ typedef int num;
37543
+ double num; /* W0788 */
37544
+ }
37503
37545
  </pre>
37504
37546
 
37505
37547
  <h4 class="subsection">6.656.4 関連メッセージ</h4>
@@ -37511,7 +37553,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37511
37553
 
37512
37554
  <h4 class="subsection">6.656.5 対応バージョン</h4>
37513
37555
 
37514
- <p>2.0.0 の予定
37556
+ <p>1.6.0
37515
37557
 
37516
37558
  <div class="node">
37517
37559
  <a name="W0789"></a>
@@ -37532,17 +37574,21 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37532
37574
 
37533
37575
  <h4 class="subsection">6.657.2 内容</h4>
37534
37576
 
37535
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
37536
-
37537
- <p>宣言が異なるスコープにある場合の動作は処理系定義になります。
37577
+ <p>宣言が異なるスコープにある場合の動作は処理系定義になります。
37538
37578
  また、宣言が同じスコープにある場合は標準制約違反になります。
37539
37579
  従って、移植性が低下します。
37540
37580
  ただし、一方がもう一方の内側のスコープで宣言される場合は問題ありません。
37541
37581
 
37542
37582
  <h4 class="subsection">6.657.3 サンプルコード</h4>
37543
37583
 
37544
- <!-- {未実装} -->
37545
- <pre class="verbatim">/* 追記予定 */
37584
+ <pre class="verbatim">int num = 0;
37585
+ extern int func1(void);
37586
+
37587
+ void func2(void)
37588
+ {
37589
+ extern double num; /* W0789 */
37590
+ extern void func1(void); /* W0789 */
37591
+ }
37546
37592
  </pre>
37547
37593
 
37548
37594
  <h4 class="subsection">6.657.4 関連メッセージ</h4>
@@ -37554,7 +37600,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37554
37600
 
37555
37601
  <h4 class="subsection">6.657.5 対応バージョン</h4>
37556
37602
 
37557
- <p>2.0.0 の予定
37603
+ <p>1.6.0
37558
37604
 
37559
37605
  <div class="node">
37560
37606
  <a name="W0790"></a>
@@ -38293,15 +38339,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38293
38339
 
38294
38340
  <h4 class="subsection">6.675.2 内容</h4>
38295
38341
 
38296
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
38297
-
38298
- <p>ISO C90 で規定されている予約語を定義、再定義、定義解消することは未定義の動作になります。
38342
+ <p>ISO C90 で規定されている予約語を定義、再定義、定義解消することは未定義の動作になります。
38299
38343
  したがって、予期しない動作を引き起こす可能性あります。
38300
38344
 
38301
38345
  <h4 class="subsection">6.675.3 サンプルコード</h4>
38302
38346
 
38303
- <!-- {未実装} -->
38304
- <pre class="verbatim">/* 追記予定 */
38347
+ <pre class="verbatim">#undef __STDC_VERSION__ /* W0807 */
38305
38348
  </pre>
38306
38349
 
38307
38350
  <h4 class="subsection">6.675.4 関連メッセージ</h4>
@@ -38313,7 +38356,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38313
38356
 
38314
38357
  <h4 class="subsection">6.675.5 対応バージョン</h4>
38315
38358
 
38316
- <p>2.0.0 の予定
38359
+ <p>1.6.0
38317
38360
 
38318
38361
  <div class="node">
38319
38362
  <a name="W0808"></a>
@@ -38334,15 +38377,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38334
38377
 
38335
38378
  <h4 class="subsection">6.676.2 内容</h4>
38336
38379
 
38337
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
38338
-
38339
- <p>ISO C90 で規定されている予約語を定義、再定義、定義解消することは未定義の動作になります。
38380
+ <p>ISO C90 で規定されている予約語を定義、再定義、定義解消することは未定義の動作になります。
38340
38381
  したがって、予期しない動作を引き起こす可能性あります。
38341
38382
 
38342
38383
  <h4 class="subsection">6.676.3 サンプルコード</h4>
38343
38384
 
38344
- <!-- {未実装} -->
38345
- <pre class="verbatim">/* 追記予定 */
38385
+ <pre class="verbatim">#define __FILE__ "test.c" /* W0808 */
38346
38386
  </pre>
38347
38387
 
38348
38388
  <h4 class="subsection">6.676.4 関連メッセージ</h4>
@@ -38354,7 +38394,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38354
38394
 
38355
38395
  <h4 class="subsection">6.676.5 対応バージョン</h4>
38356
38396
 
38357
- <p>2.0.0 の予定
38397
+ <p>1.6.0
38358
38398
 
38359
38399
  <div class="node">
38360
38400
  <a name="W0809"></a>
@@ -38375,15 +38415,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38375
38415
 
38376
38416
  <h4 class="subsection">6.677.2 内容</h4>
38377
38417
 
38378
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
38379
-
38380
- <p>ISO C90 で規定されている予約語を再使用することは未定義の動作になります。
38418
+ <p>ISO C90 で規定されている予約語を再使用することは未定義の動作になります。
38381
38419
  したがって、予期しない動作を引き起こす可能性あります。
38382
38420
 
38383
38421
  <h4 class="subsection">6.677.3 サンプルコード</h4>
38384
38422
 
38385
- <!-- {未実装} -->
38386
- <pre class="verbatim">/* 追記予定 */
38423
+ <pre class="verbatim">extern int __value; /* W0809 */
38424
+ int _VAL = 10; /* W0809 */
38425
+ static void _func(void); /* W0809 */
38387
38426
  </pre>
38388
38427
 
38389
38428
  <h4 class="subsection">6.677.4 関連メッセージ</h4>
@@ -38392,7 +38431,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38392
38431
 
38393
38432
  <h4 class="subsection">6.677.5 対応バージョン</h4>
38394
38433
 
38395
- <p>2.0.0 の予定
38434
+ <p>1.6.0
38396
38435
 
38397
38436
  <div class="node">
38398
38437
  <a name="W0810"></a>
@@ -39114,14 +39153,26 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39114
39153
 
39115
39154
  <h4 class="subsection">6.696.2 内容</h4>
39116
39155
 
39117
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
39118
-
39119
- <p>同じ名前のラベルが、関数内で 2 回以上使われています。このような使い方は誤りです。
39156
+ <p>同じ名前のラベルが、関数内で 2 回以上使われています。このような使い方は誤りです。
39120
39157
 
39121
39158
  <h4 class="subsection">6.696.3 サンプルコード</h4>
39122
39159
 
39123
- <!-- {未実装} -->
39124
- <pre class="verbatim">/* 追記予定 */
39160
+ <pre class="verbatim">void func(int a, int b)
39161
+ {
39162
+ if (a == 0) {
39163
+ int c = 0;
39164
+ RETRY:
39165
+ b = 10;
39166
+ }
39167
+
39168
+ if (b != 0) {
39169
+ goto RETRY;
39170
+ }
39171
+ RETRY: /* W1030 */
39172
+ b = 1;
39173
+
39174
+ ...snip...
39175
+ }
39125
39176
  </pre>
39126
39177
 
39127
39178
  <h4 class="subsection">6.696.4 関連メッセージ</h4>
@@ -39130,7 +39181,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39130
39181
 
39131
39182
  <h4 class="subsection">6.696.5 対応バージョン</h4>
39132
39183
 
39133
- <p>2.0.0 の予定
39184
+ <p>1.6.0
39134
39185
 
39135
39186
  <div class="node">
39136
39187
  <a name="W1031"></a>
@@ -40015,14 +40066,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40015
40066
 
40016
40067
  <h4 class="subsection">6.718.2 内容</h4>
40017
40068
 
40018
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40019
-
40020
- <p>非列挙型から列挙型への変換が生じています。
40069
+ <p>非列挙型から列挙型への変換が生じています。
40021
40070
 
40022
40071
  <h4 class="subsection">6.718.3 サンプルコード</h4>
40023
40072
 
40024
- <!-- {未実装} -->
40025
- <pre class="verbatim">/* 追記予定 */
40073
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40074
+
40075
+ extern void func1(enum Color);
40076
+
40077
+ void func2(void)
40078
+ {
40079
+ func1(4); /* W1053 */
40080
+ }
40026
40081
  </pre>
40027
40082
 
40028
40083
  <h4 class="subsection">6.718.4 関連メッセージ</h4>
@@ -40044,7 +40099,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40044
40099
 
40045
40100
  <h4 class="subsection">6.718.5 対応バージョン</h4>
40046
40101
 
40047
- <p>2.0.0 の予定
40102
+ <p>1.6.0
40048
40103
 
40049
40104
  <div class="node">
40050
40105
  <a name="W1054"></a>
@@ -40065,14 +40120,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40065
40120
 
40066
40121
  <h4 class="subsection">6.719.2 内容</h4>
40067
40122
 
40068
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40069
-
40070
- <p>非列挙型から列挙型への変換が生じています。
40123
+ <p>非列挙型から列挙型への変換が生じています。
40071
40124
 
40072
40125
  <h4 class="subsection">6.719.3 サンプルコード</h4>
40073
40126
 
40074
- <!-- {未実装} -->
40075
- <pre class="verbatim">/* 追記予定 */
40127
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40128
+
40129
+ extern enum Color col;
40130
+
40131
+ void func2(void)
40132
+ {
40133
+ col = 4; /* W1054 */
40134
+ }
40076
40135
  </pre>
40077
40136
 
40078
40137
  <h4 class="subsection">6.719.4 関連メッセージ</h4>
@@ -40094,7 +40153,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40094
40153
 
40095
40154
  <h4 class="subsection">6.719.5 対応バージョン</h4>
40096
40155
 
40097
- <p>2.0.0 の予定
40156
+ <p>1.6.0
40098
40157
 
40099
40158
  <div class="node">
40100
40159
  <a name="W1055"></a>
@@ -40115,14 +40174,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40115
40174
 
40116
40175
  <h4 class="subsection">6.720.2 内容</h4>
40117
40176
 
40118
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40119
-
40120
- <p>列挙型から非列挙型への変換が生じています。
40177
+ <p>列挙型から非列挙型への変換が生じています。
40121
40178
 
40122
40179
  <h4 class="subsection">6.720.3 サンプルコード</h4>
40123
40180
 
40124
- <!-- {未実装} -->
40125
- <pre class="verbatim">/* 追記予定 */
40181
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40182
+
40183
+ enum Color func(void)
40184
+ {
40185
+ return 4; /* W1055 */
40186
+ }
40126
40187
  </pre>
40127
40188
 
40128
40189
  <h4 class="subsection">6.720.4 関連メッセージ</h4>
@@ -40144,7 +40205,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40144
40205
 
40145
40206
  <h4 class="subsection">6.720.5 対応バージョン</h4>
40146
40207
 
40147
- <p>2.0.0 の予定
40208
+ <p>1.6.0
40148
40209
 
40149
40210
  <div class="node">
40150
40211
  <a name="W1056"></a>
@@ -40165,13 +40226,19 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40165
40226
 
40166
40227
  <h4 class="subsection">6.721.2 内容</h4>
40167
40228
 
40168
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40169
-
40170
- <p>列挙型から異なる列挙型への変換が生じています。
40229
+ <p>列挙型から異なる列挙型への変換が生じています。
40171
40230
 
40172
40231
  <h4 class="subsection">6.721.3 サンプルコード</h4>
40173
40232
 
40174
- <pre class="verbatim">/* 追記予定 */
40233
+ <pre class="verbatim">enum Color { RED = 1, GREEN= 2, BLUE = 4 };
40234
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
40235
+
40236
+ extern void func1(enum Color);
40237
+
40238
+ void func2(enum Season ssn)
40239
+ {
40240
+ func1(ssn); /* W1056 */
40241
+ }
40175
40242
  </pre>
40176
40243
 
40177
40244
  <h4 class="subsection">6.721.4 関連メッセージ</h4>
@@ -40193,7 +40260,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40193
40260
 
40194
40261
  <h4 class="subsection">6.721.5 対応バージョン</h4>
40195
40262
 
40196
- <p>2.0.0 の予定
40263
+ <p>1.6.0
40197
40264
 
40198
40265
  <div class="node">
40199
40266
  <a name="W1057"></a>
@@ -40214,14 +40281,19 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40214
40281
 
40215
40282
  <h4 class="subsection">6.722.2 内容</h4>
40216
40283
 
40217
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40218
-
40219
- <p>列挙型から異なる列挙型への変換が生じています。
40284
+ <p>列挙型から異なる列挙型への変換が生じています。
40220
40285
 
40221
40286
  <h4 class="subsection">6.722.3 サンプルコード</h4>
40222
40287
 
40223
- <!-- {未実装} -->
40224
- <pre class="verbatim">/* 追記予定 */
40288
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40289
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
40290
+
40291
+ extern enum Color col;
40292
+
40293
+ void func(enum Season ssn)
40294
+ {
40295
+ col = ssn; /* W1057 */
40296
+ }
40225
40297
  </pre>
40226
40298
 
40227
40299
  <h4 class="subsection">6.722.4 関連メッセージ</h4>
@@ -40243,7 +40315,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40243
40315
 
40244
40316
  <h4 class="subsection">6.722.5 対応バージョン</h4>
40245
40317
 
40246
- <p>2.0.0 の予定
40318
+ <p>1.6.0
40247
40319
 
40248
40320
  <div class="node">
40249
40321
  <a name="W1058"></a>
@@ -40264,14 +40336,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40264
40336
 
40265
40337
  <h4 class="subsection">6.723.2 内容</h4>
40266
40338
 
40267
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40268
-
40269
- <p>列挙型から異なる列挙型への変換が生じています。
40339
+ <p>列挙型から異なる列挙型への変換が生じています。
40270
40340
 
40271
40341
  <h4 class="subsection">6.723.3 サンプルコード</h4>
40272
40342
 
40273
- <!-- {未実装} -->
40274
- <pre class="verbatim">/* 追記予定 */
40343
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40344
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
40345
+
40346
+ enum Color func(enum Season ssn)
40347
+ {
40348
+ return ssn; /* W1058 */
40349
+ }
40275
40350
  </pre>
40276
40351
 
40277
40352
  <h4 class="subsection">6.723.4 関連メッセージ</h4>
@@ -40293,7 +40368,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40293
40368
 
40294
40369
  <h4 class="subsection">6.723.5 対応バージョン</h4>
40295
40370
 
40296
- <p>2.0.0 の予定
40371
+ <p>1.6.0
40297
40372
 
40298
40373
  <div class="node">
40299
40374
  <a name="W1059"></a>
@@ -40314,14 +40389,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40314
40389
 
40315
40390
  <h4 class="subsection">6.724.2 内容</h4>
40316
40391
 
40317
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40318
-
40319
- <p>列挙型から非列挙型への変換が生じています。
40392
+ <p>列挙型から非列挙型への変換が生じています。
40320
40393
 
40321
40394
  <h4 class="subsection">6.724.3 サンプルコード</h4>
40322
40395
 
40323
- <!-- {未実装} -->
40324
- <pre class="verbatim">/* 追記予定 */
40396
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40397
+
40398
+ extern void func1(int num);
40399
+
40400
+ void func2(enum Color col)
40401
+ {
40402
+ func1(col); /* W1059 */
40403
+ }
40325
40404
  </pre>
40326
40405
 
40327
40406
  <h4 class="subsection">6.724.4 関連メッセージ</h4>
@@ -40343,7 +40422,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40343
40422
 
40344
40423
  <h4 class="subsection">6.724.5 対応バージョン</h4>
40345
40424
 
40346
- <p>2.0.0 の予定
40425
+ <p>1.6.0
40347
40426
 
40348
40427
  <div class="node">
40349
40428
  <a name="W1060"></a>
@@ -40364,14 +40443,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40364
40443
 
40365
40444
  <h4 class="subsection">6.725.2 内容</h4>
40366
40445
 
40367
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40368
-
40369
- <p>非列挙型から列挙型への変換が生じています。
40446
+ <p>非列挙型から列挙型への変換が生じています。
40370
40447
 
40371
40448
  <h4 class="subsection">6.725.3 サンプルコード</h4>
40372
40449
 
40373
- <!-- {未実装} -->
40374
- <pre class="verbatim">/* 追記予定 */
40450
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40451
+
40452
+ int func2(enum Color col)
40453
+ {
40454
+ return col; /* W1060 */
40455
+ }
40375
40456
  </pre>
40376
40457
 
40377
40458
  <h4 class="subsection">6.725.4 関連メッセージ</h4>
@@ -40393,7 +40474,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40393
40474
 
40394
40475
  <h4 class="subsection">6.725.5 対応バージョン</h4>
40395
40476
 
40396
- <p>2.0.0 の予定
40477
+ <p>1.6.0
40397
40478
 
40398
40479
  <div class="node">
40399
40480
  <a name="W1061"></a>
@@ -40414,14 +40495,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40414
40495
 
40415
40496
  <h4 class="subsection">6.726.2 内容</h4>
40416
40497
 
40417
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40418
-
40419
- <p>非列挙型から列挙型への変換が生じています。
40498
+ <p>非列挙型から列挙型への変換が生じています。
40420
40499
 
40421
40500
  <h4 class="subsection">6.726.3 サンプルコード</h4>
40422
40501
 
40423
- <!-- {未実装} -->
40424
- <pre class="verbatim">/* 追記予定 */
40502
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40503
+
40504
+ extern void func1(enum Color);
40505
+
40506
+ void func2(int num)
40507
+ {
40508
+ func1(num); /* W1061 */
40509
+ }
40425
40510
  </pre>
40426
40511
 
40427
40512
  <h4 class="subsection">6.726.4 関連メッセージ</h4>
@@ -40443,7 +40528,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40443
40528
 
40444
40529
  <h4 class="subsection">6.726.5 対応バージョン</h4>
40445
40530
 
40446
- <p>2.0.0 の予定
40531
+ <p>1.6.0
40447
40532
 
40448
40533
  <div class="node">
40449
40534
  <a name="W1062"></a>
@@ -40464,14 +40549,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40464
40549
 
40465
40550
  <h4 class="subsection">6.727.2 内容</h4>
40466
40551
 
40467
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40468
-
40469
- <p>非列挙型から列挙型への変換が生じています。
40552
+ <p>非列挙型から列挙型への変換が生じています。
40470
40553
 
40471
40554
  <h4 class="subsection">6.727.3 サンプルコード</h4>
40472
40555
 
40473
- <!-- {未実装} -->
40474
- <pre class="verbatim">/* 追記予定 */
40556
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40557
+
40558
+ extern enum Color col;
40559
+
40560
+ void func(int num)
40561
+ {
40562
+ col = num + 1; /* W1062 */
40563
+ }
40475
40564
  </pre>
40476
40565
 
40477
40566
  <h4 class="subsection">6.727.4 関連メッセージ</h4>
@@ -40493,7 +40582,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40493
40582
 
40494
40583
  <h4 class="subsection">6.727.5 対応バージョン</h4>
40495
40584
 
40496
- <p>2.0.0 の予定
40585
+ <p>1.6.0
40497
40586
 
40498
40587
  <div class="node">
40499
40588
  <a name="W1063"></a>
@@ -40514,14 +40603,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40514
40603
 
40515
40604
  <h4 class="subsection">6.728.2 内容</h4>
40516
40605
 
40517
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40518
-
40519
- <p>非列挙型から列挙型への変換が生じています。
40606
+ <p>非列挙型から列挙型への変換が生じています。
40520
40607
 
40521
40608
  <h4 class="subsection">6.728.3 サンプルコード</h4>
40522
40609
 
40523
- <!-- {未実装} -->
40524
- <pre class="verbatim">/* 追記予定 */
40610
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40611
+
40612
+ enum Color func(int num)
40613
+ {
40614
+ return num / 2; /* W1063 */
40615
+ }
40525
40616
  </pre>
40526
40617
 
40527
40618
  <h4 class="subsection">6.728.4 関連メッセージ</h4>
@@ -40543,7 +40634,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40543
40634
 
40544
40635
  <h4 class="subsection">6.728.5 対応バージョン</h4>
40545
40636
 
40546
- <p>2.0.0 の予定
40637
+ <p>1.6.0
40547
40638
 
40548
40639
  <div class="node">
40549
40640
  <a name="W1064"></a>