adlint 1.6.0 → 1.8.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 (50) hide show
  1. data/ChangeLog +389 -37
  2. data/INSTALL +3 -0
  3. data/MANIFEST +7 -0
  4. data/NEWS +50 -10
  5. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
  6. data/etc/mesg.d/en_US/messages.yml +7 -7
  7. data/etc/mesg.d/ja_JP/messages.yml +4 -4
  8. data/lib/adlint/c/branch.rb +4 -4
  9. data/lib/adlint/c/code.rb +11 -13
  10. data/lib/adlint/c/enum.rb +0 -2
  11. data/lib/adlint/c/environ.rb +13 -7
  12. data/lib/adlint/c/expr.rb +5 -1
  13. data/lib/adlint/c/interp.rb +10 -6
  14. data/lib/adlint/c/mediator.rb +1 -0
  15. data/lib/adlint/c/message.rb +294 -111
  16. data/lib/adlint/c/message_shima.rb +63 -0
  17. data/lib/adlint/c/metric.rb +25 -13
  18. data/lib/adlint/c/object.rb +168 -31
  19. data/lib/adlint/c/parser.rb +3 -3
  20. data/lib/adlint/c/phase.rb +20 -3
  21. data/lib/adlint/c/syntax.rb +175 -17
  22. data/lib/adlint/c/value.rb +199 -126
  23. data/lib/adlint/cpp/asm.rb +4 -4
  24. data/lib/adlint/cpp/constexpr.rb +1 -1
  25. data/lib/adlint/cpp/eval.rb +6 -4
  26. data/lib/adlint/cpp/message.rb +100 -7
  27. data/lib/adlint/cpp/phase.rb +12 -1
  28. data/lib/adlint/cpp/source.rb +2 -2
  29. data/lib/adlint/cpp/subst.rb +2 -4
  30. data/lib/adlint/lang.rb +5 -3
  31. data/lib/adlint/ld/metric.rb +1 -1
  32. data/lib/adlint/version.rb +2 -2
  33. data/share/demo/Makefile +5 -0
  34. data/share/demo/bad_include/bad_include.c +13 -0
  35. data/share/demo/bad_include/test'1'.h +0 -0
  36. data/share/demo/bad_include/test'2'.h +0 -0
  37. data/share/demo/incomplete_ifelse/incomplete_ifelse.c +29 -0
  38. data/share/demo/inline_asm/inline_asm.c +25 -0
  39. data/share/demo/invalid_call/invalid_call.c +12 -4
  40. data/share/demo/logical_expr/logical_expr.c +73 -0
  41. data/share/demo/register_vars/register_vars.c +12 -0
  42. data/share/demo/typedef_each_src/typedef_each_src.c +9 -0
  43. data/share/demo/wrap_around/wrap_around.c +17 -0
  44. data/share/doc/developers_guide_ja.html +3 -3
  45. data/share/doc/developers_guide_ja.texi +1 -1
  46. data/share/doc/users_guide_en.html +137 -102
  47. data/share/doc/users_guide_en.texi +121 -86
  48. data/share/doc/users_guide_ja.html +118 -91
  49. data/share/doc/users_guide_ja.texi +103 -76
  50. metadata +10 -3
@@ -1,8 +1,8 @@
1
1
  <html lang="ja">
2
2
  <head>
3
- <title>AdLint 1.6.0 利用者ガイド</title>
3
+ <title>AdLint 1.8.0 利用者ガイド</title>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="description" content="AdLint 1.6.0 利用者ガイド">
5
+ <meta name="description" content="AdLint 1.8.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.6.0 利用者ガイド</h1>
47
+ <h1 class="settitle">AdLint 1.8.0 利用者ガイド</h1>
48
48
  <div class="node">
49
49
  <a name="Top"></a>
50
50
  <p><hr>
@@ -2600,7 +2600,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
2600
2600
  <li><a href="#W0535">W0535</a>: for 文の制御式の中にカンマ演算子が使われています。
2601
2601
  <li><a href="#W0538">W0538</a>: この default ラベルは、switch 文内の最後のラベルではありません。
