adlint 1.16.0 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/ChangeLog +471 -0
  2. data/MANIFEST +35 -8
  3. data/NEWS +50 -4
  4. data/bin/adlint +7 -7
  5. data/bin/adlint_chk +7 -7
  6. data/bin/adlint_cma +7 -7
  7. data/bin/adlint_sma +7 -7
  8. data/bin/adlintize +5 -5
  9. data/etc/mesg.d/en_US/messages.yml +3 -3
  10. data/etc/mesg.d/ja_JP/messages.yml +3 -3
  11. data/features/message_detection/E0013.feature +34 -0
  12. data/features/message_detection/W0007.feature +2 -0
  13. data/features/message_detection/W0583.feature +1 -2
  14. data/features/message_detection/W0641.feature +132 -0
  15. data/features/message_detection/W0643.feature +1 -1
  16. data/features/message_detection/W0644.feature +529 -0
  17. data/features/message_detection/W0645.feature +1 -1
  18. data/features/message_detection/W0649.feature +277 -0
  19. data/features/message_detection/W0650.feature +208 -0
  20. data/features/message_detection/W0697.feature +6 -0
  21. data/features/message_detection/W0705.feature +350 -0
  22. data/features/message_detection/W0707.feature +223 -0
  23. data/features/message_detection/W0711.feature +113 -0
  24. data/features/message_detection/W0712.feature +113 -0
  25. data/features/message_detection/W0713.feature +110 -0
  26. data/features/message_detection/W0714.feature +118 -0
  27. data/features/message_detection/W0715.feature +118 -0
  28. data/features/message_detection/W0716.feature +1 -0
  29. data/features/message_detection/W0717.feature +1 -0
  30. data/features/message_detection/W0718.feature +1 -0
  31. data/features/message_detection/W0719.feature +154 -0
  32. data/features/message_detection/W0723.feature +1 -2
  33. data/features/message_detection/W0732.feature +3 -0
  34. data/features/message_detection/W0733.feature +3 -0
  35. data/features/message_detection/W0734.feature +4 -0
  36. data/features/message_detection/W0735.feature +4 -0
  37. data/features/message_detection/W0745.feature +132 -0
  38. data/features/message_detection/W0780.feature +68 -0
  39. data/features/message_detection/W0783.feature +95 -0
  40. data/features/message_detection/W0792.feature +124 -0
  41. data/features/message_detection/W0793.feature +153 -0
  42. data/features/message_detection/W0794.feature +90 -0
  43. data/features/message_detection/W0830.feature +65 -0
  44. data/features/message_detection/W0833.feature +220 -0
  45. data/features/message_detection/W0834.feature +189 -0
  46. data/features/message_detection/W1026.feature +105 -0
  47. data/features/message_detection/W1031.feature +17 -34
  48. data/features/message_detection/W1039.feature +268 -0
  49. data/features/message_detection/W1047.feature +163 -0
  50. data/features/message_detection/W1066.feature +1 -0
  51. data/features/message_detection/W1067.feature +1 -0
  52. data/features/message_detection/W1068.feature +1 -0
  53. data/features/message_detection/W1069.feature +5 -0
  54. data/features/message_detection/W1070.feature +5 -0
  55. data/features/message_detection/W1071.feature +83 -0
  56. data/features/message_detection/W1073.feature +3 -2
  57. data/features/message_detection/W9003.feature +7 -12
  58. data/features/step_definitions/message_detection_steps.rb +4 -31
  59. data/features/support/env.rb +117 -2
  60. data/lib/adlint/c/branch.rb +0 -2
  61. data/lib/adlint/c/ctrlexpr.rb +33 -0
  62. data/lib/adlint/c/expr.rb +119 -31
  63. data/lib/adlint/c/interp.rb +44 -3
  64. data/lib/adlint/c/message.rb +1411 -29
  65. data/lib/adlint/c/object.rb +16 -2
  66. data/lib/adlint/c/option.rb +1 -0
  67. data/lib/adlint/c/parser.rb +101 -100
  68. data/lib/adlint/c/parser.y +3 -2
  69. data/lib/adlint/c/phase.rb +18 -0
  70. data/lib/adlint/c/resolver.rb +23 -0
  71. data/lib/adlint/c/syntax.rb +90 -4
  72. data/lib/adlint/c/type.rb +177 -110
  73. data/lib/adlint/cpp/macro.rb +4 -4
  74. data/lib/adlint/version.rb +2 -2
  75. data/share/demo/bad_include/test/"1/".h +0 -0
  76. data/share/doc/developers_guide_ja.html +3 -3
  77. data/share/doc/developers_guide_ja.texi +1 -1
  78. data/share/doc/users_guide_en.html +467 -506
  79. data/share/doc/users_guide_en.texi +95 -125
  80. data/share/doc/users_guide_ja.html +471 -518
  81. data/share/doc/users_guide_ja.texi +95 -133
  82. data/spec/spec_helper.rb +6 -0
  83. metadata +37 -10
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_en.info
3
3
  @documentlanguage en
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.16.0 User's Guide
5
+ @settitle AdLint 1.18.0 User's Guide
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -2791,12 +2791,11 @@ context_line
2791
2791
  * W1035::`%s' declared typedef. It cannot be redeclared inside an inner scope without using explicit type.
2792
2792
  * W1036::`%s' declared typedef. It cannot be redeclared as a member of structure or union without using explicit type.
