adlint 1.4.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -99,3 +99,6 @@ static void bar(int i)
99
99
  #undef assert
100
100
  #define defined !defined
101
101
  #undef defined
102
+
103
+ #undef __STDC__
104
+ #define __FILE__ "foo.c"
@@ -36,6 +36,7 @@ void foo(const unsigned int ui1, const unsigned int ui2,
36
36
  ul = uc1 >> 1;
37
37
 
38
38
  ul = (unsigned long) (~uc1);
39
+ ul = (unsigned long) ~uc1;
39
40
 
40
41
  ul = (unsigned long) (uc1 * uc2);
41
42
  ul = (unsigned long) (uc1 / uc2);
@@ -0,0 +1,18 @@
1
+ void foo(int arg1, int *arg2, int arg3)
2
+ {
3
+ asm("movl %ecx, %eax");
4
+ __asm__("movl %ecx, (%eax)");
5
+
6
+ asm {
7
+ xorl eax, eax
8
+ }
9
+
10
+ __asm__ volatile (
11
+ "int $0x80"
12
+ : "=a" (r)
13
+ "+b" (arg1),
14
+ "+c" (arg2),
15
+ "+d" (arg3)
16
+ : "a" (128)
17
+ : "memory", "cc");
18
+ }
@@ -28,5 +28,10 @@ extern int foo(int);
28
28
 
29
29
  static int bar(const int i)
30
30
  {
31
+ char str[] = "hello\n";
32
+
33
+ printf(str);
34
+ printf("hello world\n");
35
+
31
36
  return i;
32
37
  }
@@ -2,16 +2,46 @@
2
2
 
3
3
  int g1;
4
4
  struct Point g2;
5
+ double g3;
5
6
 
6
7
  int foo(void)
7
8
  {
9
+ extern int g3;
10
+ extern int func1(void);
11
+ typedef long g3;
12
+
8
13
  return 0;
9
14
  }
10
15
 
16
+ enum E1 { A, B, C };
17
+
11
18
  struct Point *bar(int i)
12
19
  {
20
+ extern long g3;
21
+ extern int func1(int);
22
+
23
+ enum E2 { A, B, C };
24
+ typedef int A;
25
+
26
+ {
27
+ extern short g3;
28
+ extern int g3;
29
+ extern void func1(int);
30
+ extern int func1(int);
31
+ }
32
+
33
+ {
34
+ extern char g3;
35
+ extern short g3;
36
+ extern void func1(int, ...);
37
+ extern void func1(int);
38
+ }
39
+
13
40
  static struct Point p;
14
41
  p.x = i;
15
42
  p.y = i * 2;
43
+
16
44
  return &p;
17
45
  }
46
+
47
+ typedef int A;
@@ -47,7 +47,7 @@ static void bar(void)
47
47
  const int si2 = (int) 1.5e10;
48
48
 
49
49
  const int si3 = (int) -1.5e9;
50
- const int si3 = (int) -1.5e10;
50
+ const int si4 = (int) -1.5e10;
51
51
 
52
52
  int *data_ptr = (int *) alloc();
53
53
  int (*func_ptr)(void) = (int (*)(void)) alloc();
@@ -75,8 +75,8 @@ static void bar(void)
75
75
  const signed char sc5 = 127;
76
76
  const signed char sc6 = 128;
77
77
 
78
- const int si4 = 2147483647;
79
- const int si5 = 2147483648;
78
+ const int si5 = 2147483647;
79
+ const int si6 = 2147483648;
80
80
  }
81
81
 
82
82
  extern long baz(void);
