adlint 3.2.0 → 3.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (371) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS +1 -2
  3. data/ChangeLog +196 -5236
  4. data/INSTALL +1 -1
  5. data/MANIFEST +4 -2
  6. data/NEWS +30 -13
  7. data/README +2 -2
  8. data/Rakefile +2 -2
  9. data/TODO +1 -1
  10. data/bin/adlint +2 -2
  11. data/bin/adlint_chk +2 -2
  12. data/bin/adlint_cma +2 -2
  13. data/bin/adlint_sma +2 -2
  14. data/bin/adlintize +2 -2
  15. data/etc/conf.d/fallback/cinit.erb +1 -1
  16. data/etc/conf.d/fallback/traits.erb +1 -1
  17. data/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb +1 -1
  18. data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +1 -1
  19. data/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb +1 -1
  20. data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +1 -1
  21. data/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb +1 -1
  22. data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +1 -1
  23. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
  24. data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +1 -1
  25. data/etc/conf.d/noarch/GNUmakefile.erb +1 -1
  26. data/etc/conf.d/noarch/adlint_all_bat.erb +1 -1
  27. data/etc/conf.d/noarch/adlint_all_sh.erb +1 -1
  28. data/etc/conf.d/noarch/pinit.erb +1 -1
  29. data/etc/conf.d/x86_64-centos_6.4/cinit-gcc_4.4.7.erb +150 -0
  30. data/etc/conf.d/x86_64-centos_6.4/traits-gcc_4.4.7.erb +290 -0
  31. data/etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb +1 -1
  32. data/etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb +1 -1
  33. data/etc/mesg.d/c_builtin/en_US/messages.yml +2 -2
  34. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +3 -3
  35. data/etc/mesg.d/core/en_US/messages.yml +6 -2
  36. data/etc/mesg.d/core/ja_JP/messages.yml +6 -2
  37. data/features/code_check/E0008.feature +122 -0
  38. data/features/code_check/E0016.feature +49 -0
  39. data/features/code_check/E0018.feature +99 -0
  40. data/features/code_check/W0460.feature +8 -8
  41. data/lib/adlint.rb +2 -2
  42. data/lib/adlint/analyzer.rb +2 -2
  43. data/lib/adlint/annot.rb +2 -2
  44. data/lib/adlint/cc1.rb +2 -2
  45. data/lib/adlint/cc1/branch.rb +2 -2
  46. data/lib/adlint/cc1/builtin.rb +2 -2
  47. data/lib/adlint/cc1/const.rb +2 -2
  48. data/lib/adlint/cc1/conv.rb +2 -2
  49. data/lib/adlint/cc1/ctrlexpr.rb +2 -2
  50. data/lib/adlint/cc1/domain.rb +2 -2
  51. data/lib/adlint/cc1/enum.rb +2 -2
  52. data/lib/adlint/cc1/environ.rb +2 -2
  53. data/lib/adlint/cc1/expr.rb +110 -48
  54. data/lib/adlint/cc1/format.rb +2 -2
  55. data/lib/adlint/cc1/interp.rb +46 -12
  56. data/lib/adlint/cc1/lexer.rb +44 -11
  57. data/lib/adlint/cc1/mediator.rb +16 -2
  58. data/lib/adlint/cc1/object.rb +2 -2
  59. data/lib/adlint/cc1/operator.rb +2 -2
  60. data/lib/adlint/cc1/option.rb +3 -3
  61. data/lib/adlint/cc1/parser.rb +1011 -999
  62. data/lib/adlint/cc1/parser.y +20 -11
  63. data/lib/adlint/cc1/phase.rb +2 -2
  64. data/lib/adlint/cc1/resolver.rb +2 -2
  65. data/lib/adlint/cc1/scanner.rb +2 -2
  66. data/lib/adlint/cc1/scope.rb +2 -2
  67. data/lib/adlint/cc1/seqp.rb +2 -2
  68. data/lib/adlint/cc1/syntax.rb +42 -10
  69. data/lib/adlint/cc1/trace.rb +2 -2
  70. data/lib/adlint/cc1/type.rb +72 -2
  71. data/lib/adlint/cc1/util.rb +2 -2
  72. data/lib/adlint/cc1/value.rb +9 -3
  73. data/lib/adlint/code.rb +2 -2
  74. data/lib/adlint/cpp.rb +2 -2
  75. data/lib/adlint/cpp/asm.rb +2 -2
  76. data/lib/adlint/cpp/constexpr.rb +1 -1
  77. data/lib/adlint/cpp/constexpr.y +2 -2
  78. data/lib/adlint/cpp/eval.rb +2 -2
  79. data/lib/adlint/cpp/lexer.rb +13 -3
  80. data/lib/adlint/cpp/macro.rb +2 -2
  81. data/lib/adlint/cpp/phase.rb +2 -2
  82. data/lib/adlint/cpp/scanner.rb +2 -2
  83. data/lib/adlint/cpp/source.rb +2 -2
  84. data/lib/adlint/cpp/subst.rb +6 -2
  85. data/lib/adlint/cpp/syntax.rb +2 -2
  86. data/lib/adlint/cpp/util.rb +2 -2
  87. data/lib/adlint/driver.rb +2 -2
  88. data/lib/adlint/error.rb +2 -2
  89. data/lib/adlint/exam.rb +20 -8
  90. data/lib/adlint/exam/c_builtin.rb +4 -6
  91. data/lib/adlint/exam/c_builtin/cc1_check.rb +1380 -461
  92. data/lib/adlint/exam/c_builtin/cc1_code.rb +25 -25
  93. data/lib/adlint/exam/c_builtin/cc1_metric.rb +180 -209
  94. data/lib/adlint/exam/c_builtin/cpp_check.rb +211 -50
  95. data/lib/adlint/exam/c_builtin/cpp_code.rb +19 -19
  96. data/lib/adlint/exam/c_builtin/ld_check.rb +2 -2
  97. data/lib/adlint/exam/c_builtin/ld_metric.rb +2 -2
  98. data/lib/adlint/lang.rb +2 -2
  99. data/lib/adlint/ld.rb +2 -2
  100. data/lib/adlint/ld/object.rb +3 -3
  101. data/lib/adlint/ld/phase.rb +2 -2
  102. data/lib/adlint/ld/typedef.rb +2 -2
  103. data/lib/adlint/ld/util.rb +2 -2
  104. data/lib/adlint/lexer.rb +2 -2
  105. data/lib/adlint/location.rb +2 -2
  106. data/lib/adlint/memo.rb +2 -2
  107. data/lib/adlint/message.rb +2 -2
  108. data/lib/adlint/metric.rb +2 -2
  109. data/lib/adlint/monitor.rb +2 -2
  110. data/lib/adlint/phase.rb +2 -2
  111. data/lib/adlint/prelude.rb +2 -2
  112. data/lib/adlint/report.rb +4 -4
  113. data/lib/adlint/source.rb +2 -2
  114. data/lib/adlint/supp.rb +2 -2
  115. data/lib/adlint/symbol.rb +2 -2
  116. data/lib/adlint/token.rb +2 -2
  117. data/lib/adlint/traits.rb +2 -2
  118. data/lib/adlint/util.rb +2 -2
  119. data/lib/adlint/version.rb +6 -6
  120. data/share/HEADER +2 -2
  121. data/share/doc/developers_guide_ja.html +20 -9
  122. data/share/doc/developers_guide_ja.texi +18 -7
  123. data/share/doc/samples/GNUmakefile +1 -1
  124. data/share/doc/samples/adlint_traits.yml +1 -1
  125. data/share/doc/users_guide_en.html +6177 -6138
  126. data/share/doc/users_guide_en.texi +35 -5
  127. data/share/doc/users_guide_ja.html +6192 -6153
  128. data/share/doc/users_guide_ja.texi +35 -5
  129. data/share/sample/bison-2.5/adlint/GNUmakefile +1 -1
  130. data/share/sample/bison-2.5/adlint/adlint_traits.yml +1 -1
  131. data/share/sample/bison-2.5/adlint/lib/GNUmakefile +1 -1
  132. data/share/sample/bison-2.5/adlint/lib/adlint_cinit.h +1 -1
  133. data/share/sample/bison-2.5/adlint/lib/adlint_pinit.h +1 -1
  134. data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +1 -1
  135. data/share/sample/bison-2.5/adlint/src/GNUmakefile +1 -1
  136. data/share/sample/bison-2.5/adlint/src/adlint_cinit.h +1 -1
  137. data/share/sample/bison-2.5/adlint/src/adlint_pinit.h +1 -1
  138. data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +1 -1
  139. data/share/sample/ctags-5.8/adlint/GNUmakefile +1 -1
  140. data/share/sample/ctags-5.8/adlint/adlint_cinit.h +1 -1
  141. data/share/sample/ctags-5.8/adlint/adlint_pinit.h +1 -1
  142. data/share/sample/ctags-5.8/adlint/adlint_traits.yml +1 -1
  143. data/share/sample/flex-2.5.35/adlint/GNUmakefile +1 -1
  144. data/share/sample/flex-2.5.35/adlint/adlint_cinit.h +1 -1
  145. data/share/sample/flex-2.5.35/adlint/adlint_pinit.h +1 -1
  146. data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +1 -1
  147. data/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile +1 -1
  148. data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +1 -1
  149. data/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile +1 -1
  150. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h +1 -1
  151. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h +1 -1
  152. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +1 -1
  153. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile +1 -1
  154. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h +1 -1
  155. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h +1 -1
  156. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +1 -1
  157. data/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile +1 -1
  158. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h +1 -1
  159. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h +1 -1
  160. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +1 -1
  161. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile +1 -1
  162. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h +1 -1
  163. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h +1 -1
  164. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +1 -1
  165. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile +1 -1
  166. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h +1 -1
  167. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h +1 -1
  168. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +1 -1
  169. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile +1 -1
  170. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h +1 -1
  171. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h +1 -1
  172. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +1 -1
  173. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile +1 -1
  174. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h +1 -1
  175. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h +1 -1
  176. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +1 -1
  177. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile +1 -1
  178. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h +1 -1
  179. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h +1 -1
  180. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +1 -1
  181. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile +1 -1
  182. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h +1 -1
  183. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h +1 -1
  184. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +1 -1
  185. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile +1 -1
  186. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h +1 -1
  187. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h +1 -1
  188. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +1 -1
  189. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile +1 -1
  190. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h +1 -1
  191. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h +1 -1
  192. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +1 -1
  193. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile +1 -1
  194. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h +1 -1
  195. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h +1 -1
  196. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +1 -1
  197. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile +1 -1
  198. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h +1 -1
  199. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h +1 -1
  200. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +1 -1
  201. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile +1 -1
  202. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h +1 -1
  203. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h +1 -1
  204. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +1 -1
  205. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile +1 -1
  206. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h +1 -1
  207. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h +1 -1
  208. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +1 -1
  209. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile +1 -1
  210. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h +1 -1
  211. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h +1 -1
  212. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +1 -1
  213. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile +1 -1
  214. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h +1 -1
  215. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h +1 -1
  216. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +1 -1
  217. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile +1 -1
  218. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h +1 -1
  219. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h +1 -1
  220. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +1 -1
  221. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile +1 -1
  222. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h +1 -1
  223. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h +1 -1
  224. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +1 -1
  225. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile +1 -1
  226. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h +1 -1
  227. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h +1 -1
  228. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +1 -1
  229. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile +1 -1
  230. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h +1 -1
  231. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h +1 -1
  232. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +1 -1
  233. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile +1 -1
  234. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h +1 -1
  235. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h +1 -1
  236. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +1 -1
  237. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile +1 -1
  238. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h +1 -1
  239. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h +1 -1
  240. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +1 -1
  241. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile +1 -1
  242. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h +1 -1
  243. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h +1 -1
  244. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +1 -1
  245. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile +1 -1
  246. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h +1 -1
  247. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h +1 -1
  248. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +1 -1
  249. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile +1 -1
  250. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h +1 -1
  251. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h +1 -1
  252. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +1 -1
  253. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile +1 -1
  254. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h +1 -1
  255. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h +1 -1
  256. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +1 -1
  257. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile +1 -1
  258. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h +1 -1
  259. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h +1 -1
  260. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +1 -1
  261. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile +1 -1
  262. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h +1 -1
  263. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h +1 -1
  264. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +1 -1
  265. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile +1 -1
  266. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h +1 -1
  267. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h +1 -1
  268. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +1 -1
  269. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile +1 -1
  270. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h +1 -1
  271. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h +1 -1
  272. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +1 -1
  273. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile +1 -1
  274. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h +1 -1
  275. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h +1 -1
  276. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +1 -1
  277. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile +1 -1
  278. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h +1 -1
  279. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h +1 -1
  280. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +1 -1
  281. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile +1 -1
  282. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h +1 -1
  283. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h +1 -1
  284. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +1 -1
  285. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile +1 -1
  286. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h +1 -1
  287. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h +1 -1
  288. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +1 -1
  289. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile +1 -1
  290. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h +1 -1
  291. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h +1 -1
  292. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +1 -1
  293. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile +1 -1
  294. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h +1 -1
  295. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h +1 -1
  296. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +1 -1
  297. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile +1 -1
  298. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h +1 -1
  299. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h +1 -1
  300. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +1 -1
  301. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile +1 -1
  302. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h +1 -1
  303. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h +1 -1
  304. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +1 -1
  305. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile +1 -1
  306. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h +1 -1
  307. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h +1 -1
  308. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +1 -1
  309. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile +1 -1
  310. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h +1 -1
  311. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h +1 -1
  312. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +1 -1
  313. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile +1 -1
  314. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h +1 -1
  315. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h +1 -1
  316. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +1 -1
  317. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile +1 -1
  318. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h +1 -1
  319. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h +1 -1
  320. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +1 -1
  321. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile +1 -1
  322. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h +1 -1
  323. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h +1 -1
  324. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +1 -1
  325. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile +1 -1
  326. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h +1 -1
  327. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h +1 -1
  328. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +1 -1
  329. data/share/sample/screen-4.0.3/adlint/GNUmakefile +1 -1
  330. data/share/sample/screen-4.0.3/adlint/adlint_cinit.h +1 -1
  331. data/share/sample/screen-4.0.3/adlint/adlint_pinit.h +1 -1
  332. data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +1 -1
  333. data/share/sample/vim-7.3/adlint/vim/GNUmakefile +1 -1
  334. data/share/sample/vim-7.3/adlint/vim/adlint_cinit.h +1 -1
  335. data/share/sample/vim-7.3/adlint/vim/adlint_pinit.h +1 -1
  336. data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +1 -1
  337. data/share/sample/vim-7.3/adlint/xxd/GNUmakefile +1 -1
  338. data/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h +1 -1
  339. data/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h +1 -1
  340. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +1 -1
  341. data/share/sample/zsh-4.3.15/adlint/GNUmakefile +1 -1
  342. data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +1 -1
  343. data/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile +1 -1
  344. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h +1 -1
  345. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h +1 -1
  346. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +1 -1
  347. data/share/sample/zsh-4.3.15/adlint/core/GNUmakefile +1 -1
  348. data/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h +1 -1
  349. data/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h +1 -1
  350. data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +1 -1
  351. data/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile +1 -1
  352. data/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h +1 -1
  353. data/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h +1 -1
  354. data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +1 -1
  355. data/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile +1 -1
  356. data/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h +1 -1
  357. data/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h +1 -1
  358. data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +1 -1
  359. data/spec/adlint/cc1/ctrlexpr_spec.rb +3 -3
  360. data/spec/adlint/cc1/domain_spec.rb +2 -2
  361. data/spec/adlint/cc1/operator_spec.rb +2 -2
  362. data/spec/adlint/cc1/syntax_spec.rb +4 -4
  363. data/spec/adlint/cc1/type_spec.rb +2 -2
  364. data/spec/adlint/location_spec.rb +2 -2
  365. data/spec/conf.d/default_traits.yml +1 -1
  366. data/spec/conf.d/empty_cinit.h +1 -1
  367. data/spec/conf.d/empty_pinit.h +1 -1
  368. data/spec/spec_helper.rb +2 -2
  369. metadata +29 -28
  370. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +0 -963
  371. data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +0 -204