2793
2793
  * W1037::`%s' which has external coupling is declared more than one, this is incompatible.
2794
- * W1039::`ll' is used in conversion specifier.
2794
+ * W1039::`ll' is used in %sth conversion specifier.
2795
2795
  * W1040::An unrecognizable string is described after preprocessing directive.
2796
2796
  * W1041::`%s' is not official preprocessing directive of ISO C standards.
2797
2797
  * W1042::'sizeof' operator is using in preprocessing directive. This is the language extension.
2798
2798
  * W1043::`@@ address' is not supported ISO C standards. It will be considered as language extension.
2799
- * W1044::An expression which includes the statement is not supported ISO C standards. It will be considered as language extension.
2800
2799
  * W1045::This `@@ word' syntax will be ignored.
2801
2800
  * W1046::A space character is ignored between `\' and line feed.
2802
2801
  * W1047::The struct, union or array's initializer is not literal.
@@ -26214,14 +26213,15 @@ Floating-point number type cast to pointer to object and vice versa.
26214
26213
 
26215
26214
  @subsection Content
26216
26215
 
26217
- @b{This message will be supported in AdLint 2.0.0}
26218
-
26219
26216
  Under construction.
26220
26217
 
26221
26218
  @subsection Sample code
26222
26219
 
26223
26220
  @verbatim
26224
- /* will be added */
26221
+ int *foo(const float f)
26222
+ {
26223
+ return (int *) f; /* W0641 */
26224
+ }
26225
26225
  @end verbatim
26226
26226
 
26227
26227
  @subsection Related message
@@ -26230,7 +26230,7 @@ None.
26230
26230
 
26231
26231
  @subsection Since
26232
26232
 
26233
- 2.0.0 (planned)
26233
+ 1.18.0
26234
26234
 
26235
26235
  @node W0642
26236
26236
  @section W0642
@@ -26311,17 +26311,16 @@ A value in void statement is going to use. 'void' statement doesn't have a value
26311
26311
 
26312
26312
  @subsection Content
26313
26313
 
26314
- @b{This message will be supported in AdLint 2.0.0}
26315
-
26316
26314
  Under construction.
26317
26315
 
26318
26316
  @subsection Sample code
26319
26317
 
26320
26318
  @verbatim
26321
- extern void func(void);
26319
+ extern void foo(void);
26322
26320
 
26323
- if(func() == 0) { /* W0644 */
26324
- ...snip...
26321
+ int bar(void)
26322
+ {
26323
+ return (int) foo(); /* W0644 */
26325
26324
  }
26326
26325
  @end verbatim
26327
26326
 
@@ -26336,7 +26335,7 @@ if(func() == 0) { /* W0644 */
26336
26335
 
26337
26336
  @subsection Since
26338
26337
 
26339
- 2.0.0 (planned)
26338
+ 1.18.0
26340
26339
 
26341
26340
  @node W0645
26342
26341
  @section W0645
@@ -26413,15 +26412,15 @@ A right operand value of shift operand is negative constant value. This result i
26413
26412
 
26414
26413
  @subsection Content
26415
26414
 
26416
- @b{This message will be supported in AdLint 2.0.0}
26417
-
26418
26415
  Under construction.
26419
26416
 
26420
26417
  @subsection Sample code
26421
26418
 
26422
26419
  @verbatim
26423
- short a; /* 16bit */
26424
- a <<= -4; /* W0649 */
26420
+ int foo(int i)
26421
+ {
26422
+ return i << -1; /* W0649 */
26423
+ }
26425
26424
  @end verbatim
26426
26425
 
26427
26426
  @subsection Related message
@@ -26432,7 +26431,7 @@ a <<= -4; /* W0649 */
26432
26431
 
26433
26432
  @subsection Since
26434
26433
 
26435
- 2.0.0 (planned)
26434
+ 1.18.0
26436
26435
 
26437
26436
  @node W0650
26438
26437
  @section W0650
@@ -26444,15 +26443,15 @@ A right operand value of shift operator is much bigger than the bit size represe
26444
26443
 
26445
26444
  @subsection Content
26446
26445
 
26447
- @b{This message will be supported in AdLint 2.0.0}
26448
-
26449
26446
  Under construction.
26450
26447
 
26451
26448
  @subsection Sample code
26452
26449
 
26453
26450
  @verbatim
26454
- char b; /* 8bit */
26455
- a = b << 16; /* W0650 */
26451
+ unsigned int foo(unsigned int i)
26452
+ {
26453
+ return i << 32; /* W0650 */
26454
+ }
26456
26455
  @end verbatim
26457
26456
 
26458
26457
  @subsection Related message
@@ -26463,7 +26462,7 @@ a = b << 16; /* W0650 */
26463
26462
 
26464
26463
  @subsection Since
26465
26464
 
26466
- 2.0.0 (planned)
26465
+ 1.18.0
26467
26466
 
26468
26467
  @node W0653
26469
26468
  @section W0653
@@ -29085,16 +29084,18 @@ An array's index is out of range.
29085
29084
 
29086
29085
  @subsection Content
29087
29086
 
29088
- @b{This message will be supported in AdLint 2.0.0}
29089
-
29090
29087
  Under construction.
29091
29088
 
29092
29089
  @subsection Sample code
29093
29090
 
29094
29091
  @verbatim
29095
- int arr[10];
29092
+ extern int a[5];
29096
29093
 
29097
- arr[15] = 0; /* W0707 */
29094
+ int foo(void)
29095
+ {
29096
+ int i = a[5]; /* W0707 */
29097
+ return i;
29098
+ }
29098
29099
  @end verbatim
29099
29100
 
29100
29101
  @subsection Related message
@@ -29103,7 +29104,7 @@ None.
29103
29104
 
29104
29105
  @subsection Since
29105
29106
 
29106
- 2.0.0 (planned)
29107
+ 1.18.0
29107
29108
 
29108
29109
  @node W0708
29109
29110
  @section W0708
@@ -29412,15 +29413,15 @@ A right operand of shift operator is a constant value of the above bit field of
29412
29413
 
29413
29414
  @subsection Content
29414
29415
 
29415
- @b{This message will be supported in AdLint 2.0.0}
29416
-
29417
29416
  Under construction.
29418
29417
 
29419
29418
  @subsection Sample code
29420
29419
 
29421
29420
  @verbatim
29422
- unsigned char uc;
29423
- unsigned int ui = uc >> 8; /* W0719 */
29421
+ int foo(char c)
29422
+ {
29423
+ return c << 31; /* W0719 */
29424
+ }
29424
29425
  @end verbatim
29425
29426
 
29426
29427
  @subsection Related message
@@ -29429,7 +29430,7 @@ None.
29429
29430
 
29430
29431
  @subsection Since
29431
29432
 
29432
- 2.0.0 (planned)
29433
+ 1.18.0
29433
29434
 
29434
29435
  @node W0720
29435
29436
  @section W0720
@@ -31733,14 +31734,15 @@ Unsigned left shift operator `<<' in constant expression truncate non-zero high-
31733
31734
 
