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
@@ -1,8 +1,8 @@
1
1
  <html lang="en">
2
2
  <head>
3
- <title>AdLint 1.6.0 User's Guide</title>
3
+ <title>AdLint 1.8.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.6.0 User's Guide">
5
+ <meta name="description" content="AdLint 1.8.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.6.0 User's Guide</h1>
47
+ <h1 class="settitle">AdLint 1.8.0 User's Guide</h1>
48
48
  <div class="node">
49
49
  <a name="Top"></a>
50
50
  <p><hr>
@@ -2533,7 +2533,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
2533
2533
  <li><a href="#W0535">W0535</a>: A comma operator is used in a 'for' statement.
2534
2534
  <li><a href="#W0538">W0538</a>: This 'default' label is not final label in this 'switch' statement.
2535
2535
  <li><a href="#W0540">W0540</a>: A function which the blank formal argument list is declared. `void' is omitted.
2536
- <li><a href="#W0541">W0541</a>: This function mixed weaves C code with inline assembly code.
2536
+ <li><a href="#W0541">W0541</a>: Inline assembly code should be encapsulated by macro.
2537
2537
  <li><a href="#W0542">W0542</a>: There are identifiers in the part of formal argument in a function declaration.
2538
2538
  <li><a href="#W0543">W0543</a>: The identifier of formal argument in this function declaration is different from the past declaration of it.
2539
2539
  <li><a href="#W0544">W0544</a>: The identifier of formal argument in the function declaration is different from the declaration of function pointer.
@@ -2598,8 +2598,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
2598
2598
  <li><a href="#W0627">W0627</a>: There is a dead letter (only `;') in the following other code.
2599
2599
  <li><a href="#W0628">W0628</a>: A function `%s' is defined, but this is not used in this project.
2600
2600
  <li><a href="#W0629">W0629</a>: A static function `%s()' is not used in this translation unit.
2601
- <li><a href="#W0632">W0632</a>: If `'' or `/*' use in `#include &lt;%s&gt;', it will unspecify behavior.
2602
- <li><a href="#W0633">W0633</a>: If `'' or `/*' use in `#include "%s"', it will unspecify behavior.
2601
+ <li><a href="#W0632">W0632</a>: Using ' or " characters in `#include &lt;%s&gt;' directive makes undefined behavior.
2602
+ <li><a href="#W0633">W0633</a>: Using ' character in `#include "%s"' directive makes undefined behavior.
2603
2603
  <li><a href="#W0634">W0634</a>: `\' is used in `#include' line. `/' is recommended for the path delimiter.
2604
2604
  <li><a href="#W0635">W0635</a>: The type doesn't match with %sth conversion specifier and the corresponding actual argument.
2605
2605
  <li><a href="#W0636">W0636</a>: An actual argument doesn't exist correspond to %sth conversion specifier.
@@ -2650,9 +2650,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
2650
2650
  <li><a href="#W0685">W0685</a>: A character preceding the `-' in scanset o `[]' is bigger than a character following the `-'.
2651
2651
  <li><a href="#W0686">W0686</a>: The same characters are described in scanset (characters enclosed by `[]').
2652
2652
  <li><a href="#W0687">W0687</a>: #undef is using to delete #defined operator.
2653
- <li><a href="#W0688">W0688</a>: There is no line number in 1 to 32767 ranges after '#line'.
2654
- <li><a href="#W0689">W0689</a>: #line command syntax doesn't match `#line volatile integer constant value "string"'.
2655
- <li><a href="#W0690">W0690</a>: This is not line number after '#line' value'.
2653
+ <li><a href="#W0688">W0688</a>: There is no line number in 1 to 32767 ranges after #line directive.
2654
+ <li><a href="#W0689">W0689</a>: #line directive syntax doesn't match `#line integer constant \"string\"'.
2655
+ <li><a href="#W0690">W0690</a>: No line number after #line directive.
2656
2656
  <li><a href="#W0691">W0691</a>: The result of `##' operator is not valid preprocessing token.
2657
2657
  <li><a href="#W0692">W0692</a>: A function-like macro doesn't given an actual argument.
2658
2658
  <li><a href="#W0693">W0693</a>: A function-like macro is called by actual argument which its definition is smaller.
@@ -27187,7 +27187,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27187
27187
 
27188
27188
  <h4 class="subsection">6.449.1 Message body</h4>
27189
27189
 
27190
- <p>This function mixed weaves C code with inline assembly code.
27190
+ <p>Inline assembly code should be encapsulated by macro.
27191
27191
 
27192
27192
  <h4 class="subsection">6.449.2 Content</h4>
27193
27193
 
@@ -27195,7 +27195,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27195
27195
 
27196
27196
  <h4 class="subsection">6.449.3 Sample code</h4>
27197
27197
 
27198
- <pre class="verbatim">void foo(int arg1, int *arg2, int arg3)
27198
+ <pre class="verbatim">#define ASM_CODE asm("movl %ecx, %eax")
27199
+
27200
+ void foo(int arg1, int *arg2, int arg3)
27199
27201
  {
27200
27202
  asm("movl %ecx, %eax"); /* W0541 */