@@ -1,7 +1,7 @@
1
1
  # Code checkings (cpp-phase) of adlint-exam-c_builtin package.
2
2
  #
3
3
  # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
- # Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
4
+ # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
5
5
  # License:: GPLv3+: GNU General Public License version 3 or later
6
6
  #
7
7
  # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
@@ -11,7 +11,7 @@
11
11
  # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
12
  # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
13
  # / __ |/ /_/ / /___/ / /| / / /
14
- # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
15
15
  #
16
16
  # This file is part of AdLint.
17
17
  #
@@ -48,9 +48,9 @@ module CBuiltin #:nodoc:
48
48
 
49
49
  def initialize(phase_ctxt)
50
50
  super
51
- traversal = phase_ctxt[:cpp_ast_traversal]
52
- traversal.enter_grouped_expression += T(:enter_grouped_expression)
53
- traversal.leave_grouped_expression += T(:leave_grouped_expression)
51
+ trav = phase_ctxt[:cpp_ast_traversal]
52
+ trav.enter_grouped_expression += T(:enter_grouped_expression)
53
+ trav.leave_grouped_expression += T(:leave_grouped_expression)
54
54
  @group_depth = 0
55
55
  end
56
56
 
@@ -155,9 +155,9 @@ module CBuiltin #:nodoc:
155
155
 