31734
31735
  @subsection Content
31735
31736
 
31736
- @b{This message will be supported in AdLint 2.0.0}
31737
-
31738
31737
  Under construction.
31739
31738
 
31740
31739
  @subsection Sample code
31741
31740
 
31742
31741
  @verbatim
31743
- unsigned int ui = 0x0F000000U << 8; /* W0780 */
31742
+ unsigned int foo(void)
31743
+ {
31744
+ return 0x08000000U << 5; /* W0780 */
31745
+ }
31744
31746
  @end verbatim
31745
31747
 
31746
31748
  @subsection Related message
@@ -31749,7 +31751,7 @@ None.
31749
31751
 
31750
31752
  @subsection Since
31751
31753
 
31752
- 2.0.0 (planned)
31754
+ 1.18.0
31753
31755
 
31754
31756
  @node W0781
31755
31757
  @section W0781
@@ -31811,14 +31813,17 @@ Cast is being made including the pointer point to incomplete type. This program
31811
31813
 
31812
31814
  @subsection Content
31813
31815
 
31814
- @b{This message will be supported in AdLint 2.0.0}
31815
-
31816
31816
  Under construction.
31817
31817
 
31818
31818
  @subsection Sample code
31819
31819
 
31820
31820
  @verbatim
31821
- /* will be added */
31821
+ extern struct Foo *gp;
31822
+
31823
+ void foo(int *p)
31824
+ {
31825
+ gp = (struct Foo *) p; /* W0783 */
31826
+ }
31822
31827
  @end verbatim