2602
2602
  <li><a href="#W0540">W0540</a>: 空の仮引数並びの関数が定義されています。`void' が省略されています。
2603
- <li><a href="#W0541">W0541</a>: この関数には C コードとインラインアセンブリコードが混在しています。
2603
+ <li><a href="#W0541">W0541</a>: マクロで隠蔽されないインラインアセンブリコードです。
2604
2604
  <li><a href="#W0542">W0542</a>: 関数宣言の仮引数の一部にのみ識別子が存在します。
2605
2605
  <li><a href="#W0543">W0543</a>: この関数宣言における仮引数の識別子は、以前の宣言の仮引数の識別子と異なります。
2606
2606
  <li><a href="#W0544">W0544</a>: 関数宣言の仮引数の識別子と関数ポインタの宣言の仮引数の識別子が異なります。
@@ -2665,8 +2665,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
2665
2665
  <li><a href="#W0627">W0627</a>: 一行に、空文(`;' だけの文)が、他のコードの後にあります。
2666
2666
  <li><a href="#W0628">W0628</a>: 関数 `%s' が定義されていますが、このプロジェクトでは使われていません。
2667
2667
  <li><a href="#W0629">W0629</a>: static 関数 `%s()' は、この翻訳単位の中で使われていません。
2668
- <li><a href="#W0632">W0632</a>: `#include &lt;%s&gt;' の中で `''、`"' または `/*' を使うと、未定義の動作になります。
2669
- <li><a href="#W0633">W0633</a>: `#include "%s"' の中で `'' や `/*' を使うと、未定義の動作になります。
2668
+ <li><a href="#W0632">W0632</a>: `#include &lt;%s&gt;' の中で ' " 文字を使うと、未定義の動作になります。
2669
+ <li><a href="#W0633">W0633</a>: `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
2670
2670
  <li><a href="#W0634">W0634</a>: `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
2671
2671
  <li><a href="#W0635">W0635</a>: %s 番目の変換指定子と、対応する実引数の型が合いません。
2672
2672
  <li><a href="#W0636">W0636</a>: %s 番目の変換指定子に対応する実引数が存在しません。
@@ -27514,7 +27514,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27514
27514
 
27515
27515
  <h4 class="subsection">6.449.1 メッセージ本文</h4>
27516
27516
 
27517
- <p>この関数には C コードとインラインアセンブリコードが混在しています。
27517
+ <p>マクロで隠蔽されないインラインアセンブリコードです。
27518
27518
 
27519
27519
  <h4 class="subsection">6.449.2 内容</h4>
27520
27520
 
@@ -27522,7 +27522,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27522
27522
 
27523
27523
  <h4 class="subsection">6.449.3 サンプルコード</h4>
27524
27524
 
27525
- <pre class="verbatim">void foo(int arg1, int *arg2, int arg3)
27525
+ <pre class="verbatim">#define ASM_CODE asm("movl %ecx, %eax")
27526
+
27527
+ void foo(int arg1, int *arg2, int arg3)
27526
27528
  {
27527
27529
  asm("movl %ecx, %eax"); /* W0541 */
27528
27530
  __asm__("movl %ecx, (%eax)"); /* W0541 */
@@ -27531,6 +27533,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27531
27533
  xorl eax, eax
27532
27534
  }
27533
27535
 