156
156
  def initialize(phase_ctxt)
157
157
  super
158
- traversal = phase_ctxt[:cpp_ast_traversal]
159
- traversal.enter_if_section += T(:enter_if_section)
160
- traversal.leave_if_section += T(:leave_if_section)
158
+ trav = phase_ctxt[:cpp_ast_traversal]
159
+ trav.enter_if_section += T(:enter_if_section)
160
+ trav.leave_if_section += T(:leave_if_section)
161
161
  @if_depth = 0
162
162
  end
163
163
 
@@ -355,9 +355,9 @@ module CBuiltin #:nodoc:
355
355
 
356
356
  def initialize(phase_ctxt)
357
357
  super
358
- traversal = phase_ctxt[:cpp_ast_traversal]
359
- traversal.enter_user_include_line += T(:check_user_include_line)
360
- traversal.enter_system_include_line += T(:check_system_include_line)
358
+ trav = phase_ctxt[:cpp_ast_traversal]
359
+ trav.enter_user_include_line += T(:check_user_include_line)
360
+ trav.enter_system_include_line += T(:check_system_include_line)
361
361
  end
362
362
 
363
363
  private
@@ -383,11 +383,11 @@ module CBuiltin #:nodoc:
383
383
 
384
384
  def initialize(phase_ctxt)