31823
31828
 
31824
31829
  @subsection Related message
@@ -31827,7 +31832,7 @@ None.
31827
31832
 
31828
31833
  @subsection Since
31829
31834
 
31830
- 2.0.0 (planned)
31835
+ 1.18.0
31831
31836
 
31832
31837
  @node W0784
31833
31838
  @section W0784
@@ -32123,14 +32128,15 @@ A floating point type object cast to function pointer and vice versa.
32123
32128
 
32124
32129
  @subsection Content
32125
32130
 
32126
- @b{This message will be supported in AdLint 2.0.0}
32127
-
32128
32131
  Under construction.
32129
32132
 
32130
32133
  @subsection Sample code
32131
32134
 
32132
32135
  @verbatim
32133
- /* will be added */
32136
+ int (*foo(const float f))(void)
32137
+ {
32138
+ return (int (*)(void)) f; /* W0792 */
32139
+ }
32134
32140
  @end verbatim
32135
32141
 
32136
32142
  @subsection Related message
@@ -32139,7 +32145,7 @@ None.
32139
32145
 
32140
32146
  @subsection Since
32141
32147
 
32142
- 2.0.0 (planned)
32148
+ 1.18.0
32143
32149
 
32144
32150
  @node W0793
32145
32151
  @section W0793
@@ -32151,14 +32157,17 @@ A function pointer cast to pointer to point an object and vice versa.
32151
32157
 
32152
32158
  @subsection Content
32153
32159
 
32154
- @b{This message will be supported in AdLint 2.0.0}
32155
-
32156
32160
  Under construction.
32157
32161
 
32158
32162
  @subsection Sample code
32159
32163
 
32160
32164
  @verbatim
32161
- /* will be added */
32165
+ typedef int (*funptr_t)(void);
32166
+
32167
+ funptr_t foo(float *p)
32168
+ {
32169
+ return (funptr_t) p; /* W0793 */
32170
+ }
32162
32171
  @end verbatim
32163
32172
 
32164
32173
  @subsection Related message
@@ -32167,7 +32176,7 @@ None.
32167
32176
 
32168
32177
  @subsection Since
32169
32178
 
32170
- 2.0.0 (planned)
32179
+ 1.18.0
32171
32180
 
32172
32181
  @node W0794
32173
32182
  @section W0794
@@ -32179,15 +32188,15 @@ Left shift operation to signed operand.
32179
32188
 
32180
32189
  @subsection Content
32181
32190
 
32182
- @b{This message will be supported in AdLint 2.0.0}
32183
-
32184
32191
  Under construction.
32185
32192
 
32186
32193
  @subsection Sample code
32187
32194
 
32188
32195
  @verbatim
32189
- int a = 0x40000000;
32190
- a <<= 3; /* W0794 */
32196
+ int func(int i)
32197
+ {
32198
+ return i << 1; /* W0794 */
32199
+ }
32191
32200
  @end verbatim
32192
32201
 
32193
32202
  @subsection Related message
@@ -32196,7 +32205,7 @@ None.
32196
32205
 
32197
32206
  @subsection Since
32198
32207
 
32199
- 2.0.0 (planned)
32208
+ 1.18.0
32200
32209
 
32201
32210
  @node W0795
32202
32211
  @section W0795
