adlint 1.4.0 → 1.6.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 (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>