385
385
  super
386
- traversal = phase_ctxt[:cpp_ast_traversal]
387
- traversal.enter_user_include_line += T(:enter_include_line)
388
- traversal.enter_system_include_line += T(:enter_include_line)
389
- traversal.enter_text_line += T(:enter_text_line)
390
- traversal.enter_if_section += T(:enter_if_section)
386
+ trav = phase_ctxt[:cpp_ast_traversal]
387
+ trav.enter_user_include_line += T(:enter_include_line)
388
+ trav.enter_system_include_line += T(:enter_include_line)
389
+ trav.enter_text_line += T(:enter_text_line)
390
+ trav.enter_if_section += T(:enter_if_section)
391
391
  @main_fpath = phase_ctxt[:sources].first.fpath
392
392
  @last_fpath = nil
393
393
  @enclosed_by_if_section = false
@@ -496,9 +496,9 @@ module CBuiltin #:nodoc:
496
496
 
497
497
  def initialize(phase_ctxt)
498
498
  super
499
- traversal = phase_ctxt[:cpp_ast_traversal]
500
- traversal.enter_function_like_define_line += T(:check)
501
- traversal.enter_va_function_like_define_line += T(:check)
499
+ trav = phase_ctxt[:cpp_ast_traversal]
500
+ trav.enter_function_like_define_line += T(:check)
501
+ trav.enter_va_function_like_define_line += T(:check)
502
502
  end
