adlint 1.6.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_ja.info
3
3
  @documentlanguage ja
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.6.0 利用者ガイド
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::この関数には C コードとインラインアセンブリコードが混在しています。
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
- この関数には C コードとインラインアセンブリコードが混在しています。
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 = func();
25668
-
25669
- if (a < 0) {
25670
- unsigned int b = a; /* W0607 */
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
- 2.0.0 の予定
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
- 2.0.0 の予定
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
- 2.0.0 の予定
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
- `#include <%s>' の中で `''、`"' または `/*' を使うと、未定義の動作になります。
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
- 2.0.0 の予定
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"}' の中で `@code{'}' や `@code{/*}' を使うと、未定義の動作になります。
26261
+ `@code{#include "%s"}' の中で ' 文字を使うと、未定義の動作になります。
26254
26262
 
26255
26263
  @subsection 内容
26256
26264
 
26257
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
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
- 2.0.0 の予定
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
- 2.0.0 の予定
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
- register int arr1[3]; /* W0642 */
26563
- int* p = arr1;
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
- 2.0.0 の予定
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
- x = (a + b) > (c > d); /* W0711 */
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
- 2.0.0 の予定
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
- x = (a > b) > (c + d); /* W0712 */
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
- 2.0.0 の予定
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
- x = (a > b) > (c > d); /* W0713 */
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
- 2.0.0 の予定
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
- 2.0.0 の予定
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
- 2.0.0 の予定
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
- 2.0.0 の予定
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.6.0
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-06 00:00:00.000000000 Z
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.11
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'