@@ -32827,18 +32836,12 @@ There is comma `,' at the end of the enumerator list.
32827
32836
 
32828
32837
  @subsection Content
32829
32838
 
32830
- @b{This message will be supported in AdLint 2.0.0}
32831
-
32832
32839
  Under construction.
32833
32840
 
32834
32841
  @subsection Sample code
32835
32842
 
32836
32843
  @verbatim
32837
- enum COLOR {
32838
- RED,
32839
- BLUE,
32840
- GREEN, /* W0830 */
32841
- };
32844
+ enum Color { Red, Green, Blue, }; /* W0830 */
32842
32845
  @end verbatim
32843
32846
 
32844
32847
  @subsection Related message
@@ -32847,7 +32850,7 @@ None.
32847
32850
 
32848
32851
  @subsection Since
32849
32852
 
32850
- 2.0.0 (planned)
32853
+ 1.18.0
32851
32854
 
32852
32855
  @node W0831
32853
32856
  @section W0831
@@ -32936,14 +32939,12 @@ A suffix 'LL' is using.
32936
32939
 
32937
32940
  @subsection Content
32938
32941
 
32939
- @b{This message will be supported in AdLint 2.0.0}
32940
-
32941
32942
  Under construction.
32942
32943
 
32943
32944
  @subsection Sample code
32944
32945
 
32945
32946
  @verbatim
32946
- long long int a = 0LL; /* W0833 */
32947
+ long long ll = 123LL; /* W0833 */
32947
32948
  @end verbatim
32948
32949
 
32949
32950
  @subsection Related message
@@ -32954,7 +32955,7 @@ long long int a = 0LL; /* W0833 */
32954
32955
 
32955
32956
  @subsection Since
32956
32957
 
32957
- 2.0.0 (planned)
32958
+ 1.18.0
32958
32959
 
32959
32960
  @node W0834
32960
32961
  @section W0834
@@ -32966,14 +32967,12 @@ A long long type is using.
32966
32967
 
32967
32968
  @subsection Content
32968
32969
 
32969
- @b{This message will be supported in AdLint 2.0.0}
32970
-
32971
32970
  Under construction.
32972
32971
 
32973
32972
  @subsection Sample code
32974
32973
 
32975
32974
  @verbatim
32976
- long long a = 0; /* W0834 */
32975
+ extern long long ll; /* W0834 */
32977
32976
  @end verbatim
32978
32977
 
32979
32978
  @subsection Related message
@@ -32984,7 +32983,7 @@ long long a = 0; /* W0834 */
32984
32983
 
32985
32984
  @subsection Since
32986
32985
 
32987
- 2.0.0 (planned)
32986
+ 1.18.0
32988
32987
 
32989
32988
  @node W0835
32990
32989
  @section W0835
@@ -33148,14 +33147,18 @@ int a[10]; /* W0950 */
33148
33147
 
33149
33148
  @subsection Content
33150
33149
 
33151
- @b{This message will be supported in AdLint 2.0.0}
33152
-
33153
33150
  Under construction.
33154
33151
 
33155
33152
  @subsection Sample code
33156
33153
 
33157
33154
  @verbatim
33158
- /* will be added */
33155
+ extern struct st s;
33156
+ extern void foo(struct st);
33157
+
33158
+ void bar(void)
33159
+ {
33160
+ foo(s); /* W1026 */
33161
+ }
33159
33162
  @end verbatim
33160
33163
 
33161
33164
  @subsection Related message
@@ -33164,7 +33167,7 @@ None.
33164
33167
 
33165
33168
  @subsection Since
33166
33169
 
33167
- 2.0.0 (planned)
33170
+ 1.18.0
33168
33171
 
33169
33172
  @node W1027
33170
33173
  @section W1027
@@ -33523,18 +33526,21 @@ None.
33523
33526
 
33524
33527
  @subsection Message body
33525
33528
 
33526
- `ll' is used in conversion specifier.
33529
+ `ll' is used in %sth conversion specifier.
33527
33530
 
33528
33531
  @subsection Content
33529
33532
 
33530
- @b{This message will be supported in AdLint 2.0.0}
33531
-
33532
33533
  Under construction.
33533
33534
 
33534
33535
  @subsection Sample code
33535
33536
 
33536
33537
  @verbatim
33537
- /* will be added */
33538
+ extern int printf(const char *, ...);
33539
+
33540
+ void foo(long long ll)
33541
+ {
33542
+ printf("%lld", ll); /* W1039 */
33543
+ }
33538
33544
  @end verbatim
33539
33545
 
33540
33546
  @subsection Related message
@@ -33543,7 +33549,7 @@ None.
33543
33549
 
33544
33550
  @subsection Since
33545
33551
 
33546
- 2.0.0 (planned)
33552
+ 1.18.0
33547
33553
 
33548
33554
  @node W1040
33549
33555
  @section W1040
@@ -33667,7 +33673,6 @@ Under construction.
33667
33673
  @subsection Related message
33668
33674
 
33669
33675
  @itemize
33670
- @item @ref{W1044} An expression which includes the statement is not supported ISO C standards. It will be considered as language extension.
33671
33676
  @item @ref{W1045} This `@@ word' syntax will be ignored.