@@ -0,0 +1,25 @@
1
+ int foo(const int i)
2
+ {
3
+ if (i > 5) {
4
+ switch (i) {
5
+ case 0:
6
+ return 1;
7
+ case 5:
8
+ return 2;
9
+ default:
10
+ return 3;
11
+ }
12
+ }
13
+
14
+ switch (i) {
15
+ case 0:
16
+ return 4;
17
+ default:
18
+ switch (i) {
19
+ case 10:
20
+ return 5;
21
+ default:
22
+ return 6;
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,98 @@
1
+ void __fundecl(void);
2
+ extern void _FUNDECL(void);
3
+ static void _fundecl(void);
4
+
5
+ extern int __vardecl;
6
+ extern int _VARDECL;
7
+ static int _vardecl;
8
+
9
+ int __vardef = 0;
10
+ extern int _VARDEF = 0;
11
+ static int _vardef = 0;
12
+
13
+ int __ansi_fundef(const int __param, const int _PARAM, const int _param)
14
+ {
15
+ return __param + _PARAM + _param;
16
+ }
17
+
18
+ int _ANSI_FUNDEF(const int __param, const int _PARAM, const int _param)
19
+ {
20
+ return __param + _PARAM + _param;
21
+ }
22
+
23
+ static _ansi_fundef(const int __param, const int _PARAM, const int _param)
24
+ {
25
+ return __param + _PARAM + _param;
26
+ }
27
+
28
+ int __kandr_fundef(__param, _PARAM, _param)
29
+ const int __param;
30
+ const int _PARAM;
31
+ const int _param;
32
+ {
33
+ return __param + _PARAM + _param;
34
+ }
35
+
36
+ int _KANDR_FUNDEF(__param, _PARAM, _param)
37
+ const int __param;
38
+ const int _PARAM;
39
+ const int _param;
40
+ {
41
+ return __param + _PARAM + _param;
42
+ }
43
+
44
+ static int _kandr_fundef(__param, _PARAM, _param)
45
+ const int __param;
46
+ const int _PARAM;
47
+ const int _param;
48
+ {
49
+ return __param + _PARAM + _param;
50
+ }
51
+
52
+ typedef int __typedef;
53
+ typedef int _TYPEDEF;
54
+ typedef int _typedef;
55
+
56
+ struct __struct_tag {
57
+ int i;
58
+ };
59
+ struct _STRUCT_TAG {
60
+ int i;
61
+ };
62
+ struct _struct_tag {
63
+ int i;
64
+ };
65
+
66
+ union __union_tag {
67
+ int i;
68
+ };
69
+ union _UNION_TAG {
70
+ int i;
71
+ };
72
+ union _union_tag {
73
+ int i;
74
+ };
75
+
76
+ enum __enum_tag { __enum, _ENUM, _enum };
77
+ enum _ENUM_TAG { __enum, _ENUM, _enum };
78
+ enum _enum_tag { __enum, _ENUM, _enum };
79
+
80
+ typedef struct __struct_tag_ {
81
+ int i;
82
+ } __struct_tag_t;
83
+ typedef struct _STRUCT_TAG_ {
84
+ int i;
85
+ } _STRUCT_TAG_t;
86
+ typedef struct _struct_tag_ {
87
+ int i;
88
+ } _struct_tag_t;
89
+
90
+ typedef struct {
91
+ int i;
92
+ } __unnamed_t;
93
+ typedef struct {
94
+ int i;
95
+ } _UNNAMED_T;
96
+ typedef struct {
97
+ int i;
98
+ } _unnamed_t;
@@ -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="contents">
49
49
  <h2>Table of Contents</h2>
50
50
  <ul>
@@ -2,7 +2,7 @@
2
2
  @setfilename developers_guide_ja.info
3
3
  @documentlanguage ja
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.4.0 開発者ガイド
5
+ @settitle AdLint 1.6.0 開発者ガイド
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -1,8 +1,8 @@
1
1
  <html lang="en">
2
2
  <head>
3
- <title>AdLint 1.4.0 User's Guide</title>
3
+ <title>AdLint 1.6.0 User's Guide</title>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="description" content="AdLint 1.4.0 User's Guide">
5
+ <meta name="description" content="AdLint 1.6.0 User's Guide">
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 User's Guide</h1>
47
+ <h1 class="settitle">AdLint 1.6.0 User's Guide</h1>
48
48
  <div class="node">
49
49
  <a name="Top"></a>
50
50
  <p><hr>
@@ -3390,7 +3390,7 @@ case 1:
3390
3390
  case 2:
3391
3391
  value = 2;
3392
3392
  break;
3393
- case 3;
3393
+ case 3:
3394
3394
  value = 3;
3395
3395
  break; /* W0003 */
3396
3396
  }
@@ -27191,13 +27191,28 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27191
27191
 
27192
27192
  <h4 class="subsection">6.449.2 Content</h4>
27193
27193
 
27194
- <p><b>This message will be supported in AdLint 2.0.0</b>
27195
-
27196
- <p>Under construction.
27194
+ <p>Under construction.
27197
27195
 
27198
27196
  <h4 class="subsection">6.449.3 Sample code</h4>
27199
27197
 
27200
- <pre class="verbatim">/* will be added */
27198
+ <pre class="verbatim">void foo(int arg1, int *arg2, int arg3)
27199
+ {
27200
+ asm("movl %ecx, %eax"); /* W0541 */
27201
+ __asm__("movl %ecx, (%eax)"); /* W0541 */
27202
+
27203
+ asm { /* W0541 */
27204
+ xorl eax, eax
27205
+ }
27206
+
27207
+ __asm__ volatile ( /* W0541 */
27208
+ "int $0x80"
27209
+ : "=a" (r)
27210
+ "+b" (arg1),
27211
+ "+c" (arg2),
27212
+ "+d" (arg3)
27213
+ : "a" (128)
27214
+ : "memory", "cc");
27215
+ }
27201
27216
  </pre>
27202
27217
 
27203
27218
  <h4 class="subsection">6.449.4 Related message</h4>
@@ -27206,7 +27221,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27206
27221
 
27207
27222
  <h4 class="subsection">6.449.5 Since</h4>
27208
27223
 
27209
- <p>2.0.0 (planned)
27224
+ <p>1.6.0
27210
27225
 
27211
27226
  <div class="node">
27212
27227
  <a name="W0542"></a>
@@ -28258,9 +28273,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
28258
28273
 
28259
28274
  <h4 class="subsection">6.475.2 Content</h4>
28260
28275
 
28261
- <p><b>This message will be supported in AdLint 2.0.0</b>
28262
-
28263
- <p>Under construction.
28276
+ <p>Under construction.
28264
28277
 
28265
28278
  <h4 class="subsection">6.475.3 Sample code</h4>
28266
28279
 
@@ -28274,7 +28287,7 @@ scanf("%[a-z]", &amp;c); /* W0573 */
28274
28287
 
28275
28288
  <h4 class="subsection">6.475.5 Since</h4>
28276
28289
 
28277
- <p>2.0.0 (planned)
28290
+ <p>1.6.0
28278
28291
 
28279
28292
  <div class="node">
28280
28293
  <a name="W0574"></a>
@@ -28484,9 +28497,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
28484
28497
 
28485
28498
  <h4 class="subsection">6.481.2 Content</h4>
28486
28499
 
28487
- <p><b>This message will be supported in AdLint 2.0.0</b>
28488
-
28489
- <p>Under construction.
28500
+ <p>Under construction.
28490
28501
 
28491
28502
  <h4 class="subsection">6.481.3 Sample code</h4>
28492
28503
 
@@ -28502,7 +28513,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
28502
28513
 
28503
28514
  <h4 class="subsection">6.481.5 Since</h4>
28504
28515
 
28505
- <p>2.0.0 (planned)
28516
+ <p>1.6.0
28506
28517
 
28507
28518
  <div class="node">
28508
28519
  <a name="W0580"></a>
@@ -30368,13 +30379,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30368
30379
 
30369
30380
  <p>Under construction.
30370
30381
 
30382
+ <h4 class="subsection">6.524.3 Sample code</h4>
30383
+
30371
30384
  <pre class="verbatim">register int arr1[3]; /* W0642 */
30372
30385
  int* p = arr1;
30373
30386
  </pre>
30374
30387
 
30375
- <p>Under construction.
30376
-
30377
- <h4 class="subsection">6.524.3 Related message</h4>
30388
+ <h4 class="subsection">6.524.4 Related message</h4>
30378
30389
 
30379
30390
  <ul>
30380
30391
  <li><a href="#W0643">W0643</a> This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
@@ -30383,7 +30394,7 @@ int* p = arr1;
30383
30394
  <li><a href="#W0646">W0646</a> A normal string literal and a wide string literal are contiguous.
30384
30395
  </ul>
30385
30396
 
30386
- <h4 class="subsection">6.524.4 Since</h4>
30397
+ <h4 class="subsection">6.524.5 Since</h4>
30387
30398
 
30388
30399
  <p>2.0.0 (planned)
30389
30400
 
@@ -32840,13 +32851,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
32840
32851
 
32841
32852
  <h4 class="subsection">6.563.2 Content</h4>
32842
32853
 
32843
- <p><b>This message will be supported in AdLint 2.0.0</b>
32844
-
32845
- <p>Under construction.
32854
+ <p>Under construction.
32846
32855
 
32847
32856
  <h4 class="subsection">6.563.3 Sample code</h4>
32848
32857
 
32849
- <pre class="verbatim">/* will be added */
32858
+ <pre class="verbatim">char c;
32859
+ scanf("%[z-a]", &amp;c); /* W0685 */
32850
32860
  </pre>
32851
32861
 
32852
32862
  <h4 class="subsection">6.563.4 Related message</h4>
@@ -32887,7 +32897,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
32887
32897
 
32888
32898
  <h4 class="subsection">6.563.5 Since</h4>
32889
32899
 
32890
- <p>2.0.0 (planned)
32900
+ <p>1.6.0
32891
32901
 
32892
32902
  <div class="node">
32893
32903
  <a name="W0686"></a>
@@ -32908,13 +32918,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
32908
32918
 
32909
32919
  <h4 class="subsection">6.564.2 Content</h4>
32910
32920
 
32911
- <p><b>This message will be supported in AdLint 2.0.0</b>
32912
-
32913
- <p>Under construction.
32921
+ <p>Under construction.
32914
32922
 
32915
32923
  <h4 class="subsection">6.564.3 Sample code</h4>
32916
32924
 
32917
- <pre class="verbatim">/* will be added */
32925
+ <pre class="verbatim">char c;
32926
+ scanf("%[abcda]", &amp;c); /* W0686 */
32918
32927
  </pre>
32919
32928
 
32920
32929
  <h4 class="subsection">6.564.4 Related message</h4>
@@ -32955,7 +32964,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
32955
32964
 
32956
32965
  <h4 class="subsection">6.564.5 Since</h4>
32957
32966
 
32958
- <p>2.0.0 (planned)
32967
+ <p>1.6.0
32959
32968
 
32960
32969
  <div class="node">
32961
32970
  <a name="W0687"></a>
@@ -36851,13 +36860,35 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
36851
36860
 
36852
36861
  <h4 class="subsection">6.650.2 Content</h4>
36853
36862
 
36854
- <p><b>This message will be supported in AdLint 2.0.0</b>
36855
-
36856
- <p>Under construction.
36863
+ <p>Under construction.
36857
36864
 
36858
36865
  <h4 class="subsection">6.650.3 Sample code</h4>
36859
36866
 
36860
- <pre class="verbatim">/* will be added */
36867
+ <pre class="verbatim">int foo(const int i)
36868
+ {
36869
+ if (i > 5) {
36870
+ switch (i) { /* W0781 */
36871
+ case 0:
36872
+ return 1;
36873
+ case 5:
36874
+ return 2;
36875
+ default:
36876
+ return 3;
36877
+ }
36878
+ }
36879
+
36880
+ switch (i) { /* OK */
36881
+ case 0:
36882
+ return 4;
36883
+ default:
36884
+ switch (i) { /* W0781 */
36885
+ case 10:
36886
+ return 5;
36887
+ default:
36888
+ return 6;
36889
+ }
36890
+ }
36891
+ }
36861
36892
  </pre>
36862
36893
 
36863
36894
  <h4 class="subsection">6.650.4 Related message</h4>
@@ -36866,7 +36897,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
36866
36897
 
36867
36898
  <h4 class="subsection">6.650.5 Since</h4>
36868
36899
 
36869
- <p>2.0.0 (planned)
36900
+ <p>1.6.0
36870
36901
 
36871
36902
  <div class="node">
36872
36903
  <a name="W0783"></a>
@@ -37037,13 +37068,21 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37037
37068
 
37038
37069
  <h4 class="subsection">6.655.2 Content</h4>
37039
37070
 
37040
- <p><b>This message will be supported in AdLint 2.0.0</b>
37041
-
37042
- <p>Under construction.
37071
+ <p>Under construction.
37043
37072
 
37044
37073
  <h4 class="subsection">6.655.3 Sample code</h4>
37045
37074
 
37046
- <pre class="verbatim">/* will be added */
37075
+ <pre class="verbatim">void func1(void)
37076
+ {
37077
+ extern int num;
37078
+ extern void func3(void);
37079
+ }
37080
+
37081
+ void func2(void)
37082
+ {
37083
+ extern double num; /* W0787 */
37084
+ extern void func3(int); /* W0787 */
37085
+ }
37047
37086
  </pre>
37048
37087
 
37049
37088
  <h4 class="subsection">6.655.4 Related message</h4>
@@ -37055,7 +37094,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37055
37094
 
37056
37095
  <h4 class="subsection">6.655.5 Since</h4>
37057
37096
 
37058
- <p>2.0.0 (planned)
37097
+ <p>1.6.0
37059
37098
 
37060
37099
  <div class="node">
37061
37100
  <a name="W0788"></a>
@@ -37076,13 +37115,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37076
37115
 
37077
37116
  <h4 class="subsection">6.656.2 Content</h4>
37078
37117
 
37079
- <p><b>This message will be supported in AdLint 2.0.0</b>
37080
-
37081
- <p>Under construction.
37118
+ <p>Under construction.
37082
37119
 
37083
37120
  <h4 class="subsection">6.656.3 Sample code</h4>
37084
37121
 
37085
- <pre class="verbatim">/* will be added */
37122
+ <pre class="verbatim">extern int func(void);
37123
+
37124
+ void func(void) /* W0788 */
37125
+ {
37126
+ typedef int num;
37127
+ double num; /* W0788 */
37128
+ }
37086
37129
  </pre>
37087
37130
 
37088
37131
  <h4 class="subsection">6.656.4 Related message</h4>
@@ -37094,7 +37137,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37094
37137
 
37095
37138
  <h4 class="subsection">6.656.5 Since</h4>
37096
37139
 
37097
- <p>2.0.0 (planned)
37140
+ <p>1.6.0
37098
37141
 
37099
37142
  <div class="node">
37100
37143
  <a name="W0789"></a>
@@ -37115,13 +37158,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37115
37158
 
37116
37159
  <h4 class="subsection">6.657.2 Content</h4>
37117
37160
 
37118
- <p><b>This message will be supported in AdLint 2.0.0</b>
37119
-
37120
- <p>Under construction.
37161
+ <p>Under construction.
37121
37162
 
37122
37163
  <h4 class="subsection">6.657.3 Sample code</h4>
37123
37164
 
37124
- <pre class="verbatim">/* will be added */
37165
+ <pre class="verbatim">int num = 0;
37166
+ extern int func1(void);
37167
+
37168
+ void func2(void)
37169
+ {
37170
+ extern double num; /* W0789 */
37171
+ extern void func1(void); /* W0789 */
37172
+ }
37125
37173
  </pre>
37126
37174
 
37127
37175
  <h4 class="subsection">6.657.4 Related message</h4>
@@ -37133,7 +37181,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37133
37181
 
37134
37182
  <h4 class="subsection">6.657.5 Since</h4>
37135
37183
 
37136
- <p>2.0.0 (planned)
37184
+ <p>1.6.0
37137
37185
 
37138
37186
  <div class="node">
37139
37187
  <a name="W0790"></a>
@@ -37854,13 +37902,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37854
37902
 
37855
37903
  <h4 class="subsection">6.675.2 Content</h4>
37856
37904
 
37857
- <p><b>This message will be supported in AdLint 2.0.0</b>
37858
-
37859
- <p>Under construction.
37905
+ <p>Under construction.
37860
37906
 
37861
37907
  <h4 class="subsection">6.675.3 Sample code</h4>
37862
37908
 
37863
- <pre class="verbatim">/* will be added */
37909
+ <pre class="verbatim">#undef __STDC_VERSION__ /* W0807 */
37864
37910
  </pre>
37865
37911
 
37866
37912
  <h4 class="subsection">6.675.4 Related message</h4>
@@ -37872,7 +37918,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37872
37918
 
37873
37919
  <h4 class="subsection">6.675.5 Since</h4>
37874
37920
 
37875
- <p>2.0.0 (planned)
37921
+ <p>1.6.0
37876
37922
 
37877
37923
  <div class="node">
37878
37924
  <a name="W0808"></a>
@@ -37893,13 +37939,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37893
37939
 
37894
37940
  <h4 class="subsection">6.676.2 Content</h4>
37895
37941
 
37896
- <p><b>This message will be supported in AdLint 2.0.0</b>
37897
-
37898
- <p>Under construction.
37942
+ <p>Under construction.
37899
37943
 
37900
37944
  <h4 class="subsection">6.676.3 Sample code</h4>
37901
37945
 
37902
- <pre class="verbatim">/* will be added */
37946
+ <pre class="verbatim">#define __FILE__ "test.c" /* W0808 */
37903
37947
  </pre>
37904
37948
 
37905
37949
  <h4 class="subsection">6.676.4 Related message</h4>
@@ -37911,7 +37955,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37911
37955
 
37912
37956
  <h4 class="subsection">6.676.5 Since</h4>
37913
37957
 
37914
- <p>2.0.0 (planned)
37958
+ <p>1.6.0
37915
37959
 
37916
37960
  <div class="node">
37917
37961
  <a name="W0809"></a>
@@ -37932,13 +37976,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37932
37976
 
37933
37977
  <h4 class="subsection">6.677.2 Content</h4>
37934
37978
 
37935
- <p><b>This message will be supported in AdLint 2.0.0</b>
37936
-
37937
- <p>Under construction.
37979
+ <p>Under construction.
37938
37980
 
37939
37981
  <h4 class="subsection">6.677.3 Sample code</h4>
37940
37982
 
37941
- <pre class="verbatim">/* will be added */
37983
+ <pre class="verbatim">extern int __value; /* W0809 */
37984
+ int _VAL = 10; /* W0809 */
37985
+ static void _func(void); /* W0809 */
37942
37986
  </pre>
37943
37987
 
37944
37988
  <h4 class="subsection">6.677.4 Related message</h4>
@@ -37947,7 +37991,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
37947
37991
 
37948
37992
  <h4 class="subsection">6.677.5 Since</h4>
37949
37993
 
37950
- <p>2.0.0 (planned)
37994
+ <p>1.6.0
37951
37995
 
37952
37996
  <div class="node">
37953
37997
  <a name="W0810"></a>
@@ -38663,13 +38707,26 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38663
38707
 
38664
38708
  <h4 class="subsection">6.696.2 Content</h4>
38665
38709
 
38666
- <p><b>This message will be supported in AdLint 2.0.0</b>
38667
-
38668
- <p>Under construction.
38710
+ <p>Under construction.
38669
38711
 
38670
38712
  <h4 class="subsection">6.696.3 Sample code</h4>
38671
38713
 
38672
- <pre class="verbatim">/* will be added */
38714
+ <pre class="verbatim">void func(int a, int b)
38715
+ {
38716
+ if (a == 0) {
38717
+ int c = 0;
38718
+ RETRY:
38719
+ b = 10;
38720
+ }
38721
+
38722
+ if (b != 0) {
38723
+ goto RETRY;
38724
+ }
38725
+ RETRY: /* W1030 */
38726
+ b = 1;
38727
+
38728
+ ...snip...
38729
+ }
38673
38730
  </pre>
38674
38731
 
38675
38732
  <h4 class="subsection">6.696.4 Related message</h4>
@@ -38678,7 +38735,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38678
38735
 
38679
38736
  <h4 class="subsection">6.696.5 Since</h4>
38680
38737
 
38681
- <p>2.0.0 (planned)
38738
+ <p>1.6.0
38682
38739
 
38683
38740
  <div class="node">
38684
38741
  <a name="W1031"></a>
@@ -39546,13 +39603,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39546
39603
 
39547
39604
  <h4 class="subsection">6.718.2 Content</h4>
39548
39605
 
39549
- <p><b>This message will be supported in AdLint 2.0.0</b>
39550
-
39551
- <p>Under construction.
39606
+ <p>Under construction.
39552
39607
 
39553
39608
  <h4 class="subsection">6.718.3 Sample code</h4>
39554
39609
 
39555
- <pre class="verbatim">/* will be added */
39610
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39611
+
39612
+ extern void func1(enum Color);
39613
+
39614
+ void func2(void)
39615
+ {
39616
+ func1(4); /* W1053 */
39617
+ }
39556
39618
  </pre>
39557
39619
 
39558
39620
  <h4 class="subsection">6.718.4 Related message</h4>
@@ -39574,7 +39636,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39574
39636
 
39575
39637
  <h4 class="subsection">6.718.5 Since</h4>
39576
39638
 
39577
- <p>2.0.0 (planned)
39639
+ <p>1.6.0
39578
39640
 
39579
39641
  <div class="node">
39580
39642
  <a name="W1054"></a>
@@ -39595,13 +39657,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39595
39657
 
39596
39658
  <h4 class="subsection">6.719.2 Content</h4>
39597
39659
 
39598
- <p><b>This message will be supported in AdLint 2.0.0</b>
39599
-
39600
- <p>Under construction.
39660
+ <p>Under construction.
39601
39661
 
39602
39662
  <h4 class="subsection">6.719.3 Sample code</h4>
39603
39663
 
39604
- <pre class="verbatim">/* will be added */
39664
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39665
+
39666
+ extern enum Color col;
39667
+
39668
+ void func2(void)
39669
+ {
39670
+ col = 4; /* W1054 */
39671
+ }
39605
39672
  </pre>
39606
39673
 
39607
39674
  <h4 class="subsection">6.719.4 Related message</h4>
@@ -39623,7 +39690,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39623
39690
 
39624
39691
  <h4 class="subsection">6.719.5 Since</h4>
39625
39692
 
39626
- <p>2.0.0 (planned)
39693
+ <p>1.6.0
39627
39694
 
39628
39695
  <div class="node">
39629
39696
  <a name="W1055"></a>
@@ -39644,13 +39711,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39644
39711
 
39645
39712
  <h4 class="subsection">6.720.2 Content</h4>
39646
39713
 
39647
- <p><b>This message will be supported in AdLint 2.0.0</b>
39648
-
39649
- <p>Under construction.
39714
+ <p>Under construction.
39650
39715
 
39651
39716
  <h4 class="subsection">6.720.3 Sample code</h4>
39652
39717
 
39653
- <pre class="verbatim">/* will be added */
39718
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39719
+
39720
+ enum Color func(void)
39721
+ {
39722
+ return 4; /* W1055 */
39723
+ }
39654
39724
  </pre>
39655
39725
 
39656
39726
  <h4 class="subsection">6.720.4 Related message</h4>
@@ -39672,7 +39742,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39672
39742
 
39673
39743
  <h4 class="subsection">6.720.5 Since</h4>
39674
39744
 
39675
- <p>2.0.0 (planned)
39745
+ <p>1.6.0
39676
39746
 
39677
39747
  <div class="node">
39678
39748
  <a name="W1056"></a>
@@ -39693,13 +39763,19 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39693
39763
 
39694
39764
  <h4 class="subsection">6.721.2 Content</h4>
39695
39765
 
39696
- <p><b>This message will be supported in AdLint 2.0.0</b>
39697
-
39698
- <p>Under construction.
39766
+ <p>Under construction.
39699
39767
 
39700
39768
  <h4 class="subsection">6.721.3 Sample code</h4>
39701
39769
 
39702
- <pre class="verbatim">/* will be added */
39770
+ <pre class="verbatim">enum Color { RED = 1, GREEN= 2, BLUE = 4 };
39771
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
39772
+
39773
+ extern void func1(enum Color);
39774
+
39775
+ void func2(enum Season ssn)
39776
+ {
39777
+ func1(ssn); /* W1056 */
39778
+ }
39703
39779
  </pre>
39704
39780
 
39705
39781
  <h4 class="subsection">6.721.4 Related message</h4>
@@ -39721,7 +39797,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39721
39797
 
39722
39798
  <h4 class="subsection">6.721.5 Since</h4>
39723
39799
 
39724
- <p>2.0.0 (planned)
39800
+ <p>1.6.0
39725
39801
 
39726
39802
  <div class="node">
39727
39803
  <a name="W1057"></a>
@@ -39742,13 +39818,19 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39742
39818
 
39743
39819
  <h4 class="subsection">6.722.2 Content</h4>
39744
39820
 
39745
- <p><b>This message will be supported in AdLint 2.0.0</b>
39746
-
39747
- <p>Under construction.
39821
+ <p>Under construction.
39748
39822
 
39749
39823
  <h4 class="subsection">6.722.3 Sample code</h4>
39750
39824
 
39751
- <pre class="verbatim">/* will be added */
39825
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39826
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
39827
+
39828
+ extern enum Color col;
39829
+
39830
+ void func(enum Season ssn)
39831
+ {
39832
+ col = ssn; /* W1057 */
39833
+ }
39752
39834
  </pre>
39753
39835
 
39754
39836
  <h4 class="subsection">6.722.4 Related message</h4>
@@ -39770,7 +39852,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39770
39852
 
39771
39853
  <h4 class="subsection">6.722.5 Since</h4>
39772
39854
 
39773
- <p>2.0.0 (planned)
39855
+ <p>1.6.0
39774
39856
 
39775
39857
  <div class="node">
39776
39858
  <a name="W1058"></a>
@@ -39791,13 +39873,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39791
39873
 
39792
39874
  <h4 class="subsection">6.723.2 Content</h4>
39793
39875
 
39794
- <p><b>This message will be supported in AdLint 2.0.0</b>
39795
-
39796
- <p>Under construction.
39876
+ <p>Under construction.
39797
39877
 
39798
39878
  <h4 class="subsection">6.723.3 Sample code</h4>
39799
39879
 
39800
- <pre class="verbatim">/* will be added */
39880
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39881
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
39882
+
39883
+ enum Color func(enum Season ssn)
39884
+ {
39885
+ return ssn; /* W1058 */
39886
+ }
39801
39887
  </pre>
39802
39888
 
39803
39889
  <h4 class="subsection">6.723.4 Related message</h4>
@@ -39819,7 +39905,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39819
39905
 
39820
39906
  <h4 class="subsection">6.723.5 Since</h4>
39821
39907
 
39822
- <p>2.0.0 (planned)
39908
+ <p>1.6.0
39823
39909
 
39824
39910
  <div class="node">
39825
39911
  <a name="W1059"></a>
@@ -39840,13 +39926,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39840
39926
 
39841
39927
  <h4 class="subsection">6.724.2 Content</h4>
39842
39928
 
39843
- <p><b>This message will be supported in AdLint 2.0.0</b>
39844
-
39845
- <p>Under construction.
39929
+ <p>Under construction.
39846
39930
 
39847
39931
  <h4 class="subsection">6.724.3 Sample code</h4>
39848
39932
 
39849
- <pre class="verbatim">/* will be added */
39933
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39934
+
39935
+ extern void func1(int num);
39936
+
39937
+ void func2(enum Color col)
39938
+ {
39939
+ func1(col); /* W1059 */
39940
+ }
39850
39941
  </pre>
39851
39942
 
39852
39943
  <h4 class="subsection">6.724.4 Related message</h4>
@@ -39868,7 +39959,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39868
39959
 
39869
39960
  <h4 class="subsection">6.724.5 Since</h4>
39870
39961
 
39871
- <p>2.0.0 (planned)
39962
+ <p>1.6.0
39872
39963
 
39873
39964
  <div class="node">
39874
39965
  <a name="W1060"></a>
@@ -39889,13 +39980,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39889
39980
 
39890
39981
  <h4 class="subsection">6.725.2 Content</h4>
39891
39982
 
39892
- <p><b>This message will be supported in AdLint 2.0.0</b>
39893
-
39894
- <p>Under construction.
39983
+ <p>Under construction.
39895
39984
 
39896
39985
  <h4 class="subsection">6.725.3 Sample code</h4>
39897
39986
 
39898
- <pre class="verbatim">/* will be added */
39987
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
39988
+
39989
+ int func2(enum Color col)
39990
+ {
39991
+ return col; /* W1060 */
39992
+ }
39899
39993
  </pre>
39900
39994
 
39901
39995
  <h4 class="subsection">6.725.4 Related message</h4>
@@ -39917,7 +40011,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39917
40011
 
39918
40012
  <h4 class="subsection">6.725.5 Since</h4>
39919
40013
 
39920
- <p>2.0.0 (planned)
40014
+ <p>1.6.0
39921
40015
 
39922
40016
  <div class="node">
39923
40017
  <a name="W1061"></a>
@@ -39938,13 +40032,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39938
40032
 
39939
40033
  <h4 class="subsection">6.726.2 Content</h4>
39940
40034
 
39941
- <p><b>This message will be supported in AdLint 2.0.0</b>
39942
-
39943
- <p>Under construction.
40035
+ <p>Under construction.
39944
40036
 
39945
40037
  <h4 class="subsection">6.726.3 Sample code</h4>
39946
40038
 
39947
- <pre class="verbatim">/* will be added */
40039
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40040
+
40041
+ extern void func1(enum Color);
40042
+
40043
+ void func2(int num)
40044
+ {
40045
+ func1(num); /* W1061 */
40046
+ }
39948
40047
  </pre>
39949
40048
 
39950
40049
  <h4 class="subsection">6.726.4 Related message</h4>
@@ -39966,7 +40065,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39966
40065
 
39967
40066
  <h4 class="subsection">6.726.5 Since</h4>
39968
40067
 
39969
- <p>2.0.0 (planned)
40068
+ <p>1.6.0
39970
40069
 
39971
40070
  <div class="node">
39972
40071
  <a name="W1062"></a>
@@ -39987,13 +40086,19 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
39987
40086
 
39988
40087
  <h4 class="subsection">6.727.2 Content</h4>
39989
40088
 
39990
- <p><b>This message will be supported in AdLint 2.0.0</b>
39991
-
39992
- <p>Under construction.
40089
+ <p>Under construction.
39993
40090
 
39994
40091
  <h4 class="subsection">6.727.3 Sample code</h4>
39995
40092
 
39996
- <p>Under construction.
40093
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40094
+
40095
+ extern enum Color col;
40096
+
40097
+ void func(int num)
40098
+ {
40099
+ col = num + 1; /* W1062 */
40100
+ }
40101
+ </pre>
39997
40102
 
39998
40103
  <h4 class="subsection">6.727.4 Related message</h4>
39999
40104
 
@@ -40014,7 +40119,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40014
40119
 
40015
40120
  <h4 class="subsection">6.727.5 Since</h4>
40016
40121
 
40017
- <p>2.0.0 (planned)
40122
+ <p>1.6.0
40018
40123
 
40019
40124
  <div class="node">
40020
40125
  <a name="W1063"></a>
@@ -40035,13 +40140,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40035
40140
 
40036
40141
  <h4 class="subsection">6.728.2 Content</h4>
40037
40142
 
40038
- <p><b>This message will be supported in AdLint 2.0.0</b>
40039
-
40040
- <p>Under construction.
40143
+ <p>Under construction.
40041
40144
 
40042
40145
  <h4 class="subsection">6.728.3 Sample code</h4>
40043
40146
 
40044
- <pre class="verbatim">/* will be added */
40147
+ <pre class="verbatim">enum Color { RED = 1, GREEN = 2, BLUE = 4 };
40148
+
40149
+ enum Color func(int num)
40150
+ {
40151
+ return num / 2; /* W1063 */
40152
+ }
40045
40153
  </pre>
40046
40154
 
40047
40155
  <h4 class="subsection">6.728.4 Related message</h4>
@@ -40063,7 +40171,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40063
40171
 
40064
40172
  <h4 class="subsection">6.728.5 Since</h4>
40065
40173
 
40066
- <p>2.0.0 (planned)
40174
+ <p>1.6.0
40067
40175
 
40068
40176
  <div class="node">
40069
40177
  <a name="W1064"></a>