adlint 1.6.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +389 -37
- data/INSTALL +3 -0
- data/MANIFEST +7 -0
- data/NEWS +50 -10
- data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
- data/etc/mesg.d/en_US/messages.yml +7 -7
- data/etc/mesg.d/ja_JP/messages.yml +4 -4
- data/lib/adlint/c/branch.rb +4 -4
- data/lib/adlint/c/code.rb +11 -13
- data/lib/adlint/c/enum.rb +0 -2
- data/lib/adlint/c/environ.rb +13 -7
- data/lib/adlint/c/expr.rb +5 -1
- data/lib/adlint/c/interp.rb +10 -6
- data/lib/adlint/c/mediator.rb +1 -0
- data/lib/adlint/c/message.rb +294 -111
- data/lib/adlint/c/message_shima.rb +63 -0
- data/lib/adlint/c/metric.rb +25 -13
- data/lib/adlint/c/object.rb +168 -31
- data/lib/adlint/c/parser.rb +3 -3
- data/lib/adlint/c/phase.rb +20 -3
- data/lib/adlint/c/syntax.rb +175 -17
- data/lib/adlint/c/value.rb +199 -126
- data/lib/adlint/cpp/asm.rb +4 -4
- data/lib/adlint/cpp/constexpr.rb +1 -1
- data/lib/adlint/cpp/eval.rb +6 -4
- data/lib/adlint/cpp/message.rb +100 -7
- data/lib/adlint/cpp/phase.rb +12 -1
- data/lib/adlint/cpp/source.rb +2 -2
- data/lib/adlint/cpp/subst.rb +2 -4
- data/lib/adlint/lang.rb +5 -3
- data/lib/adlint/ld/metric.rb +1 -1
- data/lib/adlint/version.rb +2 -2
- data/share/demo/Makefile +5 -0
- data/share/demo/bad_include/bad_include.c +13 -0
- data/share/demo/bad_include/test'1'.h +0 -0
- data/share/demo/bad_include/test'2'.h +0 -0
- data/share/demo/incomplete_ifelse/incomplete_ifelse.c +29 -0
- data/share/demo/inline_asm/inline_asm.c +25 -0
- data/share/demo/invalid_call/invalid_call.c +12 -4
- data/share/demo/logical_expr/logical_expr.c +73 -0
- data/share/demo/register_vars/register_vars.c +12 -0
- data/share/demo/typedef_each_src/typedef_each_src.c +9 -0
- data/share/demo/wrap_around/wrap_around.c +17 -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 +137 -102
- data/share/doc/users_guide_en.texi +121 -86
- data/share/doc/users_guide_ja.html +118 -91
- data/share/doc/users_guide_ja.texi +103 -76
- metadata +10 -3
@@ -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.8.0 利用者ガイド
|
6
6
|
|
7
7
|
@copying
|
8
8
|
Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
|
@@ -2598,7 +2598,7 @@ context_line
|
|
2598
2598
|
* W0535::for 文の制御式の中にカンマ演算子が使われています。
|
2599
2599
|
* W0538::この default ラベルは、switch 文内の最後のラベルではありません。
|
2600
2600
|
* W0540::空の仮引数並びの関数が定義されています。`void' が省略されています。
|
2601
|
-
* W0541
|
2601
|
+
* W0541::マクロで隠蔽されないインラインアセンブリコードです。
|
2602
2602
|
* W0542::関数宣言の仮引数の一部にのみ識別子が存在します。
|
2603
2603
|
* W0543::この関数宣言における仮引数の識別子は、以前の宣言の仮引数の識別子と異なります。
|
2604
2604
|
* W0544::関数宣言の仮引数の識別子と関数ポインタの宣言の仮引数の識別子が異なります。
|
@@ -2663,8 +2663,8 @@ context_line
|
|
2663
2663
|
* W0627::一行に、空文(`;' だけの文)が、他のコードの後にあります。
|
2664
2664
|
* W0628::関数 `%s' が定義されていますが、このプロジェクトでは使われていません。
|
2665
2665
|
* W0629::static 関数 `%s()' は、この翻訳単位の中で使われていません。
|
2666
|
-
* W0632::`#include <%s>' の中で
|
2667
|
-
* W0633::`#include "%s"' の中で
|
2666
|
+
* W0632::`#include <%s>' の中で ' や " 文字を使うと、未定義の動作になります。
|
2667
|
+
* W0633::`#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
|
2668
2668
|
* W0634::`#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
|
2669
2669
|
* W0635::%s 番目の変換指定子と、対応する実引数の型が合いません。
|
2670
2670
|
* W0636::%s 番目の変換指定子に対応する実引数が存在しません。
|
@@ -23916,7 +23916,7 @@ void func() /* W0540 */
|
|
23916
23916
|
|
23917
23917
|
@subsection メッセージ本文
|
23918
23918
|
|
23919
|
-
|
23919
|
+
マクロで隠蔽されないインラインアセンブリコードです。
|
23920
23920
|
|
23921
23921
|
@subsection 内容
|
23922
23922
|
|
@@ -23925,6 +23925,8 @@ void func() /* W0540 */
|
|
23925
23925
|
@subsection サンプルコード
|
23926
23926
|
|
23927
23927
|
@verbatim
|
23928
|
+
#define ASM_CODE asm("movl %ecx, %eax")
|
23929
|
+
|
23928
23930
|
void foo(int arg1, int *arg2, int arg3)
|
23929
23931
|
{
|
23930
23932
|
asm("movl %ecx, %eax"); /* W0541 */
|
@@ -23934,6 +23936,8 @@ void foo(int arg1, int *arg2, int arg3)
|
|
23934
23936
|
xorl eax, eax
|
23935
23937
|
}
|
23936
23938
|
|
23939
|
+
ASM_CODE; /* OK */
|
23940
|
+
|
23937
23941
|
__asm__ volatile ( /* W0541 */
|
23938
23942
|
"int $0x80"
|
23939
23943
|
: "=a" (r)
|
@@ -25656,18 +25660,17 @@ union UNI { /* W0606 */
|
|
25656
25660
|
|
25657
25661
|
@subsection 内容
|
25658
25662
|
|
25659
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
25660
|
-
|
25661
25663
|
明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
|
25662
25664
|
そのような値が符号無し型に変換されることで意図しない動作を引き起こす可能性があります。
|
25663
25665
|
|
25664
25666
|
@subsection サンプルコード
|
25665
25667
|
|
25666
25668
|
@verbatim
|
25667
|
-
int a
|
25668
|
-
|
25669
|
-
if (a < 0) {
|
25670
|
-
|
25669
|
+
void func(int a)
|
25670
|
+
{
|
25671
|
+
if (a < 0) {
|
25672
|
+
unsigned int b = (unsigned int) a; /* W0607 */
|
25673
|
+
}
|
25671
25674
|
}
|
25672
25675
|
@end verbatim
|
25673
25676
|
|
@@ -25679,7 +25682,7 @@ if (a < 0) {
|
|
25679
25682
|
|
25680
25683
|
@subsection 対応バージョン
|
25681
25684
|
|
25682
|
-
|
25685
|
+
1.8.0
|
25683
25686
|
|
25684
25687
|
@node W0608
|
25685
25688
|
@section W0608
|
@@ -25691,16 +25694,20 @@ if (a < 0) {
|
|
25691
25694
|
|
25692
25695
|
@subsection 内容
|
25693
25696
|
|
25694
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
25695
|
-
|
25696
25697
|
明らかに負になることが明らかな整数は、負の数として扱われることが想定されます。
|
25697
25698
|
そのような値が符号無し型に変換されることで意図しない動作を引き起こす可能性があります。
|
25698
25699
|
|
25699
25700
|
@subsection サンプルコード
|
25700
25701
|
|
25701
|
-
@c{未実装}
|
25702
25702
|
@verbatim
|
25703
|
-
|
25703
|
+
void fuu(int a)
|
25704
|
+
{
|
25705
|
+
unsigned char b;
|
25706
|
+
|
25707
|
+
if (a < 256) {
|
25708
|
+
b = (unsigned char) a; /* W0608 */
|
25709
|
+
}
|
25710
|
+
}
|
25704
25711
|
@end verbatim
|
25705
25712
|
|
25706
25713
|
@subsection 関連メッセージ
|
@@ -25711,7 +25718,7 @@ if (a < 0) {
|
|
25711
25718
|
|
25712
25719
|
@subsection 対応バージョン
|
25713
25720
|
|
25714
|
-
|
25721
|
+
1.8.0
|
25715
25722
|
|
25716
25723
|
@node W0609
|
25717
25724
|
@section W0609
|
@@ -26054,15 +26061,19 @@ int foo(void)
|
|
26054
26061
|
|
26055
26062
|
@subsection 内容
|
26056
26063
|
|
26057
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
26058
|
-
|
26059
26064
|
@code{typedef} 宣言はヘッダファイル内でのみ行うべきです。このような記述は保守性を低下させます。
|
26060
26065
|
|
26061
26066
|
@subsection サンプルコード
|
26062
26067
|
|
26063
|
-
@c{未実装}
|
26064
26068
|
@verbatim
|
26065
|
-
/*
|
26069
|
+
typedef int *INT_PTR; /* W0625 */
|
26070
|
+
|
26071
|
+
extern INT_PTR func(void);
|
26072
|
+
|
26073
|
+
INT_PTR func(void)
|
26074
|
+
{
|
26075
|
+
return 0;
|
26076
|
+
}
|
26066
26077
|
@end verbatim
|
26067
26078
|
|
26068
26079
|
@subsection 関連メッセージ
|
@@ -26071,7 +26082,7 @@ int foo(void)
|
|
26071
26082
|
|
26072
26083
|
@subsection 対応バージョン
|
26073
26084
|
|
26074
|
-
|
26085
|
+
1.8.0
|
26075
26086
|
|
26076
26087
|
@node W0626
|
26077
26088
|
@section W0626
|
@@ -26218,31 +26229,28 @@ int func2(void)
|
|
26218
26229
|
|
26219
26230
|
@subsection メッセージ本文
|
26220
26231
|
|
26221
|
-
|
26232
|
+
`@code{#include <%s>}' の中で ' や " 文字を使うと、未定義の動作になります。
|
26222
26233
|
|
26223
26234
|
@subsection 内容
|
26224
26235
|
|
26225
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
26226
|
-
|
26227
26236
|
`@code{'}'、`@code{"}' または `@code{/*}' を @code{#include} 文で使用すると、未定義の動作になります。
|
26228
26237
|
|
26229
26238
|
@subsection サンプルコード
|
26230
26239
|
|
26231
|
-
@c{未実装}
|
26232
26240
|
@verbatim
|
26233
|
-
/*
|
26241
|
+
#include <NG'_header.h> /* W0632 */
|
26234
26242
|
@end verbatim
|
26235
26243
|
|
26236
26244
|
@subsection 関連メッセージ
|
26237
26245
|
|
26238
26246
|
@itemize
|
26239
|
-
@item @ref{W0633} `#include "%s"' の中で
|
26247
|
+
@item @ref{W0633} `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
|
26240
26248
|
@item @ref{W0634} `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
|
26241
26249
|
@end itemize
|
26242
26250
|
|
26243
26251
|
@subsection 対応バージョン
|
26244
26252
|
|
26245
|
-
|
26253
|
+
1.8.0
|
26246
26254
|
|
26247
26255
|
@node W0633
|
26248
26256
|
@section W0633
|
@@ -26250,31 +26258,28 @@ int func2(void)
|
|
26250
26258
|
|
26251
26259
|
@subsection メッセージ本文
|
26252
26260
|
|
26253
|
-
`@code{#include "%s"}' の中で
|
26261
|
+
`@code{#include "%s"}' の中で ' 文字を使うと、未定義の動作になります。
|
26254
26262
|
|
26255
26263
|
@subsection 内容
|
26256
26264
|
|
26257
|
-
|
26258
|
-
|
26259
|
-
`@code{'}'、`@code{"}' または `@code{/*}' を @code{#include} 文で使用すると、未定義の動作になります。
|
26265
|
+
`@code{'}' を @code{#include} 文で使用すると、未定義の動作になります。
|
26260
26266
|
|
26261
26267
|
@subsection サンプルコード
|
26262
26268
|
|
26263
|
-
@c{未実装}
|
26264
26269
|
@verbatim
|
26265
|
-
/*
|
26270
|
+
#include "NG'_header.h" /* W0633 */
|
26266
26271
|
@end verbatim
|
26267
26272
|
|
26268
26273
|
@subsection 関連メッセージ
|
26269
26274
|
|
26270
26275
|
@itemize
|
26271
|
-
@item @ref{W0632} `#include <%s>' の中で
|
26276
|
+
@item @ref{W0632} `#include <%s>' の中で ' や " 文字を使うと、未定義の動作になります。
|
26272
26277
|
@item @ref{W0634} `#include' 行の中で `\' を使っています。パス区切り文字としては `/' を勧めます。
|
26273
26278
|
@end itemize
|
26274
26279
|
|
26275
26280
|
@subsection 対応バージョン
|
26276
26281
|
|
26277
|
-
|
26282
|
+
1.8.0
|
26278
26283
|
|
26279
26284
|
@node W0634
|
26280
26285
|
@section W0634
|
@@ -26286,27 +26291,25 @@ int func2(void)
|
|
26286
26291
|
|
26287
26292
|
@subsection 内容
|
26288
26293
|
|
26289
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
26290
|
-
|
26291
26294
|
@code{\} は PC 環境におけるパス区切り文字であり、@code{#include} 文で使用することで移植性を損ないます。
|
26292
26295
|
|
26293
26296
|
@subsection サンプルコード
|
26294
26297
|
|
26295
|
-
@c{未実装}
|
26296
26298
|
@verbatim
|
26297
|
-
/*
|
26299
|
+
#include "..\ng\header.h" /* W0634 */
|
26300
|
+
#include "..\\ng\\header.h" /* W0634 */
|
26298
26301
|
@end verbatim
|
26299
26302
|
|
26300
26303
|
@subsection 関連メッセージ
|
26301
26304
|
|
26302
26305
|
@itemize
|
26303
|
-
@item @ref{W0632} `#include <%s>' の中で
|
26304
|
-
@item @ref{W0633} `#include "%s"' の中で
|
26306
|
+
@item @ref{W0632} `#include <%s>' の中で ' や " 文字を使うと、未定義の動作になります。
|
26307
|
+
@item @ref{W0633} `#include "%s"' の中で ' 文字を使うと、未定義の動作になります。
|
26305
26308
|
@end itemize
|
26306
26309
|
|
26307
26310
|
@subsection 対応バージョン
|
26308
26311
|
|
26309
|
-
|
26312
|
+
1.8.0
|
26310
26313
|
|
26311
26314
|
@node W0635
|
26312
26315
|
@section W0635
|
@@ -26552,15 +26555,18 @@ register 付きで宣言された配列のアドレスを得ることは不可
|
|
26552
26555
|
|
26553
26556
|
@subsection 内容
|
26554
26557
|
|
26555
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
26556
|
-
|
26557
26558
|
未定義の動作のため、予期しない動作を引き起こす可能性があります。
|
26558
26559
|
|
26559
26560
|
@subsection サンプルコード
|
26560
26561
|
|
26561
26562
|
@verbatim
|
26562
|
-
|
26563
|
-
|
26563
|
+
void func(void)
|
26564
|
+
{
|
26565
|
+
register int a[3];
|
26566
|
+
|
26567
|
+
int *p1 = a; /* W0642 */
|
26568
|
+
int *p2 = &a[1]; /* W0642 */
|
26569
|
+
}
|
26564
26570
|
@end verbatim
|
26565
26571
|
|
26566
26572
|
@subsection 関連メッセージ
|
@@ -26574,7 +26580,7 @@ int* p = arr1;
|
|
26574
26580
|
|
26575
26581
|
@subsection 対応バージョン
|
26576
26582
|
|
26577
|
-
|
26583
|
+
1.8.0
|
26578
26584
|
|
26579
26585
|
@node W0643
|
26580
26586
|
@section W0643
|
@@ -29461,14 +29467,15 @@ for (i = j = 0; i < 10; j++) {
|
|
29461
29467
|
|
29462
29468
|
@subsection 内容
|
29463
29469
|
|
29464
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
29465
|
-
|
29466
29470
|
このような記述は誤りの可能性があります。
|
29467
29471
|
|
29468
29472
|
@subsection サンプルコード
|
29469
29473
|
|
29470
29474
|
@verbatim
|
29471
|
-
|
29475
|
+
int func(int a, int b, int c, int d)
|
29476
|
+
{
|
29477
|
+
return (a + b) > (c > d); /* W0711 */
|
29478
|
+
}
|
29472
29479
|
@end verbatim
|
29473
29480
|
|
29474
29481
|
@subsection 関連メッセージ
|
@@ -29480,7 +29487,7 @@ x = (a + b) > (c > d); /* W0711 */
|
|
29480
29487
|
|
29481
29488
|
@subsection 対応バージョン
|
29482
29489
|
|
29483
|
-
|
29490
|
+
1.8.0
|
29484
29491
|
|
29485
29492
|
@node W0712
|
29486
29493
|
@section W0712
|
@@ -29492,14 +29499,15 @@ x = (a + b) > (c > d); /* W0711 */
|
|
29492
29499
|
|
29493
29500
|
@subsection 内容
|
29494
29501
|
|
29495
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
29496
|
-
|
29497
29502
|
このような記述は誤りの可能性があります。
|
29498
29503
|
|
29499
29504
|
@subsection サンプルコード
|
29500
29505
|
|
29501
29506
|
@verbatim
|
29502
|
-
|
29507
|
+
int func(int a, int b, int c, int d)
|
29508
|
+
{
|
29509
|
+
return (a > b) > (c + d); /* W0712 */
|
29510
|
+
}
|
29503
29511
|
@end verbatim
|
29504
29512
|
|
29505
29513
|
@subsection 関連メッセージ
|
@@ -29511,7 +29519,7 @@ x = (a > b) > (c + d); /* W0712 */
|
|
29511
29519
|
|
29512
29520
|
@subsection 対応バージョン
|
29513
29521
|
|
29514
|
-
|
29522
|
+
1.8.0
|
29515
29523
|
|
29516
29524
|
@node W0713
|
29517
29525
|
@section W0713
|
@@ -29523,14 +29531,15 @@ x = (a > b) > (c + d); /* W0712 */
|
|
29523
29531
|
|
29524
29532
|
@subsection 内容
|
29525
29533
|
|
29526
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
29527
|
-
|
29528
29534
|
このような記述は誤りの可能性があります。
|
29529
29535
|
|
29530
29536
|
@subsection サンプルコード
|
29531
29537
|
|
29532
29538
|
@verbatim
|
29533
|
-
|
29539
|
+
int func(int a, int b, int c, int d)
|
29540
|
+
{
|
29541
|
+
return (a > b) > (c > d); /* W0713 */
|
29542
|
+
}
|
29534
29543
|
@end verbatim
|
29535
29544
|
|
29536
29545
|
@subsection 関連メッセージ
|
@@ -29542,7 +29551,7 @@ x = (a > b) > (c > d); /* W0713 */
|
|
29542
29551
|
|
29543
29552
|
@subsection 対応バージョン
|
29544
29553
|
|
29545
|
-
|
29554
|
+
1.8.0
|
29546
29555
|
|
29547
29556
|
@node W0714
|
29548
29557
|
@section W0714
|
@@ -29554,15 +29563,15 @@ x = (a > b) > (c > d); /* W0713 */
|
|
29554
29563
|
|
29555
29564
|
@subsection 内容
|
29556
29565
|
|
29557
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
29558
|
-
|
29559
29566
|
このような記述は誤りの可能性があります。
|
29560
29567
|
|
29561
29568
|
@subsection サンプルコード
|
29562
29569
|
|
29563
|
-
@c{未実装}
|
29564
29570
|
@verbatim
|
29565
|
-
|
29571
|
+
int func(int a, int b, int c, int d)
|
29572
|
+
{
|
29573
|
+
return (a > b) & (c > d); /* W0714 */
|
29574
|
+
}
|
29566
29575
|
@end verbatim
|
29567
29576
|
|
29568
29577
|
@subsection 関連メッセージ
|
@@ -29576,7 +29585,7 @@ x = (a > b) > (c > d); /* W0713 */
|
|
29576
29585
|
|
29577
29586
|
@subsection 対応バージョン
|
29578
29587
|
|
29579
|
-
|
29588
|
+
1.8.0
|
29580
29589
|
|
29581
29590
|
@node W0715
|
29582
29591
|
@section W0715
|
@@ -29588,15 +29597,15 @@ x = (a > b) > (c > d); /* W0713 */
|
|
29588
29597
|
|
29589
29598
|
@subsection 内容
|
29590
29599
|
|
29591
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
29592
|
-
|
29593
29600
|
このような記述は誤りの可能性があります。
|
29594
29601
|
|
29595
29602
|
@subsection サンプルコード
|
29596
29603
|
|
29597
|
-
@c{未実装}
|
29598
29604
|
@verbatim
|
29599
|
-
|
29605
|
+
int func(int a, int b, int c, int d)
|
29606
|
+
{
|
29607
|
+
return (a > b) | (c > d); /* W0715 */
|
29608
|
+
}
|
29600
29609
|
@end verbatim
|
29601
29610
|
|
29602
29611
|
@subsection 関連メッセージ
|
@@ -29610,7 +29619,7 @@ x = (a > b) > (c > d); /* W0713 */
|
|
29610
29619
|
|
29611
29620
|
@subsection 対応バージョン
|
29612
29621
|
|
29613
|
-
|
29622
|
+
1.8.0
|
29614
29623
|
|
29615
29624
|
@node W0716
|
29616
29625
|
@section W0716
|
@@ -33231,15 +33240,33 @@ enum COLOR {
|
|
33231
33240
|
|
33232
33241
|
@subsection 内容
|
33233
33242
|
|
33234
|
-
@b{このメッセージは AdLint 2.0.0 で出力する予定です。}
|
33235
|
-
|
33236
33243
|
インライン・アセンブラ構文は、言語拡張に該当するため、移植性を低下させます。
|
33237
33244
|
|
33238
33245
|
@subsection サンプルコード
|
33239
33246
|
|
33240
|
-
@c{未実装}
|
33241
33247
|
@verbatim
|
33242
|
-
|
33248
|
+
#define ASM_CODE asm("movl %ecx, %eax")
|
33249
|
+
|
33250
|
+
void foo(int arg1, int *arg2, int arg3)
|
33251
|
+
{
|
33252
|
+
asm("movl %ecx, %eax"); /* W0832 */
|
33253
|
+
__asm__("movl %ecx, (%eax)"); /* W0832 */
|
33254
|
+
|
33255
|
+
asm { /* W0832 */
|
33256
|
+
xorl eax, eax
|
33257
|
+
}
|
33258
|
+
|
33259
|
+
ASM_CODE; /* W0832 */
|
33260
|
+
|
33261
|
+
__asm__ volatile ( /* W0832 */
|
33262
|
+
"int $0x80"
|
33263
|
+
: "=a" (r)
|
33264
|
+
"+b" (arg1),
|
33265
|
+
"+c" (arg2),
|
33266
|
+
"+d" (arg3)
|
33267
|
+
: "a" (128)
|
33268
|
+
: "memory", "cc");
|
33269
|
+
}
|
33243
33270
|
@end verbatim
|
33244
33271
|
|
33245
33272
|
@subsection 関連メッセージ
|
@@ -33250,7 +33277,7 @@ enum COLOR {
|
|
33250
33277
|
|
33251
33278
|
@subsection 対応バージョン
|
33252
33279
|
|
33253
|
-
|
33280
|
+
1.8.0
|
33254
33281
|
|
33255
33282
|
@node W0833
|
33256
33283
|
@section W0833
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adlint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-27 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! 'AdLint is a source code static analyzer.
|
15
15
|
|
@@ -146,6 +146,9 @@ files:
|
|
146
146
|
- share/demo/bad_const/bad_const.c
|
147
147
|
- share/demo/bad_conv/bad_conv.c
|
148
148
|
- share/demo/bad_enum/bad_enum.c
|
149
|
+
- share/demo/bad_include/bad_include.c
|
150
|
+
- share/demo/bad_include/test'1'.h
|
151
|
+
- share/demo/bad_include/test'2'.h
|
149
152
|
- share/demo/bad_indent/bad_indent.c
|
150
153
|
- share/demo/bad_init/bad_init.c
|
151
154
|
- share/demo/bad_label/bad_label.c
|
@@ -168,6 +171,7 @@ files:
|
|
168
171
|
- share/demo/ill_defined/ill_defined.c
|
169
172
|
- share/demo/implicit_conv/implicit_conv.c
|
170
173
|
- share/demo/implicit_int/implicit_int.c
|
174
|
+
- share/demo/incomplete_ifelse/incomplete_ifelse.c
|
171
175
|
- share/demo/incomplete_type/incomplete_type.c
|
172
176
|
- share/demo/indirect_recur/indirect_recur_1.c
|
173
177
|
- share/demo/indirect_recur/indirect_recur_1.h
|
@@ -184,6 +188,7 @@ files:
|
|
184
188
|
- share/demo/kandr_fundef/kandr_fundef.c
|
185
189
|
- share/demo/line_comment/line_comment.c
|
186
190
|
- share/demo/local_decl/local_decl.c
|
191
|
+
- share/demo/logical_expr/logical_expr.c
|
187
192
|
- share/demo/logical_trick/logical_trick.c
|
188
193
|
- share/demo/long_sym/long_sym.c
|
189
194
|
- share/demo/loop_var/loop_var.c
|
@@ -218,6 +223,7 @@ files:
|
|
218
223
|
- share/demo/overflow/overflow.c
|
219
224
|
- share/demo/press_release/press_release.c
|
220
225
|
- share/demo/redundant_select/redundant_select.c
|
226
|
+
- share/demo/register_vars/register_vars.c
|
221
227
|
- share/demo/reserved_ident/reserved_ident.c
|
222
228
|
- share/demo/retn_lvar_addr/retn_lvar_addr.c
|
223
229
|
- share/demo/sequence_point/sequence_point.c
|
@@ -226,6 +232,7 @@ files:
|
|
226
232
|
- share/demo/static_paths/static_paths.c
|
227
233
|
- share/demo/static_vars/static_vars.c
|
228
234
|
- share/demo/tag_hiding/tag_hiding.c
|
235
|
+
- share/demo/typedef_each_src/typedef_each_src.c
|
229
236
|
- share/demo/tricky_incdec/tricky_incdec.c
|
230
237
|
- share/demo/undefined_macro/undefined_macro.c
|
231
238
|
- share/demo/uninit_vars/uninit_vars.c
|
@@ -539,7 +546,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
539
546
|
version: '0'
|
540
547
|
requirements: []
|
541
548
|
rubyforge_project:
|
542
|
-
rubygems_version: 1.8.
|
549
|
+
rubygems_version: 1.8.23
|
543
550
|
signing_key:
|
544
551
|
specification_version: 3
|
545
552
|
summary: ! 'AdLint :: Advanced Lint - An open source and free source code static analyzer'
|