503
503
 
504
504
  private
@@ -663,10 +663,10 @@ module CBuiltin #:nodoc:
663
663
 
664
664
  def initialize(phase_ctxt)
665
665
  super
666
- traversal = phase_ctxt[:cpp_ast_traversal]
667
- traversal.enter_object_like_define_line += T(:check)
668
- traversal.enter_function_like_define_line += T(:check)
669
- traversal.enter_va_function_like_define_line += T(:check)
666
+ trav = phase_ctxt[:cpp_ast_traversal]
667
+ trav.enter_object_like_define_line += T(:check)
668
+ trav.enter_function_like_define_line += T(:check)
669
+ trav.enter_va_function_like_define_line += T(:check)
670
670
  end
671
671
 
672
672
  private
@@ -693,8 +693,8 @@ module CBuiltin #:nodoc:
693
693
 
694
694
  def initialize(phase_ctxt)
695
695
  super
696
- traversal = phase_ctxt[:cpp_ast_traversal]
697
- traversal.enter_object_like_define_line += T(:check)
696
+ trav = phase_ctxt[:cpp_ast_traversal]
697
+ trav.enter_object_like_define_line += T(:check)
698
698
  end
699
699
 
700
700
  private
@@ -716,10 +716,10 @@ module CBuiltin #:nodoc:
716
716
 
717
717
  def initialize(phase_ctxt)
718
718
  super
719
- traversal = phase_ctxt[:cpp_ast_traversal]
720
- traversal.enter_object_like_define_line += T(:check)
721
- traversal.enter_function_like_define_line += T(:check)
722
- traversal.enter_va_function_like_define_line += T(:check)
719
+ trav = phase_ctxt[:cpp_ast_traversal]
720
+ trav.enter_object_like_define_line += T(:check)
721
+ trav.enter_function_like_define_line += T(:check)
722
+ trav.enter_va_function_like_define_line += T(:check)
723
723
  end
724
724
 
725
725
  private
@@ -741,10 +741,10 @@ module CBuiltin #:nodoc:
741
741
 
742
742
  def initialize(phase_ctxt)
743
743
  super
744
- traversal = phase_ctxt[:cpp_ast_traversal]
745
- traversal.enter_object_like_define_line += T(:check)
746
- traversal.enter_function_like_define_line += T(:check)
747
- traversal.enter_va_function_like_define_line += T(:check)
744
+ trav = phase_ctxt[:cpp_ast_traversal]
745
+ trav.enter_object_like_define_line += T(:check)
746
+ trav.enter_function_like_define_line += T(:check)
747
+ trav.enter_va_function_like_define_line += T(:check)
748
748
  end