27201
27203
  __asm__("movl %ecx, (%eax)"); /* W0541 */
@@ -27204,6 +27206,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
27204
27206
  xorl eax, eax
27205
27207
  }
27206
27208
 
27209
+ ASM_CODE; /* OK */
27210
+
27207
27211
  __asm__ volatile ( /* W0541 */
27208
27212
  "int $0x80"
27209
27213
  : "=a" (r)
@@ -29288,16 +29292,15 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29288
29292
 
29289
29293
  <h4 class="subsection">6.498.2 Content</h4>
29290
29294
 
29291
- <p><b>This message will be supported in AdLint 2.0.0</b>
29292
-
29293
- <p>Under construction.
29295
+ <p>Under construction.
29294
29296
 
29295
29297
  <h4 class="subsection">6.498.3 Sample code</h4>
29296
29298
 
29297
- <pre class="verbatim">int a = func();
29298
-
29299
- if (a &lt; 0) {
29300
- unsigned int b = a; /* W0607 */
29299
+ <pre class="verbatim">void func(int a)
29300
+ {
29301
+ if (a &lt; 0) {
29302
+ unsigned int b = (unsigned int) a; /* W0607 */
29303
+ }
29301
29304
  }
29302
29305
  </pre>
29303
29306
 
@@ -29309,7 +29312,7 @@ if (a &lt; 0) {
29309
29312
 
29310
29313
  <h4 class="subsection">6.498.5 Since</h4>
29311
29314
 
29312
- <p>2.0.0 (planned)
29315
+ <p>1.8.0
29313
29316
 
29314
29317
  <div class="node">
29315
29318
  <a name="W0608"></a>
@@ -29330,13 +29333,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29330
29333
 
29331
29334
  <h4 class="subsection">6.499.2 Content</h4>
29332
29335
 
29333
- <p><b>This message will be supported in AdLint 2.0.0</b>
29334
-
29335
- <p>Under construction.
29336
+ <p>Under construction.
29336
29337
 
29337
29338
  <h4 class="subsection">6.499.3 Sample code</h4>
29338
29339
 
29339
- <pre class="verbatim">/* will be added */
29340
+ <pre class="verbatim">void fuu(int a)
29341
+ {
29342
+ unsigned char b;
29343
+
29344
+ if (a &lt; 256) {
29345
+ b = (unsigned char) a; /* W0608 */
29346
+ }
29347
+ }
29340
29348
  </pre>
29341
29349
 
29342
29350
  <h4 class="subsection">6.499.4 Related message</h4>
@@ -29347,7 +29355,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29347
29355
 
29348
29356
  <h4 class="subsection">6.499.5 Since</h4>
29349
29357
 
29350
- <p>2.0.0 (planned)
29358
+ <p>1.8.0
29351
29359
 
29352
29360
  <div class="node">
29353
29361
  <a name="W0609"></a>
@@ -29762,13 +29770,18 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29762
29770
 
29763
29771
  <h4 class="subsection">6.509.2 Content</h4>
29764
29772
 
29765
- <p><b>This message will be supported in AdLint 2.0.0</b>
29766
-
29767
- <p>Under construction.
29773
+ <p>Under construction.
29768
29774
 
29769
29775
  <h4 class="subsection">6.509.3 Sample code</h4>
29770
29776
 
29771
- <pre class="verbatim">/* will be added */
29777
+ <pre class="verbatim">typedef int *INT_PTR; /* W0625 */
29778
+
29779
+ extern INT_PTR func(void);
29780
+
29781
+ INT_PTR func(void)
29782
+ {
29783
+ return 0;
29784
+ }
29772
29785
  </pre>
29773
29786
 
29774
29787
  <h4 class="subsection">6.509.4 Related message</h4>
@@ -29777,7 +29790,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29777
29790
 
29778
29791
  <h4 class="subsection">6.509.5 Since</h4>
29779
29792
 
29780
- <p>2.0.0 (planned)
29793
+ <p>1.8.0
29781
29794
 
29782
29795
  <div class="node">
29783
29796
  <a name="W0626"></a>
@@ -29963,29 +29976,27 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
29963
29976
 
29964
29977
  <h4 class="subsection">6.514.1 Message body</h4>
29965
29978
 
29966
- <p>If `&rdquo; or `/*' use in `#include &lt;%s&gt;', it will unspecify behavior.
29979
+ <p>Using ' or " characters in `<code>#include &lt;%s&gt;</code>' directive makes undefined behavior.
29967
29980
 
29968
29981
  <h4 class="subsection">6.514.2 Content</h4>
29969
29982
 
29970
- <p><b>This message will be supported in AdLint 2.0.0</b>
29971
-
29972
- <p>Under construction.
29983
+ <p>Under construction.
29973
29984
 
29974
29985
  <h4 class="subsection">6.514.3 Sample code</h4>
29975
29986
 
29976
- <pre class="verbatim">/* will be added */
29987
+ <pre class="verbatim">#include &lt;NG'_header.h> /* W0632 */
29977
29988
  </pre>
29978
29989
 
29979
29990
  <h4 class="subsection">6.514.4 Related message</h4>
29980
29991
 
29981
29992
  <ul>
29982
- <li><a href="#W0633">W0633</a> If `&rdquo; or `/*' use in `#include "%s"', it will unspecify behavior.
29993
+ <li><a href="#W0633">W0633</a> Using ' character in `#include "%s"' directive makes undefined behavior.
29983
29994
  <li><a href="#W0634">W0634</a> `\' is used in `#include' line. `/' is recommended for the path delimiter.
29984
29995
  </ul>
29985
29996
 
29986
29997
  <h4 class="subsection">6.514.5 Since</h4>
29987
29998
 
29988
- <p>2.0.0 (planned)
29999
+ <p>1.8.0
29989
30000
 
29990
30001
  <div class="node">
29991
30002
  <a name="W0633"></a>
@@ -30002,29 +30013,27 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30002
30013
 
30003
30014
  <h4 class="subsection">6.515.1 Message body</h4>
30004
30015
 
30005
- <p>If `&rdquo; or `/*' use in `#include \"%s\"', it will unspecify behavior.
30016
+ <p>Using ' character in `<code>#include "%s"</code>' directive makes undefined behavior.
30006
30017
 
30007
30018
  <h4 class="subsection">6.515.2 Content</h4>
30008
30019
 
30009
- <p><b>This message will be supported in AdLint 2.0.0</b>
30010
-
30011
- <p>Under construction.
30020
+ <p>Under construction.
30012
30021
 
30013
30022
  <h4 class="subsection">6.515.3 Sample code</h4>
30014
30023
 
30015
- <pre class="verbatim">/* will be added */
30024
+ <pre class="verbatim">#include "NG'_header.h" /* W0633 */
30016
30025
  </pre>
30017
30026
 
30018
30027
  <h4 class="subsection">6.515.4 Related message</h4>
30019
30028
 
30020
30029
  <ul>
30021
- <li><a href="#W0632">W0632</a> If `&rdquo; or `/*' use in `#include &lt;%s&gt;', it will unspecify behavior.
30030
+ <li><a href="#W0632">W0632</a> Using ' or " characters in `#include &lt;%s&gt;' directive makes undefined behavior.
30022
30031
  <li><a href="#W0634">W0634</a> `\' is used in `#include' line. `/' is recommended for the path delimiter.
30023
30032
  </ul>
30024
30033
 
30025
30034
  <h4 class="subsection">6.515.5 Since</h4>
30026
30035
 
30027
- <p>2.0.0 (planned)
30036
+ <p>1.8.0
30028
30037
 
30029
30038
  <div class="node">
30030
30039
  <a name="W0634"></a>
@@ -30045,25 +30054,24 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30045
30054
 
30046
30055
  <h4 class="subsection">6.516.2 Content</h4>
30047
30056
 
30048
- <p><b>This message will be supported in AdLint 2.0.0</b>
30049
-
30050
- <p>Under construction.
30057
+ <p>Under construction.
30051
30058
 
30052
30059
  <h4 class="subsection">6.516.3 Sample code</h4>
30053
30060
 
30054
- <pre class="verbatim">/* will be added */
30061
+ <pre class="verbatim">#include "..\ng\header.h" /* W0634 */
30062
+ #include "..\\ng\\header.h" /* W0634 */
30055
30063
  </pre>
30056
30064
 
30057
30065
  <h4 class="subsection">6.516.4 Related message</h4>
30058
30066
 
30059
30067
  <ul>
30060
- <li><a href="#W0632">W0632</a> If `&rdquo; or `/*' use in `#include &lt;%s&gt;', it will unspecify behavior.
30061
- <li><a href="#W0633">W0633</a> If `&rdquo; or `/*' use in `#include "%s"', it will unspecify behavior.
30068
+ <li><a href="#W0632">W0632</a> Using ' or " characters in `#include &lt;%s&gt;' directive makes undefined behavior.
30069
+ <li><a href="#W0633">W0633</a> Using ' character in `#include "%s"' directive makes undefined behavior.
30062
30070
  </ul>
30063
30071
 
30064
30072
  <h4 class="subsection">6.516.5 Since</h4>
30065
30073
 
30066
- <p>2.0.0 (planned)
30074
+ <p>1.8.0
30067
30075
 
30068
30076
  <div class="node">
30069
30077
  <a name="W0635"></a>
@@ -30375,14 +30383,17 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30375
30383
 
30376
30384
  <h4 class="subsection">6.524.2 Content</h4>
30377
30385
 
30378
- <p><b>This message will be supported in AdLint 2.0.0</b>
30379
-
30380
- <p>Under construction.
30386
+ <p>Under construction.
30381
30387
 
30382
30388
  <h4 class="subsection">6.524.3 Sample code</h4>
30383
30389
 
30384
- <pre class="verbatim">register int arr1[3]; /* W0642 */
30385
- int* p = arr1;
30390
+ <pre class="verbatim">void func(void)
30391
+ {
30392
+ register int a[3];
30393
+
30394
+ int *p1 = a; /* W0642 */
30395
+ int *p2 = &amp;a[1]; /* W0642 */
30396
+ }
30386
30397
  </pre>
30387
30398
 
30388
30399
  <h4 class="subsection">6.524.4 Related message</h4>
@@ -30396,7 +30407,7 @@ int* p = arr1;
30396
30407
 
30397
30408
  <h4 class="subsection">6.524.5 Since</h4>
30398
30409
 
30399
- <p>2.0.0 (planned)
30410
+ <p>1.8.0
30400
30411
 
30401
30412
  <div class="node">
30402
30413
  <a name="W0643"></a>
@@ -32995,9 +33006,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
32995
33006
  <h4 class="subsection">6.565.4 Related message</h4>
32996
33007
 
32997
33008
  <ul>
32998
- <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after '#line'.
32999
- <li><a href="#W0689">W0689</a> #line command syntax doesn't match `#line volatile integer constant value "string"'.
33000
- <li><a href="#W0690">W0690</a> This is not line number after '#line' value'.
33009
+ <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after #line directive.
33010
+ <li><a href="#W0689">W0689</a> #line directive syntax doesn't match `#line integer constant \"string\"'.
33011
+ <li><a href="#W0690">W0690</a> No line number after #line directive.
33001
33012
  <li><a href="#W0691">W0691</a> The result of `##' operator is not valid preprocessing token.
33002
33013
  </ul>
33003
33014
 
@@ -33020,7 +33031,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33020
33031
 
33021
33032
  <h4 class="subsection">6.566.1 Message body</h4>
33022
33033
 
33023
- <p>There is no line number in 1 to 32767 ranges after '#line'
33034
+ <p>There is no line number in 1 to 32767 ranges after #line directive.
33024
33035
 
33025
33036
  <h4 class="subsection">6.566.2 Content</h4>
33026
33037
 
@@ -33035,8 +33046,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33035
33046
 
33036
33047
  <ul>
33037
33048
  <li><a href="#W0687">W0687</a> #undef is using to delete #defined operator.
33038
- <li><a href="#W0689">W0689</a> #line command syntax doesn't match `#line volatile integer constant value "string"'.
33039
- <li><a href="#W0690">W0690</a> This is not line number after '#line' value'.
33049
+ <li><a href="#W0689">W0689</a> #line directive syntax doesn't match `#line integer constant \"string\"'.
33050
+ <li><a href="#W0690">W0690</a> No line number after #line directive.
33040
33051
  <li><a href="#W0691">W0691</a> The result of `##' operator is not valid preprocessing token.
33041
33052
  </ul>
33042
33053
 
@@ -33059,7 +33070,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33059
33070
 
33060
33071
  <h4 class="subsection">6.567.1 Message body</h4>
33061
33072
 
33062
- <p>#line command syntax doesn't match `#line volatile integer constant value \"string\"'.
33073
+ <p>#line directive syntax doesn't match `#line integer constant \"string\"'.
33063
33074
 
33064
33075
  <h4 class="subsection">6.567.2 Content</h4>
33065
33076
 
@@ -33077,8 +33088,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33077
33088
 
33078
33089
  <ul>
33079
33090
  <li><a href="#W0687">W0687</a> #undef is using to delete #defined operator.
33080
- <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after '#line'.
33081
- <li><a href="#W0690">W0690</a> This is not line number after '#line' value'.
33091
+ <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after #line directive.
33092
+ <li><a href="#W0690">W0690</a> No line number after #line directive.
33082
33093
  <li><a href="#W0691">W0691</a> The result of `##' operator is not valid preprocessing token.
33083
33094
  </ul>
33084
33095
 
@@ -33101,7 +33112,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33101
33112
 
33102
33113
  <h4 class="subsection">6.568.1 Message body</h4>
33103
33114
 
33104
- <p>This is not line number after '#line' value.'
33115
+ <p>No line number after #line directive.
33105
33116
 
33106
33117
  <h4 class="subsection">6.568.2 Content</h4>
33107
33118
 
@@ -33117,8 +33128,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33117
33128
 
33118
33129
  <ul>
33119
33130
  <li><a href="#W0687">W0687</a> #undef is using to delete #defined operator.
33120
- <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after '#line'.
33121
- <li><a href="#W0689">W0689</a> #line command syntax doesn't match `#line volatile integer constant value "string"'.
33131
+ <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after #line directive.
33132
+ <li><a href="#W0689">W0689</a> #line directive syntax doesn't match `#line integer constant \"string\"'.
33122
33133
  <li><a href="#W0691">W0691</a> The result of `##' operator is not valid preprocessing token.
33123
33134
  </ul>
33124
33135
 
@@ -33158,9 +33169,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33158
33169
 
33159
33170
  <ul>
33160
33171
  <li><a href="#W0687">W0687</a> #undef is using to delete #defined operator.
33161
- <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after '#line'.
33162
- <li><a href="#W0689">W0689</a> #line command syntax doesn't match `#line volatile integer constant value "string"'.
33163
- <li><a href="#W0690">W0690</a> This is not line number after '#line' value'.
33172
+ <li><a href="#W0688">W0688</a> There is no line number in 1 to 32767 ranges after #line directive.
33173
+ <li><a href="#W0689">W0689</a> #line directive syntax doesn't match `#line integer constant \"string\"'.
33174
+ <li><a href="#W0690">W0690</a> No line number after #line directive.
33164
33175
  </ul>
33165
33176
 
33166
33177
  <h4 class="subsection">6.569.5 Since</h4>
@@ -33752,13 +33763,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33752
33763
 
33753
33764
  <h4 class="subsection">6.584.2 Content</h4>
33754
33765
 
33755
- <p><b>This message will be supported in AdLint 2.0.0</b>
33756
-
33757
- <p>Under construction.
33766
+ <p>Under construction.
33758
33767
 
33759
33768
  <h4 class="subsection">6.584.3 Sample code</h4>
33760
33769
 
33761
- <pre class="verbatim">x = (a + b) > (c > d); /* W0711 */
33770
+ <pre class="verbatim">int func(int a, int b, int c, int d)
33771
+ {
33772
+ return (a + b) > (c > d); /* W0711 */
33773
+ }
33762
33774
  </pre>
33763
33775
 
33764
33776
  <h4 class="subsection">6.584.4 Related message</h4>
@@ -33770,7 +33782,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33770
33782
 
33771
33783
  <h4 class="subsection">6.584.5 Since</h4>
33772
33784
 
33773
- <p>2.0.0 (planned)
33785
+ <p>1.8.0
33774
33786
 
33775
33787
  <div class="node">
33776
33788
  <a name="W0712"></a>
@@ -33791,13 +33803,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33791
33803
 
33792
33804
  <h4 class="subsection">6.585.2 Content</h4>
33793
33805
 
33794
- <p><b>This message will be supported in AdLint 2.0.0</b>
33795
-
33796
- <p>Under construction.
33806
+ <p>Under construction.
33797
33807
 
33798
33808
  <h4 class="subsection">6.585.3 Sample code</h4>
33799
33809
 
33800
- <pre class="verbatim">x = (a > b) > (c + d); /* W0712 */
33810
+ <pre class="verbatim">int func(int a, int b, int c, int d)
33811
+ {
33812
+ return (a > b) > (c + d); /* W0712 */
33813
+ }
33801
33814
  </pre>
33802
33815
 
33803
33816
  <h4 class="subsection">6.585.4 Related message</h4>
@@ -33809,7 +33822,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33809
33822
 
33810
33823
  <h4 class="subsection">6.585.5 Since</h4>
33811
33824
 
33812
- <p>2.0.0 (planned)
33825
+ <p>1.8.0
33813
33826
 
33814
33827
  <div class="node">
33815
33828
  <a name="W0713"></a>
@@ -33830,13 +33843,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33830
33843
 
33831
33844
  <h4 class="subsection">6.586.2 Content</h4>
33832
33845
 
33833
- <p><b>This message will be supported in AdLint 2.0.0</b>
33834
-
33835
- <p>Under construction.
33846
+ <p>Under construction.
33836
33847
 
33837
33848
  <h4 class="subsection">6.586.3 Sample code</h4>
33838
33849
 
33839
- <pre class="verbatim">x = (a > b) > (c > d); /* W0713 */
33850
+ <pre class="verbatim">int func(int a, int b, int c, int d)
33851
+ {
33852
+ return (a > b) > (c > d); /* W0713 */
33853
+ }
33840
33854
  </pre>
33841
33855
 
33842
33856
  <h4 class="subsection">6.586.4 Related message</h4>
@@ -33848,7 +33862,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33848
33862
 
33849
33863
  <h4 class="subsection">6.586.5 Since</h4>
33850
33864
 
33851
- <p>2.0.0 (planned)
33865
+ <p>1.8.0
33852
33866
 
33853
33867
  <div class="node">
33854
33868
  <a name="W0714"></a>
@@ -33869,13 +33883,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33869
33883
 
33870
33884
  <h4 class="subsection">6.587.2 Content</h4>
33871
33885
 
33872
- <p><b>This message will be supported in AdLint 2.0.0</b>
33873
-
33874
- <p>Under construction.
33886
+ <p>Under construction.
33875
33887
 
33876
33888
  <h4 class="subsection">6.587.3 Sample code</h4>
33877
33889
 
33878
- <pre class="verbatim">/* will be added */
33890
+ <pre class="verbatim">int func(int a, int b, int c, int d)
33891
+ {
33892
+ return (a > b) &amp; (c > d); /* W0714 */
33893
+ }
33879
33894
  </pre>
33880
33895
 
33881
33896
  <h4 class="subsection">6.587.4 Related message</h4>
@@ -33889,7 +33904,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33889
33904
 
33890
33905
  <h4 class="subsection">6.587.5 Since</h4>
33891
33906
 
33892
- <p>2.0.0 (planned)
33907
+ <p>1.8.0
33893
33908
 
33894
33909
  <div class="node">
33895
33910
  <a name="W0715"></a>
@@ -33910,13 +33925,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33910
33925
 
33911
33926
  <h4 class="subsection">6.588.2 Content</h4>
33912
33927
 
33913
- <p><b>This message will be supported in AdLint 2.0.0</b>
33914
-
33915
- <p>Under construction.
33928
+ <p>Under construction.
33916
33929
 
33917
33930
  <h4 class="subsection">6.588.3 Sample code</h4>
33918
33931
 
33919
- <pre class="verbatim">/* will be added */
33932
+ <pre class="verbatim">int func(int a, int b, int c, int d)
33933
+ {
33934
+ return (a > b) | (c > d); /* W0715 */
33935
+ }
33920
33936
  </pre>
33921
33937
 
33922
33938
  <h4 class="subsection">6.588.4 Related message</h4>
@@ -33930,7 +33946,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33930
33946
 
33931
33947
  <h4 class="subsection">6.588.5 Since</h4>
33932
33948
 
33933
- <p>2.0.0 (planned)
33949
+ <p>1.8.0
33934
33950
 
33935
33951
  <div class="node">
33936
33952
  <a name="W0716"></a>
@@ -34458,7 +34474,7 @@ enum Fruits { APPLE, BANANA, ORANGE };
34458
34474
  void func(void)
34459
34475
  {
34460
34476
  enum Color c;
34461
-
34477
+
34462
34478
  c = ORANGE; /* W0729 */
34463
34479
  }
34464
34480
  </pre>
@@ -38254,13 +38270,32 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38254
38270
 
38255
38271
  <h4 class="subsection">6.684.2 Content</h4>
38256
38272
 
38257
- <p><b>This message will be supported in AdLint 2.0.0</b>
38258
-
38259
- <p>Under construction.
38273
+ <p>Under construction.
38260
38274
 
38261
38275
  <h4 class="subsection">6.684.3 Sample code</h4>
38262
38276
 
38263
- <pre class="verbatim">/* will be added */
38277
+ <pre class="verbatim">#define ASM_CODE asm("movl %ecx, %eax")
38278
+
38279
+ void foo(int arg1, int *arg2, int arg3)
38280
+ {
38281
+ asm("movl %ecx, %eax"); /* W0832 */
38282
+ __asm__("movl %ecx, (%eax)"); /* W0832 */
38283
+
38284
+ asm { /* W0832 */
38285
+ xorl eax, eax
38286
+ }
38287
+
38288
+ ASM_CODE; /* W0832 */
38289
+
38290
+ __asm__ volatile ( /* W0832 */
38291
+ "int $0x80"
38292
+ : "=a" (r)
38293
+ "+b" (arg1),
38294
+ "+c" (arg2),
38295
+ "+d" (arg3)
38296
+ : "a" (128)
38297
+ : "memory", "cc");
38298
+ }
38264
38299
  </pre>
38265
38300
 
38266
38301
  <h4 class="subsection">6.684.4 Related message</h4>
@@ -38271,7 +38306,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
38271
38306
 
38272
38307
  <h4 class="subsection">6.684.5 Since</h4>
38273
38308
 
38274
- <p>2.0.0 (planned)
38309
+ <p>1.8.0
38275
38310
 
38276
38311
  <div class="node">
38277
38312
  <a name="W0833"></a>