adlint 1.14.0 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +265 -0
- data/MANIFEST +15 -0
- data/NEWS +30 -4
- data/etc/conf.d/noarch/adlint_all_bat.erb +1 -1
- data/etc/mesg.d/en_US/messages.yml +3 -3
- data/etc/mesg.d/ja_JP/messages.yml +3 -3
- data/features/message_detection/W0001.feature +2 -0
- data/features/message_detection/W0007.feature +8 -0
- data/features/message_detection/W0010.feature +4 -1
- data/features/message_detection/W0013.feature +8 -0
- data/features/message_detection/W0093.feature +3 -0
- data/features/message_detection/W0104.feature +7 -0
- data/features/message_detection/W0643.feature +80 -0
- data/features/message_detection/W0646.feature +115 -0
- data/features/message_detection/W0691.feature +100 -0
- data/features/message_detection/W0692.feature +32 -0
- data/features/message_detection/W0694.feature +128 -0
- data/features/message_detection/W0716.feature +3 -0
- data/features/message_detection/W0717.feature +3 -0
- data/features/message_detection/W0718.feature +3 -0
- data/features/message_detection/W0723.feature +2 -0
- data/features/message_detection/W0732.feature +3 -0
- data/features/message_detection/W0733.feature +3 -0
- data/features/message_detection/W0734.feature +8 -0
- data/features/message_detection/W0735.feature +8 -0
- data/features/message_detection/W0805.feature +92 -0
- data/features/message_detection/W0811.feature +79 -0
- data/features/message_detection/W1031.feature +7 -0
- data/features/message_detection/W1040.feature +89 -0
- data/features/message_detection/W1041.feature +15 -0
- data/features/message_detection/W1046.feature +60 -0
- data/features/message_detection/W1052.feature +3 -0
- data/features/message_detection/W1066.feature +3 -0
- data/features/message_detection/W1067.feature +3 -0
- data/features/message_detection/W1068.feature +3 -0
- data/features/message_detection/W1069.feature +5 -0
- data/features/message_detection/W1070.feature +6 -0
- data/features/message_detection/W1072.feature +1 -0
- data/features/message_detection/W1073.feature +145 -0
- data/features/message_detection/W1074.feature +139 -0
- data/features/message_detection/W1075.feature +86 -0
- data/features/message_detection/W1076.feature +66 -0
- data/features/message_detection/W1077.feature +105 -0
- data/features/message_detection/W9003.feature +4 -0
- data/lib/adlint/c/ctrlexpr.rb +3 -0
- data/lib/adlint/c/interp.rb +11 -5
- data/lib/adlint/c/lexer.rb +14 -3
- data/lib/adlint/c/message.rb +192 -0
- data/lib/adlint/c/parser.rb +19 -3
- data/lib/adlint/c/parser.y +18 -2
- data/lib/adlint/c/phase.rb +19 -6
- data/lib/adlint/c/syntax.rb +6 -0
- data/lib/adlint/c/type.rb +5 -1
- data/lib/adlint/cpp/constexpr.rb +3 -3
- data/lib/adlint/cpp/constexpr.y +3 -3
- data/lib/adlint/cpp/eval.rb +60 -86
- data/lib/adlint/cpp/lexer.rb +82 -28
- data/lib/adlint/cpp/macro.rb +64 -35
- data/lib/adlint/cpp/message.rb +137 -4
- data/lib/adlint/cpp/phase.rb +8 -0
- data/lib/adlint/cpp/syntax.rb +25 -0
- data/lib/adlint/lang.rb +2 -1
- data/lib/adlint/version.rb +2 -2
- 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 +102 -85
- data/share/doc/users_guide_en.texi +85 -69
- data/share/doc/users_guide_ja.html +102 -94
- data/share/doc/users_guide_ja.texi +85 -77
- metadata +17 -2
@@ -2,7 +2,7 @@
|
|
2
2
|
@setfilename users_guide_en.info
|
3
3
|
@documentlanguage en
|
4
4
|
@documentencoding utf-8
|
5
|
-
@settitle AdLint 1.
|
5
|
+
@settitle AdLint 1.16.0 User's Guide
|
6
6
|
|
7
7
|
@copying
|
8
8
|
Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
|
@@ -2657,7 +2657,7 @@ context_line
|
|
2657
2657
|
* W0689::#line directive syntax doesn't match `#line integer constant \"string\"'.
|
2658
2658
|
* W0690::No line number after #line directive.
|
2659
2659
|
* W0691::The result of `##' operator is not valid preprocessing token.
|
2660
|
-
* W0692::A function-like macro doesn't given an actual argument.
|
2660
|
+
* W0692::A function-like macro `%s' doesn't given an actual argument.
|
2661
2661
|
* W0693::A function-like macro is called by actual argument which its definition is smaller.
|
2662
2662
|
* W0694::'assert' macro is inhibited to call the function named `assert'. This result is undefined.
|
2663
2663
|
* W0695::If #undef the 'assert' macro, and enable to call its name function, the result is undefined.
|
@@ -2793,7 +2793,7 @@ context_line
|
|
2793
2793
|
* W1037::`%s' which has external coupling is declared more than one, this is incompatible.
|
2794
2794
|
* W1039::`ll' is used in conversion specifier.
|
2795
2795
|
* W1040::An unrecognizable string is described after preprocessing directive.
|
2796
|
-
* W1041
|
2796
|
+
* W1041::`%s' is not official preprocessing directive of ISO C standards.
|
2797
2797
|
* W1042::'sizeof' operator is using in preprocessing directive. This is the language extension.
|
2798
2798
|
* W1043::`@@ address' is not supported ISO C standards. It will be considered as language extension.
|
2799
2799
|
* W1044::An expression which includes the statement is not supported ISO C standards. It will be considered as language extension.
|
@@ -26279,14 +26279,13 @@ This string literal constituted by a macro is illegal form unenclosed by `\"'. `
|
|
26279
26279
|
|
26280
26280
|
@subsection Content
|
26281
26281
|
|
26282
|
-
@b{This message will be supported in AdLint 2.0.0}
|
26283
|
-
|
26284
26282
|
Under construction.
|
26285
26283
|
|
26286
26284
|
@subsection Sample code
|
26287
26285
|
|
26288
26286
|
@verbatim
|
26289
|
-
|
26287
|
+
#define MACRO(x) #x
|
26288
|
+
const char *str = MACRO(foo\); /* W0643 */
|
26290
26289
|
@end verbatim
|
26291
26290
|
|
26292
26291
|
@subsection Related message
|
@@ -26300,7 +26299,7 @@ Under construction.
|
|
26300
26299
|
|
26301
26300
|
@subsection Since
|
26302
26301
|
|
26303
|
-
|
26302
|
+
1.16.0
|
26304
26303
|
|
26305
26304
|
@node W0644
|
26306
26305
|
@section W0644
|
@@ -26383,14 +26382,12 @@ A normal string literal and a wide string literal are contiguous.
|
|
26383
26382
|
|
26384
26383
|
@subsection Content
|
26385
26384
|
|
26386
|
-
@b{This message will be supported in AdLint 2.0.0}
|
26387
|
-
|
26388
26385
|
Under construction.
|
26389
26386
|
|
26390
26387
|
@subsection Sample code
|
26391
26388
|
|
26392
26389
|
@verbatim
|
26393
|
-
|
26390
|
+
static const char *str = "foo" L"bar"; /* W0646 */
|
26394
26391
|
@end verbatim
|
26395
26392
|
|
26396
26393
|
@subsection Related message
|
@@ -26404,7 +26401,7 @@ Under construction.
|
|
26404
26401
|
|
26405
26402
|
@subsection Since
|
26406
26403
|
|
26407
|
-
|
26404
|
+
1.16.0
|
26408
26405
|
|
26409
26406
|
@node W0649
|
26410
26407
|
@section W0649
|
@@ -28658,14 +28655,14 @@ The result of `##' operator is not valid preprocessing token.
|
|
28658
28655
|
|
28659
28656
|
@subsection Content
|
28660
28657
|
|
28661
|
-
@b{This message will be supported in AdLint 2.0.0}
|
28662
|
-
|
28663
28658
|
Under construction.
|
28664
28659
|
|
28665
28660
|
@subsection Sample code
|
28666
28661
|
|
28667
28662
|
@verbatim
|
28668
|
-
|
28663
|
+
#define MACRO(a, b) a ## b
|
28664
|
+
|
28665
|
+
double d = (double) MACRO(-, 123); /* W0691 */
|
28669
28666
|
@end verbatim
|
28670
28667
|
|
28671
28668
|
@subsection Related message
|
@@ -28679,7 +28676,7 @@ Under construction.
|
|
28679
28676
|
|
28680
28677
|
@subsection Since
|
28681
28678
|
|
28682
|
-
|
28679
|
+
1.16.0
|
28683
28680
|
|
28684
28681
|
@node W0692
|
28685
28682
|
@section W0692
|
@@ -28687,18 +28684,18 @@ Under construction.
|
|
28687
28684
|
|
28688
28685
|
@subsection Message body
|
28689
28686
|
|
28690
|
-
A function-like macro doesn't given an actual argument.
|
28687
|
+
A function-like macro `%s' doesn't given an actual argument.
|
28691
28688
|
|
28692
28689
|
@subsection Content
|
28693
28690
|
|
28694
|
-
@b{This message will be supported in AdLint 2.0.0}
|
28695
|
-
|
28696
28691
|
Under construction.
|
28697
28692
|
|
28698
28693
|
@subsection Sample code
|
28699
28694
|
|
28700
28695
|
@verbatim
|
28701
|
-
|
28696
|
+
#define MACRO(a) #a
|
28697
|
+
|
28698
|
+
const char *s = (char *) MACRO(); /* W0692 */
|
28702
28699
|
@end verbatim
|
28703
28700
|
|
28704
28701
|
@subsection Related message
|
@@ -28709,7 +28706,7 @@ Under construction.
|
|
28709
28706
|
|
28710
28707
|
@subsection Since
|
28711
28708
|
|
28712
|
-
|
28709
|
+
1.16.0
|
28713
28710
|
|
28714
28711
|
@node W0693
|
28715
28712
|
@section W0693
|
@@ -28734,7 +28731,7 @@ Under construction.
|
|
28734
28731
|
@subsection Related message
|
28735
28732
|
|
28736
28733
|
@itemize
|
28737
|
-
@item @ref{W0692} A function-like macro doesn't given an actual argument.
|
28734
|
+
@item @ref{W0692} A function-like macro `%s' doesn't given an actual argument.
|
28738
28735
|
@end itemize
|
28739
28736
|
|
28740
28737
|
@subsection Since
|
@@ -28751,14 +28748,18 @@ After 2.0.0 (planned)
|
|
28751
28748
|
|
28752
28749
|
@subsection Content
|
28753
28750
|
|
28754
|
-
@b{This message will be supported in AdLint 2.0.0}
|
28755
|
-
|
28756
28751
|
Under construction.
|
28757
28752
|
|
28758
28753
|
@subsection Sample code
|
28759
28754
|
|
28760
28755
|
@verbatim
|
28761
|
-
|
28756
|
+
#undef assert
|
28757
|
+
extern void assert(int);
|
28758
|
+
|
28759
|
+
void foo(void)
|
28760
|
+
{
|
28761
|
+
assert("should not be reached" == ""); /* W0694 */
|
28762
|
+
}
|
28762
28763
|
@end verbatim
|
28763
28764
|
|
28764
28765
|
@subsection Related message
|
@@ -28767,7 +28768,7 @@ None.
|
|
28767
28768
|
|
28768
28769
|
@subsection Since
|
28769
28770
|
|
28770
|
-
|
28771
|
+
1.16.0
|
28771
28772
|
|
28772
28773
|
@node W0695
|
28773
28774
|
@section W0695
|
@@ -32544,14 +32545,14 @@ An identifier to be actual argument doesn't find in `defined'.
|
|
32544
32545
|
|
32545
32546
|
@subsection Content
|
32546
32547
|
|
32547
|
-
@b{This message will be supported in AdLint 2.0.0}
|
32548
|
-
|
32549
32548
|
Under construction.
|
32550
32549
|
|
32551
32550
|
@subsection Sample code
|
32552
32551
|
|
32553
32552
|
@verbatim
|
32554
|
-
#if defined
|
32553
|
+
#if defined "foo" /* W0805 */
|
32554
|
+
int i = 0;
|
32555
|
+
#endif
|
32555
32556
|
@end verbatim
|
32556
32557
|
|
32557
32558
|
@subsection Related message
|
@@ -32562,7 +32563,7 @@ Under construction.
|
|
32562
32563
|
|
32563
32564
|
@subsection Since
|
32564
32565
|
|
32565
|
-
|
32566
|
+
1.16.0
|
32566
32567
|
|
32567
32568
|
@node W0806
|
32568
32569
|
@section W0806
|
@@ -32733,14 +32734,16 @@ The `defined' token which the expanded result of this macro doesn't allowed.
|
|
32733
32734
|
|
32734
32735
|
@subsection Content
|
32735
32736
|
|
32736
|
-
@b{This message will be supported in AdLint 2.0.0}
|
32737
|
-
|
32738
32737
|
Under construction.
|
32739
32738
|
|
32740
32739
|
@subsection Sample code
|
32741
32740
|
|
32742
32741
|
@verbatim
|
32743
|
-
|
32742
|
+
#define COND defined(FOO)
|
32743
|
+
|
32744
|
+
#if COND /* W0811 */
|
32745
|
+
int i = 0;
|
32746
|
+
#endif
|
32744
32747
|
@end verbatim
|
32745
32748
|
|
32746
32749
|
@subsection Related message
|
@@ -32749,7 +32752,7 @@ None.
|
|
32749
32752
|
|
32750
32753
|
@subsection Since
|
32751
32754
|
|
32752
|
-
|
32755
|
+
1.16.0
|
32753
32756
|
|
32754
32757
|
@node W0827
|
32755
32758
|
@section W0827
|
@@ -33552,26 +33555,34 @@ An unrecognizable string is described after preprocessing directive.
|
|
33552
33555
|
|
33553
33556
|
@subsection Content
|
33554
33557
|
|
33555
|
-
@b{This message will be supported in AdLint 2.0.0}
|
33556
|
-
|
33557
33558
|
Under construction.
|
33558
33559
|
|
33559
33560
|
@subsection Sample code
|
33560
33561
|
|
33561
33562
|
@verbatim
|
33562
|
-
|
33563
|
+
#define TEST
|
33564
|
+
|
33565
|
+
#ifdef TEST
|
33566
|
+
#if defined(CASE_1)
|
33567
|
+
int i = 1;
|
33568
|
+
#elif defined(CASE_2)
|
33569
|
+
int i = 2;
|
33570
|
+
#endif CASE /* W1040 */
|
33571
|
+
#else
|
33572
|
+
int i = 0;
|
33573
|
+
#endif TEST /* W1040 */
|
33563
33574
|
@end verbatim
|
33564
33575
|
|
33565
33576
|
@subsection Related message
|
33566
33577
|
|
33567
33578
|
@itemize
|
33568
|
-
@item @ref{W1041}
|
33579
|
+
@item @ref{W1041} `%s' is not official preprocessing directive of ISO C standards.
|
33569
33580
|
@item @ref{W1042} 'sizeof' operator is using in preprocessing directive. This is the language extension.
|
33570
33581
|
@end itemize
|
33571
33582
|
|
33572
33583
|
@subsection Since
|
33573
33584
|
|
33574
|
-
|
33585
|
+
1.16.0
|
33575
33586
|
|
33576
33587
|
@node W1041
|
33577
33588
|
@section W1041
|
@@ -33579,18 +33590,16 @@ Under construction.
|
|
33579
33590
|
|
33580
33591
|
@subsection Message body
|
33581
33592
|
|
33582
|
-
|
33593
|
+
`%s' is not official preprocessing directive of ISO C standards.
|
33583
33594
|
|
33584
33595
|
@subsection Content
|
33585
33596
|
|
33586
|
-
@b{This message will be supported in AdLint 2.0.0}
|
33587
|
-
|
33588
33597
|
Under construction.
|
33589
33598
|
|
33590
33599
|
@subsection Sample code
|
33591
33600
|
|
33592
33601
|
@verbatim
|
33593
|
-
|
33602
|
+
#compiler_specific_extension 1 2.3 "4" /* W1041 */
|
33594
33603
|
@end verbatim
|
33595
33604
|
|
33596
33605
|
@subsection Related message
|
@@ -33602,7 +33611,7 @@ Under construction.
|
|
33602
33611
|
|
33603
33612
|
@subsection Since
|
33604
33613
|
|
33605
|
-
|
33614
|
+
1.16.0
|
33606
33615
|
|
33607
33616
|
@node W1042
|
33608
33617
|
@section W1042
|
@@ -33628,7 +33637,7 @@ Under construction.
|
|
33628
33637
|
|
33629
33638
|
@itemize
|
33630
33639
|
@item @ref{W1040} An unrecognizable string is described after preprocessing directive.
|
33631
|
-
@item @ref{W1041}
|
33640
|
+
@item @ref{W1041} `%s' is not official preprocessing directive of ISO C standards.
|
33632
33641
|
@end itemize
|
33633
33642
|
|
33634
33643
|
@subsection Since
|
@@ -33738,14 +33747,15 @@ A space character is ignored between `\' and line feed.
|
|
33738
33747
|
|
33739
33748
|
@subsection Content
|
33740
33749
|
|
33741
|
-
@b{This message will be supported in AdLint 2.0.0}
|
33742
|
-
|
33743
33750
|
Under construction.
|
33744
33751
|
|
33745
33752
|
@subsection Sample code
|
33746
33753
|
|
33747
33754
|
@verbatim
|
33748
|
-
|
33755
|
+
#define FOO(a, b) /* OK */ \
|
33756
|
+
( /* W1046 */ \
|
33757
|
+
(a) + (b) /* W1046 */ \
|
33758
|
+
)
|
33749
33759
|
@end verbatim
|
33750
33760
|
|
33751
33761
|
@subsection Related message
|
@@ -33754,7 +33764,7 @@ None.
|
|
33754
33764
|
|
33755
33765
|
@subsection Since
|
33756
33766
|
|
33757
|
-
|
33767
|
+
1.16.0
|
33758
33768
|
|
33759
33769
|
@node W1047
|
33760
33770
|
@section W1047
|
@@ -34826,14 +34836,20 @@ A return value of function `%s' is not used.。
|
|
34826
34836
|
|
34827
34837
|
@subsection Content
|
34828
34838
|
|
34829
|
-
@b{This message will be supported in AdLint 2.0.0}
|
34830
|
-
|
34831
34839
|
Under construction.
|
34832
34840
|
|
34833
34841
|
@subsection Sample code
|
34834
34842
|
|
34835
34843
|
@verbatim
|
34836
|
-
|
34844
|
+
extern int bar(void);
|
34845
|
+
static void foo(void)
|
34846
|
+
{
|
34847
|
+
int i;
|
34848
|
+
int j;
|
34849
|
+
for (i = 0, bar(); i < 10; i++) { /* W1073 */
|
34850
|
+
j = bar(); /* OK */
|
34851
|
+
}
|
34852
|
+
}
|
34837
34853
|
@end verbatim
|
34838
34854
|
|
34839
34855
|
@subsection Related message
|
@@ -34842,7 +34858,7 @@ None.
|
|
34842
34858
|
|
34843
34859
|
@subsection Since
|
34844
34860
|
|
34845
|
-
|
34861
|
+
1.16.0
|
34846
34862
|
|
34847
34863
|
@node W1074
|
34848
34864
|
@section W1074
|
@@ -34854,14 +34870,22 @@ Side-effects in `sizeof' operand will not be recorded because the operand will n
|
|
34854
34870
|
|
34855
34871
|
@subsection Content
|
34856
34872
|
|
34857
|
-
@b{This message will be supported in AdLint 2.0.0}
|
34858
|
-
|
34859
34873
|
Under construction.
|
34860
34874
|
|
34861
34875
|
@subsection Sample code
|
34862
34876
|
|
34863
34877
|
@verbatim
|
34864
|
-
int
|
34878
|
+
static int foo(void)
|
34879
|
+
{
|
34880
|
+
int i = 0;
|
34881
|
+
|
34882
|
+
if (sizeof(i++) == 4) { /* W1074 */
|
34883
|
+
return 0;
|
34884
|
+
}
|
34885
|
+
else {
|
34886
|
+
return 1;
|
34887
|
+
}
|
34888
|
+
}
|
34865
34889
|
@end verbatim
|
34866
34890
|
|
34867
34891
|
@subsection Related message
|
@@ -34870,7 +34894,7 @@ None.
|
|
34870
34894
|
|
34871
34895
|
@subsection Since
|
34872
34896
|
|
34873
|
-
|
34897
|
+
1.16.0
|
34874
34898
|
|
34875
34899
|
@node W1075
|
34876
34900
|
@section W1075
|
@@ -34882,8 +34906,6 @@ This declaration has no `static' storage-class-specifier while the declaring obj
|
|
34882
34906
|
|
34883
34907
|
@subsection Content
|
34884
34908
|
|
34885
|
-
@b{This message will be supported in AdLint 2.0.0}
|
34886
|
-
|
34887
34909
|
Under construction.
|
34888
34910
|
|
34889
34911
|
@subsection Sample code
|
@@ -34902,7 +34924,7 @@ None.
|
|
34902
34924
|
|
34903
34925
|
@subsection Since
|
34904
34926
|
|
34905
|
-
|
34927
|
+
1.16.0
|
34906
34928
|
|
34907
34929
|
@node W1076
|
34908
34930
|
@section W1076
|
@@ -34914,8 +34936,6 @@ None.
|
|
34914
34936
|
|
34915
34937
|
@subsection Content
|
34916
34938
|
|
34917
|
-
@b{This message will be supported in AdLint 2.0.0}
|
34918
|
-
|
34919
34939
|
Under construction.
|
34920
34940
|
|
34921
34941
|
@subsection Sample code
|
@@ -34923,8 +34943,7 @@ Under construction.
|
|
34923
34943
|
@verbatim
|
34924
34944
|
static int func(void) /* W1076 */
|
34925
34945
|
{
|
34926
|
-
|
34927
|
-
return ret;
|
34946
|
+
return 0;
|
34928
34947
|
}
|
34929
34948
|
@end verbatim
|
34930
34949
|
|
@@ -34934,7 +34953,7 @@ None.
|
|
34934
34953
|
|
34935
34954
|
@subsection Since
|
34936
34955
|
|
34937
|
-
|
34956
|
+
1.16.0
|
34938
34957
|
|
34939
34958
|
@node W1077
|
34940
34959
|
@section W1077
|
@@ -34946,14 +34965,12 @@ Declaring array object without a size.
|
|
34946
34965
|
|
34947
34966
|
@subsection Content
|
34948
34967
|
|
34949
|
-
@b{This message will be supported in AdLint 2.0.0}
|
34950
|
-
|
34951
34968
|
Under construction.
|
34952
34969
|
|
34953
34970
|
@subsection Sample code
|
34954
34971
|
|
34955
34972
|
@verbatim
|
34956
|
-
extern int
|
34973
|
+
extern int a[]; /* W1077 */
|
34957
34974
|
@end verbatim
|
34958
34975
|
|
34959
34976
|
@subsection Related message
|
@@ -34962,8 +34979,7 @@ None.
|
|
34962
34979
|
|
34963
34980
|
@subsection Since
|
34964
34981
|
|
34965
|
-
|
34966
|
-
|
34982
|
+
1.16.0
|
34967
34983
|
|
34968
34984
|
@node W9001
|
34969
34985
|
@section W9001
|