749
749
 
750
750
  private
@@ -764,8 +764,8 @@ module CBuiltin #:nodoc:
764
764
 
765
765
  def initialize(phase_ctxt)
766
766
  super
767
- traversal = phase_ctxt[:cpp_ast_traversal]
768
- traversal.enter_object_like_define_line += T(:check)
767
+ trav = phase_ctxt[:cpp_ast_traversal]
768
+ trav.enter_object_like_define_line += T(:check)
769
769
  end
770
770
 
771
771
  private
@@ -801,8 +801,8 @@ module CBuiltin #:nodoc:
801
801
 
802
802
  def initialize(phase_ctxt)
803
803
  super
804
- traversal = phase_ctxt[:cpp_ast_traversal]
805
- traversal.enter_object_like_define_line += T(:check)
804
+ trav = phase_ctxt[:cpp_ast_traversal]
805
+ trav.enter_object_like_define_line += T(:check)
806
806
  end
807
807
 
808
808
  private
@@ -1066,9 +1066,9 @@ module CBuiltin #:nodoc:
1066
1066
 
1067
1067
  def initialize(phase_ctxt)
1068
1068
  super
1069
- traversal = phase_ctxt[:cpp_ast_traversal]
1070
- traversal.enter_system_include_line += T(:check)
1071
- traversal.enter_system_include_next_line += T(:check)
1069
+ trav = phase_ctxt[:cpp_ast_traversal]
1070
+ trav.enter_system_include_line += T(:check)
1071
+ trav.enter_system_include_next_line += T(:check)
1072
1072
  end
1073
1073
 
1074
1074
  private
@@ -1088,9 +1088,9 @@ module CBuiltin #:nodoc:
1088
1088
 
1089
1089
  def initialize(phase_ctxt)
1090
1090
  super
1091
- traversal = phase_ctxt[:cpp_ast_traversal]
1092
- traversal.enter_user_include_line += T(:check)
1093
- traversal.enter_user_include_next_line += T(:check)
1091
+ trav = phase_ctxt[:cpp_ast_traversal]
1092
+ trav.enter_user_include_line += T(:check)
1093
+ trav.enter_user_include_next_line += T(:check)
1094
1094
  end
1095
1095
 
1096
1096
  private
@@ -1110,11 +1110,11 @@ module CBuiltin #:nodoc:
1110
1110
 
1111
1111
  def initialize(phase_ctxt)
1112
1112
  super
1113
- traversal = phase_ctxt[:cpp_ast_traversal]
1114
- traversal.enter_user_include_line += T(:check)
1115
- traversal.enter_user_include_next_line += T(:check)
1116
- traversal.enter_system_include_line += T(:check)
1117
- traversal.enter_system_include_next_line += T(:check)
1113
+ trav = phase_ctxt[:cpp_ast_traversal]
1114
+ trav.enter_user_include_line += T(:check)
1115
+ trav.enter_user_include_next_line += T(:check)
1116
+ trav.enter_system_include_line += T(:check)
1117
+ trav.enter_system_include_next_line += T(:check)
1118
1118
  end
1119
1119
 
1120
1120
  private
@@ -1144,6 +1144,94 @@ module CBuiltin #:nodoc:
1144
1144
  end
1145
1145
  end
1146
1146
 