33672
33677
  @end itemize
33673
33678
 
@@ -33675,37 +33680,6 @@ Under construction.
33675
33680
 
33676
33681
  After 2.0.0 (planned)
33677
33682
 
33678
- @node W1044
33679
- @section W1044
33680
- @cindex W1044
33681
-
33682
- @subsection Message body
33683
-
33684
- An expression which includes the statement is not supported ISO C standards. It will be considered as language extension.
33685
-
33686
- @subsection Content
33687
-
33688
- @b{This message will be supported in AdLint 2.0.0}
33689
-
33690
- Under construction.
33691
-
33692
- @subsection Sample code
33693
-
33694
- @verbatim
33695
- /* will be added */
33696
- @end verbatim
33697
-
33698
- @subsection Related message
33699
-
33700
- @itemize
33701
- @item @ref{W1043} `@@ address' is not supported ISO C standards. It will be considered as language extension.
33702
- @item @ref{W1045} This `@@ word' syntax will be ignored.
33703
- @end itemize
33704
-
33705
- @subsection Since
33706
-
33707
- 2.0.0 (planned)
33708
-
33709
33683
  @node W1045
33710
33684
  @section W1045
33711
33685
  @cindex W1045
@@ -33730,7 +33704,6 @@ Under construction.
33730
33704
 
33731
33705
  @itemize
33732
33706
  @item @ref{W1043} `@@ address' is not supported ISO C standards. It will be considered as language extension.
33733
- @item @ref{W1044} An expression which includes the statement is not supported ISO C standards. It will be considered as language extension.
33734
33707
  @end itemize
33735
33708
 
33736
33709
  @subsection Since
@@ -33776,14 +33749,16 @@ The struct, union or array's initializer is not literal.
33776
33749
 
33777
33750
  @subsection Content
33778
33751
 
33779
- @b{This message will be supported in AdLint 2.0.0}
33780
-
33781
33752
  Under construction.
33782
33753
 
33783
33754
  @subsection Sample code
33784
33755
 
33785
33756
  @verbatim
33786
- /* will be added */
33757
+ int foo(int i, int j)
33758
+ {
33759
+ int a[] = { 0, i, j }; /* W1047 */
33760
+ return a[1];
33761
+ }
33787
33762
  @end verbatim
33788
33763
 
33789
33764
  @subsection Related message
@@ -33792,7 +33767,7 @@ None.
33792
33767
 
33793
33768
  @subsection Since
33794
33769
 
33795
- 2.0.0 (planned)
33770
+ 1.18.0
33796
33771
 
33797
33772
  @node W1048
33798
33773
  @section W1048
@@ -34761,20 +34736,15 @@ Function `%s' has multiple termination points.
34761
34736
 
34762
34737
  @subsection Content
34763
34738
 
34764
- @b{This message will be supported in AdLint 2.0.0}
34765
-
34766
34739
  Under construction.
34767
34740
 
34768
34741
  @subsection Sample code
34769
34742
 
34770
34743
  @verbatim
34771
- int func(int a)
34744
+ void foo(int i) /* W1071 */
34772
34745
  {
34773
- if( a == 0 ) {
34774
- return 0;
34775
- }
34776
- else {
34777
- return 1; /* W1071 */
34746
+ if (i == 0) {
34747
+ return;
34778
34748
  }
34779
34749
  }
34780
34750
  @end verbatim
@@ -34785,7 +34755,7 @@ None.
34785
34755
 
34786
34756
  @subsection Since
34787
34757
 
34788
- 2.0.0 (planned)
34758
+ 1.18.0
34789
34759
 
34790
34760
  @node W1072
34791
34761
  @section W1072