27536
+ ASM_CODE; /* OK */
27537
+
27534
27538
  __asm__ volatile ( /* W0541 */
27535
27539
  "int $0x80"
27536
27540
  : "=a" (r)
@@ -29639,17 +29643,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29639
29643
 
29640
29644
  <h4 class="subsection">6.498.2 内容</h4>
29641
29645
 
29642
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
29643
-
29644
- <p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
29646
+ <p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
29645
29647
  そのような値が符号無し型に変換されることで意図しない動作を引き起こす可能性があります。
29646
29648
 
29647
29649
  <h4 class="subsection">6.498.3 サンプルコード</h4>
29648
29650
 
29649
- <pre class="verbatim">int a = func();
29650
-
29651
- if (a &lt; 0) {
29652
- unsigned int b = a; /* W0607 */
29651
+ <pre class="verbatim">void func(int a)
29652
+ {
29653
+ if (a &lt; 0) {
29654
+ unsigned int b = (unsigned int) a; /* W0607 */
29655
+ }
29653
29656
  }
29654
29657
  </pre>
29655
29658
 
@@ -29661,7 +29664,7 @@ if (a &lt; 0) {
29661
29664
 
29662
29665
  <h4 class="subsection">6.498.5 対応バージョン</h4>
29663
29666
 
29664
- <p>2.0.0 の予定
29667
+ <p>1.8.0
29665
29668
 
29666
29669
  <div class="node">
29667
29670
  <a name="W0608"></a>
@@ -29682,15 +29685,19 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29682
29685
 
29683
29686
  <h4 class="subsection">6.499.2 内容</h4>
29684
29687
 
29685
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
29686
-
29687
- <p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
29688
+ <p>明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
29688
29689
  そのような値が符号無し型に変換されることで意図しない動作を引き起こす可能性があります。
29689
29690
 
29690
29691
  <h4 class="subsection">6.499.3 サンプルコード</h4>
29691
29692
 
29692
- <!-- {未実装} -->
29693
- <pre class="verbatim">/* 追記予定 */
29693
+ <pre class="verbatim">void fuu(int a)
29694
+ {
29695
+ unsigned char b;
29696
+
29697
+ if (a &lt; 256) {
29698
+ b = (unsigned char) a; /* W0608 */
29699
+ }
29700
+ }
29694
29701
  </pre>
29695
29702
 
29696
29703
  <h4 class="subsection">6.499.4 関連メッセージ</h4>
@@ -29701,7 +29708,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29701
29708
 
29702
29709
  <h4 class="subsection">6.499.5 対応バージョン</h4>
29703
29710
 
29704
- <p>2.0.0 の予定
29711
+ <p>1.8.0
29705
29712
 
29706
29713
  <div class="node">
29707
29714
  <a name="W0609"></a>
@@ -30125,14 +30132,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30125
30132
 
30126
30133
  <h4 class="subsection">6.509.2 内容</h4>
30127
30134
 
30128
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
30129
-
30130
- <p><code>typedef</code> 宣言はヘッダファイル内でのみ行うべきです。このような記述は保守性を低下させます。
30135
+ <p><code>typedef</code> 宣言はヘッダファイル内でのみ行うべきです。このような記述は保守性を低下させます。
30131
30136
 
30132
30137
  <h4 class="subsection">6.509.3 サンプルコード</h4>
30133
30138
 
30134
- <!-- {未実装} -->
30135
- <pre class="verbatim">/* 追記予定 */
30139
+ <pre class="verbatim">typedef int *INT_PTR; /* W0625 */
30140
+
30141
+ extern INT_PTR func(void);
30142
+
30143
+ INT_PTR func(void)
30144
+ {
30145
+ return 0;
30146
+ }
30136
30147
  </pre>
30137
30148
 
30138
30149
  <h4 class="subsection">6.509.4 関連メッセージ</h4>
@@ -30141,7 +30152,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30141
30152
 
30142
30153
  <h4 class="subsection">6.509.5 対応バージョン</h4>
30143
30154
 
30144
- <p>2.0.0 の予定
30155
+ <p>1.8.0
30145
30156
 
30146
30157
  <div class="node">
30147
30158
  <a name="W0626"></a>
@@ -30328,30 +30339,27 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30328
30339
 
30329
30340
  <h4 class="subsection">6.514.1 メッセージ本文</h4>
30330
30341
 
30331
- <p>`#include &lt;%s&gt;' の中で `&rdquo;、`"' または `/*' を使うと、未定義の動作になります。
30342
+ <p>`<code>#include &lt;%s&gt;</code>' の中で ' " 文字を使うと、未定義の動作になります。
30332
30343
 
30333
30344
  <h4 class="subsection">6.514.2 内容</h4>
30334
30345
 
30335
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
30336
-
30337
- <p>`<code>'</code>'、`<code>"</code>' または `<code>/*</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
30346
+ <p>`<code>'</code>'、`<code>"</code>' または `<code>/*</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
30338
30347
 
30339
30348
  <h4 class="subsection">6.514.3 サンプルコード</h4>
30340
30349
 
30341
- <!-- {未実装} -->
30342
- <pre class="verbatim">/* 追記予定 */
30350
+ <pre class="verbatim">#include &lt;NG'_header.h> /* W0632 */
30343
30351
  </pre>
30344
30352
 
30345
30353
  <h4 class="subsection">6.514.4 関連メッセージ</h4>
30346
30354
 
30347
30355
  <ul>
30348
- <li><a href="#W0633">W0633</a> `#include "%s"' の中で `&rdquo; や `/*' を使うと、未定義の動作になります。
30356
+ <li><a href="#W0633">W0633</a> `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
30349
30357
  <li><a href="#W0634">W0634</a> `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
30350
30358
  </ul>
30351
30359
 
30352
30360
  <h4 class="subsection">6.514.5 対応バージョン</h4>
30353
30361
 
30354
- <p>2.0.0 の予定
30362
+ <p>1.8.0
30355
30363
 
30356
30364
  <div class="node">
30357
30365
  <a name="W0633"></a>
@@ -30368,30 +30376,27 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30368
30376
 
30369
30377
  <h4 class="subsection">6.515.1 メッセージ本文</h4>
30370
30378
 
30371
- <p>`<code>#include "%s"</code>' の中で `<code>'</code>' や `<code>/*</code>' を使うと、未定義の動作になります。
30379
+ <p>`<code>#include "%s"</code>' の中で ' 文字を使うと、未定義の動作になります。
30372
30380
 
30373
30381
  <h4 class="subsection">6.515.2 内容</h4>
30374
30382
 
30375
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
30376
-
30377
- <p>`<code>'</code>'、`<code>"</code>' または `<code>/*</code>' を <code>#include</code> 文で使用すると、未定義の動作になります。
30383
+ <p>`<code>'</code>' <code>#include</code> 文で使用すると、未定義の動作になります。
30378
30384
 
30379
30385
  <h4 class="subsection">6.515.3 サンプルコード</h4>
30380
30386
 
30381
- <!-- {未実装} -->
30382
- <pre class="verbatim">/* 追記予定 */
30387
+ <pre class="verbatim">#include "NG'_header.h" /* W0633 */
30383
30388
  </pre>
30384
30389
 
30385
30390
  <h4 class="subsection">6.515.4 関連メッセージ</h4>
30386
30391
 
30387
30392
  <ul>
30388
- <li><a href="#W0632">W0632</a> `#include &lt;%s&gt;' の中で `&rdquo;、`"' または `/*' を使うと、未定義の動作になります。
30393
+ <li><a href="#W0632">W0632</a> `#include &lt;%s&gt;' の中で ' " 文字を使うと、未定義の動作になります。
30389
30394
  <li><a href="#W0634">W0634</a> `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
30390
30395
  </ul>
30391
30396
 
30392
30397
  <h4 class="subsection">6.515.5 対応バージョン</h4>
30393
30398
 
30394
- <p>2.0.0 の予定
30399
+ <p>1.8.0
30395
30400
 
30396
30401
  <div class="node">
30397
30402
  <a name="W0634"></a>
@@ -30412,26 +30417,24 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30412
30417
 
30413
30418
  <h4 class="subsection">6.516.2 内容</h4>
30414
30419
 
30415
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
30416
-
30417
- <p><code>\</code> は PC 環境におけるパス区切り文字であり、<code>#include</code> 文で使用することで移植性を損ないます。
30420
+ <p><code>\</code> PC 環境におけるパス区切り文字であり、<code>#include</code> 文で使用することで移植性を損ないます。
30418
30421
 
30419
30422
  <h4 class="subsection">6.516.3 サンプルコード</h4>
30420
30423
 
30421
- <!-- {未実装} -->
30422
- <pre class="verbatim">/* 追記予定 */
30424
+ <pre class="verbatim">#include "..\ng\header.h" /* W0634 */
30425
+ #include "..\\ng\\header.h" /* W0634 */
30423
30426
  </pre>
30424
30427
 
30425
30428
  <h4 class="subsection">6.516.4 関連メッセージ</h4>
30426
30429
 
30427
30430
  <ul>
30428
- <li><a href="#W0632">W0632</a> `#include &lt;%s&gt;' の中で `&rdquo;、`"' または `/*' を使うと、未定義の動作になります。
30429
- <li><a href="#W0633">W0633</a> `#include "%s"' の中で `&rdquo; や `/*' を使うと、未定義の動作になります。
30431
+ <li><a href="#W0632">W0632</a> `#include &lt;%s&gt;' の中で ' " 文字を使うと、未定義の動作になります。
30432
+ <li><a href="#W0633">W0633</a> `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
30430
30433
  </ul>
30431
30434
 
30432
30435
  <h4 class="subsection">6.516.5 対応バージョン</h4>
30433
30436
 
30434
- <p>2.0.0 の予定
30437
+ <p>1.8.0
30435
30438
 
30436
30439
  <div class="node">
30437
30440
  <a name="W0635"></a>
@@ -30742,14 +30745,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30742
30745
 
30743
30746
  <h4 class="subsection">6.524.2 内容</h4>
30744
30747
 
30745
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
30746
-
30747
- <p>未定義の動作のため、予期しない動作を引き起こす可能性があります。
30748
+ <p>未定義の動作のため、予期しない動作を引き起こす可能性があります。
30748
30749
 
30749
30750
  <h4 class="subsection">6.524.3 サンプルコード</h4>
30750
30751
 
30751
- <pre class="verbatim">register int arr1[3]; /* W0642 */
30752
- int* p = arr1;
30752
+ <pre class="verbatim">void func(void)
30753
+ {
30754
+ register int a[3];
30755
+
30756
+ int *p1 = a; /* W0642 */
30757
+ int *p2 = &amp;a[1]; /* W0642 */
30758
+ }
30753
30759
  </pre>
30754
30760
 
30755
30761
  <h4 class="subsection">6.524.4 関連メッセージ</h4>
@@ -30763,7 +30769,7 @@ int* p = arr1;
30763
30769
 
30764
30770
  <h4 class="subsection">6.524.5 対応バージョン</h4>
30765
30771
 
30766
- <p>2.0.0 の予定
30772
+ <p>1.8.0
30767
30773
 
30768
30774
  <div class="node">
30769
30775
  <a name="W0643"></a>
@@ -34132,13 +34138,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34132
34138
 
34133
34139
  <h4 class="subsection">6.584.2 内容</h4>
34134
34140
 
34135
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
34136
-
34137
- <p>このような記述は誤りの可能性があります。
34141
+ <p>このような記述は誤りの可能性があります。
34138
34142
 
34139
34143
  <h4 class="subsection">6.584.3 サンプルコード</h4>
34140
34144
 
34141
- <pre class="verbatim">x = (a + b) > (c > d); /* W0711 */
34145
+ <pre class="verbatim">int func(int a, int b, int c, int d)
34146
+ {
34147
+ return (a + b) > (c > d); /* W0711 */
34148
+ }
34142
34149
  </pre>
34143
34150
 
34144
34151
  <h4 class="subsection">6.584.4 関連メッセージ</h4>
@@ -34150,7 +34157,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34150
34157
 
34151
34158
  <h4 class="subsection">6.584.5 対応バージョン</h4>
34152
34159
 
34153
- <p>2.0.0 の予定
34160
+ <p>1.8.0
34154
34161
 
34155
34162
  <div class="node">
34156
34163
  <a name="W0712"></a>
@@ -34171,13 +34178,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34171
34178
 
34172
34179
  <h4 class="subsection">6.585.2 内容</h4>
34173
34180
 
34174
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
34175
-
34176
- <p>このような記述は誤りの可能性があります。
34181
+ <p>このような記述は誤りの可能性があります。
34177
34182
 
34178
34183
  <h4 class="subsection">6.585.3 サンプルコード</h4>
34179
34184
 
34180
- <pre class="verbatim">x = (a > b) > (c + d); /* W0712 */
34185
+ <pre class="verbatim">int func(int a, int b, int c, int d)
34186
+ {
34187
+ return (a > b) > (c + d); /* W0712 */
34188
+ }
34181
34189
  </pre>
34182
34190
 
34183
34191
  <h4 class="subsection">6.585.4 関連メッセージ</h4>
@@ -34189,7 +34197,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34189
34197
 
34190
34198
  <h4 class="subsection">6.585.5 対応バージョン</h4>
34191
34199
 
34192
- <p>2.0.0 の予定
34200
+ <p>1.8.0
34193
34201
 
34194
34202
  <div class="node">
34195
34203
  <a name="W0713"></a>
@@ -34210,13 +34218,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34210
34218
 
34211
34219
  <h4 class="subsection">6.586.2 内容</h4>
34212
34220
 
34213
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
34214
-
34215
- <p>このような記述は誤りの可能性があります。
34221
+ <p>このような記述は誤りの可能性があります。
34216
34222
 
34217
34223
  <h4 class="subsection">6.586.3 サンプルコード</h4>
34218
34224
 
34219
- <pre class="verbatim">x = (a > b) > (c > d); /* W0713 */
34225
+ <pre class="verbatim">int func(int a, int b, int c, int d)
34226
+ {
34227
+ return (a > b) > (c > d); /* W0713 */
34228
+ }
34220
34229
  </pre>
34221
34230
 
34222
34231
  <h4 class="subsection">6.586.4 関連メッセージ</h4>
@@ -34228,7 +34237,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34228
34237
 
34229
34238
  <h4 class="subsection">6.586.5 対応バージョン</h4>
34230
34239
 
34231
- <p>2.0.0 の予定
34240
+ <p>1.8.0
34232
34241
 
34233
34242
  <div class="node">
34234
34243
  <a name="W0714"></a>
@@ -34249,14 +34258,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34249
34258
 
34250
34259
  <h4 class="subsection">6.587.2 内容</h4>
34251
34260
 
34252
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
34253
-
34254
- <p>このような記述は誤りの可能性があります。
34261
+ <p>このような記述は誤りの可能性があります。
34255
34262
 
34256
34263
  <h4 class="subsection">6.587.3 サンプルコード</h4>
34257
34264
 
34258
- <!-- {未実装} -->
34259
- <pre class="verbatim">/* 追記予定 */
34265
+ <pre class="verbatim">int func(int a, int b, int c, int d)
34266
+ {
34267
+ return (a > b) &amp; (c > d); /* W0714 */
34268
+ }
34260
34269
  </pre>
34261
34270
 
34262
34271
  <h4 class="subsection">6.587.4 関連メッセージ</h4>
@@ -34270,7 +34279,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34270
34279
 
34271
34280
  <h4 class="subsection">6.587.5 対応バージョン</h4>
34272
34281
 
34273
- <p>2.0.0 の予定
34282
+ <p>1.8.0
34274
34283
 
34275
34284
  <div class="node">
34276
34285
  <a name="W0715"></a>
@@ -34291,14 +34300,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34291
34300
 
34292
34301
  <h4 class="subsection">6.588.2 内容</h4>
34293
34302
 
34294
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
34295
-
34296
- <p>このような記述は誤りの可能性があります。
34303
+ <p>このような記述は誤りの可能性があります。
34297
34304
 
34298
34305
  <h4 class="subsection">6.588.3 サンプルコード</h4>
34299
34306
 
34300
- <!-- {未実装} -->
34301
- <pre class="verbatim">/* 追記予定 */
34307
+ <pre class="verbatim">int func(int a, int b, int c, int d)
34308
+ {
34309
+ return (a > b) | (c > d); /* W0715 */
34310
+ }
34302
34311
  </pre>
34303
34312
 
34304
34313
  <h4 class="subsection">6.588.4 関連メッセージ</h4>
@@ -34312,7 +34321,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
34312
34321
 
34313
34322
  <h4 class="subsection">6.588.5 対応バージョン</h4>
34314
34323
 
34315
- <p>2.0.0 の予定
34324
+ <p>1.8.0
34316
34325
 
34317
34326
  <div class="node">
34318
34327
  <a name="W0716"></a>
@@ -38697,14 +38706,32 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38697
38706
 
38698
38707
  <h4 class="subsection">6.684.2 内容</h4>
38699
38708
 
38700
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
38701
-
38702
- <p>インライン・アセンブラ構文は、言語拡張に該当するため、移植性を低下させます。
38709
+ <p>インライン・アセンブラ構文は、言語拡張に該当するため、移植性を低下させます。
38703
38710
 
38704
38711
  <h4 class="subsection">6.684.3 サンプルコード</h4>
38705
38712
 
38706
- <!-- {未実装} -->
38707
- <pre class="verbatim">/* 追記予定 */
38713
+ <pre class="verbatim">#define ASM_CODE asm("movl %ecx, %eax")
38714
+
38715
+ void foo(int arg1, int *arg2, int arg3)
38716
+ {
38717
+ asm("movl %ecx, %eax"); /* W0832 */
38718
+ __asm__("movl %ecx, (%eax)"); /* W0832 */
38719
+
38720
+ asm { /* W0832 */
38721
+ xorl eax, eax
38722
+ }
38723
+
38724
+ ASM_CODE; /* W0832 */
38725
+
38726
+ __asm__ volatile ( /* W0832 */
38727
+ "int $0x80"
38728
+ : "=a" (r)
38729
+ "+b" (arg1),
38730
+ "+c" (arg2),
38731
+ "+d" (arg3)
38732
+ : "a" (128)
38733
+ : "memory", "cc");
38734
+ }
38708
38735
  </pre>
38709
38736
 
38710
38737
  <h4 class="subsection">6.684.4 関連メッセージ</h4>
@@ -38715,7 +38742,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38715
38742
 
38716
38743
  <h4 class="subsection">6.684.5 対応バージョン</h4>
38717
38744
 
38718
- <p>2.0.0 の予定
38745
+ <p>1.8.0
38719
38746
 
38720
38747
  <div class="node">
38721
38748
  <a name="W0833"></a>