1147
+ class W0687 < PassiveCodeCheck
1148
+ def_registrant_phase Cpp::Prepare2Phase
1149
+
1150
+ # NOTE: W0687 may be duplicative when the same header which causes this
1151
+ # warning is included twice or more.
1152
+ mark_as_unique
1153
+
1154
+ def initialize(phase_ctxt)
1155
+ super
1156
+ interp = phase_ctxt[:cpp_interpreter]
1157
+ interp.on_macro_undefined += T(:check)
1158
+ end
1159
+
1160
+ private
1161
+ def check(undef_line, *)
1162
+ if undef_line.identifier.value == "defined"
1163
+ W(undef_line.identifier.location)
1164
+ end
1165
+ end
1166
+ end
1167
+
1168
+ class W0688 < PassiveCodeCheck
1169
+ def_registrant_phase Cpp::Prepare2Phase
1170
+
1171
+ # NOTE: W0688 may be duplicative when the same header which causes this
1172
+ # warning is included twice or more.
1173
+ mark_as_unique
1174
+
1175
+ def initialize(phase_ctxt)
1176
+ super
1177
+ trav = phase_ctxt[:cpp_ast_traversal]
1178
+ trav.enter_line_line += T(:check)
1179
+ end
1180
+
1181
+ private
1182
+ def check(line_line)
1183
+ if line_no_arg = line_no_argument(line_line)
1184
+ line_no = Integer(line_no_arg.value)
1185
+ unless line_no > 0 && line_no < 32768
1186
+ W(line_no_arg.location)
1187
+ end
1188
+ end
1189
+ rescue
1190
+ end
1191
+
1192
+ def line_no_argument(line_line)
1193
+ line_line.pp_tokens ? line_line.pp_tokens.tokens.first : nil
1194
+ end
1195
+ end
1196
+
1197
+ class W0689 < W0688
1198
+ def_registrant_phase Cpp::Prepare2Phase
1199
+
1200
+ # NOTE: W0689 may be duplicative when the same header which causes this
1201
+ # warning is included twice or more.
1202
+ mark_as_unique
1203
+
1204
+ private
1205
+ def check(line_line)
1206
+ if fname_arg = file_name_argument(line_line)
1207
+ unless fname_arg.value =~ /\A".*"\z/
1208
+ W(fname_arg.location)
1209
+ end
1210
+ end
1211
+ end
1212
+
1213
+ def file_name_argument(line_line)
1214
+ line_line.pp_tokens ? line_line.pp_tokens.tokens[1] : nil
1215
+ end
1216
+ end
1217
+
1218
+ class W0690 < W0688
1219
+ def_registrant_phase Cpp::Prepare2Phase
1220
+
1221
+ # NOTE: W0690 may be duplicative when the same header which causes this
1222
+ # warning is included twice or more.
1223
+ mark_as_unique
1224
+
1225
+ private
1226
+ def check(line_line)
1227
+ if line_no_arg = line_no_argument(line_line)
1228
+ Integer(line_no_arg.value)
1229
+ end
1230
+ rescue
1231
+ W(line_no_arg.location)
1232
+ end
1233
+ end
1234
+
1147
1235
  class W0691 < PassiveCodeCheck
1148
1236
  def_registrant_phase Cpp::Prepare2Phase
1149
1237
 
@@ -1186,6 +1274,21 @@ module CBuiltin #:nodoc:
1186
1274
  end
1187
1275
  end
1188
1276
 
1277
+ class W0695 < W0687
1278
+ def_registrant_phase Cpp::Prepare2Phase
1279
+
1280
+ # NOTE: W0695 may be duplicative when the same header which causes this
1281
+ # warning is included twice or more.
1282
+ mark_as_unique
1283
+
1284
+ private
1285
+ def check(undef_line, *)
1286
+ if undef_line.identifier.value == "assert"
1287
+ W(undef_line.identifier.location)
1288
+ end
1289
+ end
1290
+ end
1291
+
1189
1292
  class W0696 < PassiveCodeCheck
1190
1293
  def_registrant_phase Cpp::Prepare2Phase
1191
1294
 
@@ -1238,6 +1341,64 @@ module CBuiltin #:nodoc:
1238
1341
  end
1239
1342
  end
1240
1343
 
1344
+ class W0806 < PassiveCodeCheck
1345
+ def_registrant_phase Cpp::Prepare2Phase
1346
+
1347
+ # NOTE: W0806 may be duplicative when the same header which causes this
1348
+ # warning is included twice or more.
1349
+ mark_as_unique
1350
+
1351
+ def initialize(phase_ctxt)
1352
+ super
1353
+ interp = phase_ctxt[:cpp_interpreter]
1354
+ interp.on_object_like_macro_defined += T(:check)
1355
+ end
1356
+
1357
+ private
1358
+ def check(define_line, *)
1359
+ if define_line.identifier.value == "defined"
1360
+ W(define_line.identifier.location)
1361
+ end
1362
+ end
1363
+ end
1364
+
1365
+ class W0807 < W0687
1366
+ def_registrant_phase Cpp::Prepare2Phase
1367
+
1368
+ # NOTE: W0807 may be duplicative when the same header which causes this
1369
+ # warning is included twice or more.
1370
+ mark_as_unique
1371
+
1372
+ private
1373
+ def check(undef_line, macro)
1374
+ if macro.kind_of?(Cpp::SpecialMacro)
1375
+ identifier = undef_line.identifier
1376
+ W(identifier.location, identifier.value)
1377
+ end
1378
+ end
1379
+ end
1380
+
1381
+ class W0808 < PassiveCodeCheck
1382
+ def_registrant_phase Cpp::Prepare2Phase
1383
+
1384
+ # NOTE: W0808 may be duplicative when the same header which causes this
1385
+ # warning is included twice or more.
1386
+ mark_as_unique
1387
+
1388
+ def initialize(phase_ctxt)
1389
+ super
1390
+ interp = phase_ctxt[:cpp_interpreter]
1391
+ interp.on_object_like_macro_defined += T(:check)
1392
+ @macro_tbl = phase_ctxt[:cpp_macro_table]
1393
+ end
1394
+
1395
+ private
1396
+ def check(define_line, *)
1397
+ id = define_line.identifier
1398
+ W(id.location, id.value) if @macro_tbl.lookup(id.value)
1399
+ end
1400
+ end
1401
+
1241
1402
  class W0811 < PassiveCodeCheck
1242
1403
  def_registrant_phase Cpp::Prepare2Phase
1243
1404
 
@@ -1327,8 +1488,8 @@ module CBuiltin #:nodoc:
1327
1488
 
1328
1489
  def initialize(phase_ctxt)
1329
1490
  super
1330
- traversal = phase_ctxt[:cpp_ast_traversal]
1331
- traversal.enter_unknown_directive += T(:check)
1491
+ trav = phase_ctxt[:cpp_ast_traversal]
1492
+ trav.enter_unknown_directive += T(:check)
1332
1493
  end
1333
1494
 
1334
1495
  private
@@ -1,7 +1,7 @@
1
1
  # Code structure extractions (cpp-phase) of adlint-exam-c_builtin package.
2
2
  #
3
3
  # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
- # Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
4
+ # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
5
5
  # License:: GPLv3+: GNU General Public License version 3 or later
6
6
  #
7
7
  # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
@@ -11,7 +11,7 @@
11
11
  # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
12
  # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
13
  # / __ |/ /_/ / /___/ / /| / / /
14
- # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
15
15
  #
16
16
  # This file is part of AdLint.
17
17
  #
@@ -102,23 +102,23 @@ module CBuiltin #:nodoc:
102
102
 
103
103
  def initialize(phase_ctxt)
104
104
  super
105
- traversal = phase_ctxt[:cpp_ast_traversal]
106
- traversal.enter_if_statement += T(:extract_if)
107
- traversal.enter_ifdef_statement += T(:extract_ifdef)
108
- traversal.enter_ifndef_statement += T(:extract_ifndef)
109
- traversal.enter_elif_statement += T(:extract_elif)
110
- traversal.enter_else_statement += T(:extract_else)
111
- traversal.enter_endif_line += T(:extract_endif)
112
- traversal.enter_user_include_line += T(:extract_usr_include)
113
- traversal.enter_system_include_line += T(:extract_sys_include)
114
- traversal.enter_object_like_define_line += T(:extract_define)
115
- traversal.enter_function_like_define_line += T(:extract_define)
116
- traversal.enter_va_function_like_define_line += T(:extract_define)
117
- traversal.enter_undef_line += T(:extract_undef)
118
- traversal.enter_line_line += T(:extract_line)
119
- traversal.enter_error_line += T(:extract_error)
120
- traversal.enter_pragma_line += T(:extract_pragma)
121
- traversal.enter_null_directive += T(:extract_null)
105
+ trav = phase_ctxt[:cpp_ast_traversal]
106
+ trav.enter_if_statement += T(:extract_if)
107
+ trav.enter_ifdef_statement += T(:extract_ifdef)
108
+ trav.enter_ifndef_statement += T(:extract_ifndef)
109
+ trav.enter_elif_statement += T(:extract_elif)
110
+ trav.enter_else_statement += T(:extract_else)
111
+ trav.enter_endif_line += T(:extract_endif)
112
+ trav.enter_user_include_line += T(:extract_usr_include)
113
+ trav.enter_system_include_line += T(:extract_sys_include)
114
+ trav.enter_object_like_define_line += T(:extract_define)
115
+ trav.enter_function_like_define_line += T(:extract_define)
116
+ trav.enter_va_function_like_define_line += T(:extract_define)
117
+ trav.enter_undef_line += T(:extract_undef)
118
+ trav.enter_line_line += T(:extract_line)
119
+ trav.enter_error_line += T(:extract_error)
120
+ trav.enter_pragma_line += T(:extract_pragma)
121
+ trav.enter_null_directive += T(:extract_null)
122
122
  end
123
123
 
124
124
  private
@@ -1,7 +1,7 @@
1
1
  # Code checkings (ld-phase) of adlint-exam-c_builtin package.
2
2
  #
3
3
  # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
- # Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
4
+ # Copyright:: Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
5
5
  # License:: GPLv3+: GNU General Public License version 3 or later
6
6
  #
7
7
  # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
@@ -11,7 +11,7 @@
11
11
  # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
12
  # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
13
  # / __ |/ /_/ / /___/ / /| / / /
14
- # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.
15
15
  #
16
16
  # This file is part of AdLint.
17
17
  #