adlint 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (465) hide show
  1. data/AUTHORS +27 -0
  2. data/COPYING +674 -0
  3. data/ChangeLog +820 -0
  4. data/INSTALL +78 -0
  5. data/MANIFEST +464 -0
  6. data/NEWS +38 -0
  7. data/README +74 -0
  8. data/Rakefile +167 -0
  9. data/TODO +29 -0
  10. data/bin/adlint +141 -0
  11. data/bin/adlint_chk +129 -0
  12. data/bin/adlint_cma +122 -0
  13. data/bin/adlint_sma +129 -0
  14. data/bin/adlintize +286 -0
  15. data/etc/conf.d/fallback/cinit.erb +11 -0
  16. data/etc/conf.d/fallback/traits.erb +216 -0
  17. data/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb +149 -0
  18. data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +227 -0
  19. data/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb +224 -0
  20. data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +226 -0
  21. data/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb +219 -0
  22. data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +224 -0
  23. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +234 -0
  24. data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +226 -0
  25. data/etc/conf.d/noarch/GNUmakefile.erb +119 -0
  26. data/etc/conf.d/noarch/adlint_all_bat.erb +9 -0
  27. data/etc/conf.d/noarch/adlint_all_sh.erb +10 -0
  28. data/etc/conf.d/noarch/pinit.erb +11 -0
  29. data/etc/mesg.d/en_US/messages.yml +784 -0
  30. data/etc/mesg.d/ja_JP/messages.yml +784 -0
  31. data/lib/adlint/analyzer.rb +294 -0
  32. data/lib/adlint/c/branch.rb +251 -0
  33. data/lib/adlint/c/builtin.rb +92 -0
  34. data/lib/adlint/c/code.rb +490 -0
  35. data/lib/adlint/c/const.rb +465 -0
  36. data/lib/adlint/c/conv.rb +212 -0
  37. data/lib/adlint/c/ctrlexpr.rb +949 -0
  38. data/lib/adlint/c/domain.rb +7499 -0
  39. data/lib/adlint/c/environ.rb +133 -0
  40. data/lib/adlint/c/expr.rb +1725 -0
  41. data/lib/adlint/c/format.rb +3209 -0
  42. data/lib/adlint/c/interp.rb +1740 -0
  43. data/lib/adlint/c/lexer.rb +241 -0
  44. data/lib/adlint/c/mediator.rb +313 -0
  45. data/lib/adlint/c/message.rb +13597 -0
  46. data/lib/adlint/c/metric.rb +765 -0
  47. data/lib/adlint/c/object.rb +1018 -0
  48. data/lib/adlint/c/parser.rb +3800 -0
  49. data/lib/adlint/c/parser.y +2054 -0
  50. data/lib/adlint/c/phase.rb +712 -0
  51. data/lib/adlint/c/resolver.rb +270 -0
  52. data/lib/adlint/c/scanner.rb +248 -0
  53. data/lib/adlint/c/scope.rb +74 -0
  54. data/lib/adlint/c/syntax.rb +4279 -0
  55. data/lib/adlint/c/type.rb +7506 -0
  56. data/lib/adlint/c/util.rb +91 -0
  57. data/lib/adlint/c/value.rb +2310 -0
  58. data/lib/adlint/c.rb +56 -0
  59. data/lib/adlint/code.rb +500 -0
  60. data/lib/adlint/cpp/code.rb +189 -0
  61. data/lib/adlint/cpp/constexpr.rb +721 -0
  62. data/lib/adlint/cpp/constexpr.y +389 -0
  63. data/lib/adlint/cpp/eval.rb +1012 -0
  64. data/lib/adlint/cpp/lexer.rb +860 -0
  65. data/lib/adlint/cpp/macro.rb +637 -0
  66. data/lib/adlint/cpp/message.rb +992 -0
  67. data/lib/adlint/cpp/phase.rb +176 -0
  68. data/lib/adlint/cpp/scanner.rb +93 -0
  69. data/lib/adlint/cpp/source.rb +169 -0
  70. data/lib/adlint/cpp/subst.rb +300 -0
  71. data/lib/adlint/cpp/syntax.rb +1412 -0
  72. data/lib/adlint/cpp/util.rb +97 -0
  73. data/lib/adlint/cpp.rb +43 -0
  74. data/lib/adlint/driver.rb +147 -0
  75. data/lib/adlint/error.rb +179 -0
  76. data/lib/adlint/lang.rb +97 -0
  77. data/lib/adlint/ld/message.rb +259 -0
  78. data/lib/adlint/ld/metric.rb +57 -0
  79. data/lib/adlint/ld/object.rb +542 -0
  80. data/lib/adlint/ld/phase.rb +193 -0
  81. data/lib/adlint/ld/typedef.rb +109 -0
  82. data/lib/adlint/ld/util.rb +88 -0
  83. data/lib/adlint/ld.rb +37 -0
  84. data/lib/adlint/lexer.rb +293 -0
  85. data/lib/adlint/message.rb +368 -0
  86. data/lib/adlint/metric.rb +805 -0
  87. data/lib/adlint/monitor.rb +144 -0
  88. data/lib/adlint/phase.rb +90 -0
  89. data/lib/adlint/prelude.rb +314 -0
  90. data/lib/adlint/report.rb +617 -0
  91. data/lib/adlint/source.rb +155 -0
  92. data/lib/adlint/symbol.rb +127 -0
  93. data/lib/adlint/token.rb +215 -0
  94. data/lib/adlint/traits.rb +643 -0
  95. data/lib/adlint/util.rb +524 -0
  96. data/lib/adlint/version.rb +71 -0
  97. data/lib/adlint.rb +66 -0
  98. data/share/HEADER +45 -0
  99. data/share/demo/Makefile +110 -0
  100. data/share/demo/ambig_operator/ambig_operator.c +289 -0
  101. data/share/demo/arg_points_unset/arg_points_unset.c +37 -0
  102. data/share/demo/array_range/array_range.c +62 -0
  103. data/share/demo/bad_bitfields/bad_bitfields.c +74 -0
  104. data/share/demo/bad_brace/bad_brace.c +19 -0
  105. data/share/demo/bad_charset/abcde$.h +0 -0
  106. data/share/demo/bad_charset/bad_charset.c +22 -0
  107. data/share/demo/bad_comment/bad_comment.c +3 -0
  108. data/share/demo/bad_const/bad_const.c +19 -0
  109. data/share/demo/bad_conv/bad_conv.c +48 -0
  110. data/share/demo/bad_indent/bad_indent.c +50 -0
  111. data/share/demo/bad_init/bad_init.c +49 -0
  112. data/share/demo/bad_macro/bad_macro.c +97 -0
  113. data/share/demo/bitwise_expr/bitwise_expr.c +19 -0
  114. data/share/demo/call_by_value/call_by_value.c +26 -0
  115. data/share/demo/cross_ref/cross_ref.c +21 -0
  116. data/share/demo/dangling_else/dangling_else.c +20 -0
  117. data/share/demo/dead_code/dead_code.c +237 -0
  118. data/share/demo/deep_nest/deep_nest.c +57 -0
  119. data/share/demo/dense_switch/dense_switch.c +62 -0
  120. data/share/demo/direct_recur/direct_recur.c +15 -0
  121. data/share/demo/div_by_zero/div_by_zero.c +35 -0
  122. data/share/demo/dos_source/dos_source.c +7 -0
  123. data/share/demo/funptr_cast/funptr_cast.c +26 -0
  124. data/share/demo/goto_stmt/goto_stmt.c +19 -0
  125. data/share/demo/id_hiding/id_hiding.c +19 -0
  126. data/share/demo/ill_defined/ill_defined.c +13 -0
  127. data/share/demo/implicit_conv/implicit_conv.c +60 -0
  128. data/share/demo/implicit_int/implicit_int.c +14 -0
  129. data/share/demo/incomplete_type/incomplete_type.c +49 -0
  130. data/share/demo/indirect_recur/indirect_recur_1.c +14 -0
  131. data/share/demo/indirect_recur/indirect_recur_1.h +7 -0
  132. data/share/demo/indirect_recur/indirect_recur_2.c +12 -0
  133. data/share/demo/indirect_recur/indirect_recur_2.h +6 -0
  134. data/share/demo/indirect_recur/indirect_recur_3.c +6 -0
  135. data/share/demo/indirect_recur/indirect_recur_3.h +6 -0
  136. data/share/demo/indirect_recur/indirect_recur_4.c +25 -0
  137. data/share/demo/intro_demo/intro_demo.c +76 -0
  138. data/share/demo/intro_demo/intro_demo.h +12 -0
  139. data/share/demo/intro_demo/useless_header.h +5 -0
  140. data/share/demo/invalid_call/invalid_call.c +32 -0
  141. data/share/demo/kandr_fundef/kandr_fundef.c +10 -0
  142. data/share/demo/line_comment/line_comment.c +12 -0
  143. data/share/demo/local_decl/local_decl.c +9 -0
  144. data/share/demo/logical_trick/logical_trick.c +36 -0
  145. data/share/demo/long_sym/long_sym.c +5 -0
  146. data/share/demo/loop_var/loop_var.c +92 -0
  147. data/share/demo/malloc_or_die/malloc_or_die.c +43 -0
  148. data/share/demo/may_be_null/may_be_null.c +52 -0
  149. data/share/demo/may_be_null_arith/may_be_null_arith.c +15 -0
  150. data/share/demo/may_be_unset/may_be_unset.c +34 -0
  151. data/share/demo/mmapped_io/mmapped_io.c +23 -0
  152. data/share/demo/multi_break/multi_break.c +33 -0
  153. data/share/demo/multi_decl/multi_decl_1.c +17 -0
  154. data/share/demo/multi_decl/multi_decl_1.h +6 -0
  155. data/share/demo/multi_decl/multi_decl_2.c +13 -0
  156. data/share/demo/multi_decl/multi_decl_2.h +6 -0
  157. data/share/demo/multi_decl/multi_decl_3.c +22 -0
  158. data/share/demo/multi_def/multi_def_1.c +36 -0
  159. data/share/demo/multi_def/multi_def_1.h +6 -0
  160. data/share/demo/multi_def/multi_def_2.c +22 -0
  161. data/share/demo/multi_def/multi_def_2.h +6 -0
  162. data/share/demo/multi_def/multi_def_3.c +6 -0
  163. data/share/demo/multi_typedef/multi_typedef.c +11 -0
  164. data/share/demo/multi_typedef/multi_typedef_1.h +1 -0
  165. data/share/demo/multi_typedef/multi_typedef_2.h +1 -0
  166. data/share/demo/must_be_false/must_be_false.c +53 -0
  167. data/share/demo/must_be_null/must_be_null.c +13 -0
  168. data/share/demo/must_be_null_arith/must_be_null_arith.c +14 -0
  169. data/share/demo/must_be_true/must_be_true.c +21 -0
  170. data/share/demo/no_eof_nl/no_eof_nl.c +4 -0
  171. data/share/demo/no_void_arg/no_void_arg.c +14 -0
  172. data/share/demo/null_stmt/null_stmt.c +19 -0
  173. data/share/demo/octal_const/octal_const.c +20 -0
  174. data/share/demo/output_by_param/output_by_param.c +17 -0
  175. data/share/demo/overflow/overflow.c +74 -0
  176. data/share/demo/press_release/press_release.c +40 -0
  177. data/share/demo/retn_lvar_addr/retn_lvar_addr.c +47 -0
  178. data/share/demo/shift_expr/shift_expr.c +14 -0
  179. data/share/demo/should_be_typedef/should_be_typedef.c +51 -0
  180. data/share/demo/static_paths/static_paths.c +153 -0
  181. data/share/demo/static_vars/static_vars.c +39 -0
  182. data/share/demo/tag_hiding/tag_hiding.c +18 -0
  183. data/share/demo/tricky_incdec/tricky_incdec.c +12 -0
  184. data/share/demo/undefined_macro/undefined_macro.c +17 -0
  185. data/share/demo/uninit_vars/uninit_vars.c +28 -0
  186. data/share/demo/union_type/union_type.c +23 -0
  187. data/share/demo/unmatch_decl/unmatch_decl_1.c +12 -0
  188. data/share/demo/unmatch_decl/unmatch_decl_1.h +8 -0
  189. data/share/demo/unmatch_decl/unmatch_decl_2.c +10 -0
  190. data/share/demo/unmatch_decl/unmatch_decl_2.h +8 -0
  191. data/share/demo/unmatch_decl/unmatch_decl_3.c +7 -0
  192. data/share/demo/unmatch_paren_macro/unmatch_paren_macro.c +15 -0
  193. data/share/demo/unreachable/unreachable.c +34 -0
  194. data/share/demo/useless_exp_funs/useless_exp_funs_1.c +14 -0
  195. data/share/demo/useless_exp_funs/useless_exp_funs_1.h +1 -0
  196. data/share/demo/useless_exp_funs/useless_exp_funs_2.c +6 -0
  197. data/share/demo/useless_exp_vars/useless_export_1.c +8 -0
  198. data/share/demo/useless_exp_vars/useless_export_1.h +1 -0
  199. data/share/demo/useless_exp_vars/useless_export_2.c +7 -0
  200. data/share/demo/useless_expr/useless_expr.c +17 -0
  201. data/share/demo/useless_funs/useless_funs_1.c +21 -0
  202. data/share/demo/useless_funs/useless_funs_1.h +8 -0
  203. data/share/demo/useless_funs/useless_funs_2.c +6 -0
  204. data/share/demo/useless_header/useless_header.c +9 -0
  205. data/share/demo/useless_header/useless_header_1.h +12 -0
  206. data/share/demo/useless_header/useless_header_2.h +6 -0
  207. data/share/demo/useless_header/useless_header_3.h +9 -0
  208. data/share/demo/useless_header/useless_header_4.h +3 -0
  209. data/share/demo/useless_vars/useless_vars.c +17 -0
  210. data/share/demo/va_funcall/va_funcall.c +25 -0
  211. data/share/demo/various_fundef/various_fundef.c +36 -0
  212. data/share/demo/wchar_wstring/wchar_wstring.c +7 -0
  213. data/share/demo/wrap_around/wrap_around.c +38 -0
  214. data/share/doc/Makefile +16 -0
  215. data/share/doc/adlint_on_adqua.png +0 -0
  216. data/share/doc/adlint_on_eclipse_en.png +0 -0
  217. data/share/doc/adlint_on_eclipse_ja.png +0 -0
  218. data/share/doc/adlint_on_vim_en.png +0 -0
  219. data/share/doc/adlint_on_vim_ja.png +0 -0
  220. data/share/doc/developers_guide_ja.html +171 -0
  221. data/share/doc/developers_guide_ja.texi +87 -0
  222. data/share/doc/gen_mesg_sections.rb +39 -0
  223. data/share/doc/samples/GNUmakefile +162 -0
  224. data/share/doc/samples/adlint_traits.yml +238 -0
  225. data/share/doc/texinfo.css +22 -0
  226. data/share/doc/users_guide_en.html +39975 -0
  227. data/share/doc/users_guide_en.texi +32640 -0
  228. data/share/doc/users_guide_ja.html +40505 -0
  229. data/share/doc/users_guide_ja.texi +33189 -0
  230. data/share/logo/adlint-110.png +0 -0
  231. data/share/logo/adlint-524.png +0 -0
  232. data/share/logo/adlint.svg +4637 -0
  233. data/share/sample/README +6 -0
  234. data/share/sample/bison-2.5/adlint/GNUmakefile +170 -0
  235. data/share/sample/bison-2.5/adlint/adlint_traits.yml +225 -0
  236. data/share/sample/bison-2.5/adlint/lib/GNUmakefile +198 -0
  237. data/share/sample/bison-2.5/adlint/lib/adlint_cinit.h +228 -0
  238. data/share/sample/bison-2.5/adlint/lib/adlint_pinit.h +21 -0
  239. data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +238 -0
  240. data/share/sample/bison-2.5/adlint/src/GNUmakefile +166 -0
  241. data/share/sample/bison-2.5/adlint/src/adlint_cinit.h +228 -0
  242. data/share/sample/bison-2.5/adlint/src/adlint_pinit.h +21 -0
  243. data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +239 -0
  244. data/share/sample/ctags-5.8/adlint/GNUmakefile +169 -0
  245. data/share/sample/ctags-5.8/adlint/adlint_cinit.h +219 -0
  246. data/share/sample/ctags-5.8/adlint/adlint_pinit.h +13 -0
  247. data/share/sample/ctags-5.8/adlint/adlint_traits.yml +225 -0
  248. data/share/sample/flex-2.5.35/adlint/GNUmakefile +140 -0
  249. data/share/sample/flex-2.5.35/adlint/adlint_cinit.h +219 -0
  250. data/share/sample/flex-2.5.35/adlint/adlint_pinit.h +14 -0
  251. data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +225 -0
  252. data/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile +314 -0
  253. data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +225 -0
  254. data/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile +204 -0
  255. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h +228 -0
  256. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h +28 -0
  257. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +240 -0
  258. data/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile +163 -0
  259. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h +228 -0
  260. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h +24 -0
  261. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +240 -0
  262. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile +149 -0
  263. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h +228 -0
  264. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h +24 -0
  265. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +240 -0
  266. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile +131 -0
  267. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h +228 -0
  268. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h +24 -0
  269. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +241 -0
  270. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile +131 -0
  271. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h +228 -0
  272. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h +24 -0
  273. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +241 -0
  274. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile +131 -0
  275. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h +228 -0
  276. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h +24 -0
  277. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +241 -0
  278. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile +131 -0
  279. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h +228 -0
  280. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h +24 -0
  281. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +241 -0
  282. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile +134 -0
  283. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h +228 -0
  284. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h +24 -0
  285. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +241 -0
  286. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile +131 -0
  287. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h +228 -0
  288. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h +24 -0
  289. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +241 -0
  290. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile +131 -0
  291. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h +228 -0
  292. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h +24 -0
  293. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +241 -0
  294. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile +131 -0
  295. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h +228 -0
  296. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h +24 -0
  297. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +242 -0
  298. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile +132 -0
  299. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h +228 -0
  300. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h +24 -0
  301. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +242 -0
  302. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile +132 -0
  303. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h +228 -0
  304. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h +24 -0
  305. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +242 -0
  306. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile +132 -0
  307. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h +228 -0
  308. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h +24 -0
  309. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +242 -0
  310. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile +132 -0
  311. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h +228 -0
  312. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h +24 -0
  313. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +242 -0
  314. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile +134 -0
  315. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h +228 -0
  316. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h +24 -0
  317. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +241 -0
  318. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile +140 -0
  319. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h +228 -0
  320. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h +24 -0
  321. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +242 -0
  322. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile +131 -0
  323. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h +228 -0
  324. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h +24 -0
  325. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +241 -0
  326. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile +131 -0
  327. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h +228 -0
  328. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h +24 -0
  329. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +241 -0
  330. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile +131 -0
  331. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h +228 -0
  332. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h +24 -0
  333. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +241 -0
  334. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile +134 -0
  335. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h +228 -0
  336. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h +24 -0
  337. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +242 -0
  338. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile +131 -0
  339. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h +228 -0
  340. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h +24 -0
  341. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +241 -0
  342. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile +131 -0
  343. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h +228 -0
  344. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h +24 -0
  345. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +241 -0
  346. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile +131 -0
  347. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h +228 -0
  348. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h +24 -0
  349. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +241 -0
  350. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile +131 -0
  351. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h +228 -0
  352. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h +24 -0
  353. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +241 -0
  354. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile +131 -0
  355. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h +228 -0
  356. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h +24 -0
  357. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +241 -0
  358. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile +131 -0
  359. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h +228 -0
  360. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h +24 -0
  361. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +241 -0
  362. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile +131 -0
  363. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h +228 -0
  364. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h +24 -0
  365. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +241 -0
  366. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile +131 -0
  367. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h +228 -0
  368. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h +24 -0
  369. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +241 -0
  370. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile +131 -0
  371. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h +228 -0
  372. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h +24 -0
  373. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +241 -0
  374. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile +131 -0
  375. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h +228 -0
  376. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h +24 -0
  377. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +241 -0
  378. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile +162 -0
  379. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h +228 -0
  380. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h +24 -0
  381. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +241 -0
  382. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile +131 -0
  383. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h +228 -0
  384. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h +24 -0
  385. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +241 -0
  386. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile +135 -0
  387. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h +228 -0
  388. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h +24 -0
  389. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +241 -0
  390. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile +131 -0
  391. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h +228 -0
  392. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h +24 -0
  393. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +241 -0
  394. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile +131 -0
  395. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h +228 -0
  396. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h +24 -0
  397. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +241 -0
  398. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile +131 -0
  399. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h +228 -0
  400. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h +24 -0
  401. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +241 -0
  402. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile +131 -0
  403. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h +228 -0
  404. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h +24 -0
  405. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +241 -0
  406. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile +132 -0
  407. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h +228 -0
  408. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h +24 -0
  409. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +241 -0
  410. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile +144 -0
  411. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h +228 -0
  412. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h +24 -0
  413. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +241 -0
  414. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile +131 -0
  415. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h +228 -0
  416. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h +24 -0
  417. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +241 -0
  418. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile +131 -0
  419. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h +228 -0
  420. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h +24 -0
  421. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +241 -0
  422. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile +140 -0
  423. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h +228 -0
  424. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h +24 -0
  425. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +241 -0
  426. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile +131 -0
  427. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h +228 -0
  428. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h +24 -0
  429. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +241 -0
  430. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile +131 -0
  431. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h +228 -0
  432. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h +24 -0
  433. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +241 -0
  434. data/share/sample/screen-4.0.3/adlint/GNUmakefile +162 -0
  435. data/share/sample/screen-4.0.3/adlint/adlint_cinit.h +228 -0
  436. data/share/sample/screen-4.0.3/adlint/adlint_pinit.h +21 -0
  437. data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +238 -0
  438. data/share/sample/vim-7.3/adlint/vim/GNUmakefile +185 -0
  439. data/share/sample/vim-7.3/adlint/vim/adlint_cinit.h +228 -0
  440. data/share/sample/vim-7.3/adlint/vim/adlint_pinit.h +25 -0
  441. data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +250 -0
  442. data/share/sample/vim-7.3/adlint/xxd/GNUmakefile +131 -0
  443. data/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h +228 -0
  444. data/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h +24 -0
  445. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +237 -0
  446. data/share/sample/zsh-4.3.15/adlint/GNUmakefile +146 -0
  447. data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +225 -0
  448. data/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile +132 -0
  449. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h +228 -0
  450. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h +24 -0
  451. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +240 -0
  452. data/share/sample/zsh-4.3.15/adlint/core/GNUmakefile +153 -0
  453. data/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h +228 -0
  454. data/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h +23 -0
  455. data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +239 -0
  456. data/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile +147 -0
  457. data/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h +228 -0
  458. data/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h +24 -0
  459. data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +240 -0
  460. data/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile +144 -0
  461. data/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h +228 -0
  462. data/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h +24 -0
  463. data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +239 -0
  464. data/spec/MUST_WRITE_SPECS_WITH_RSPEC +0 -0
  465. metadata +532 -0
@@ -0,0 +1,617 @@
1
+ # Analysis report and its manipulation utility.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of AdLint.
17
+ #
18
+ # AdLint is free software: you can redistribute it and/or modify it under the
19
+ # terms of the GNU General Public License as published by the Free Software
20
+ # Foundation, either version 3 of the License, or (at your option) any later
21
+ # version.
22
+ #
23
+ # AdLint is distributed in the hope that it will be useful, but WITHOUT ANY
24
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
25
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
26
+ #
27
+ # You should have received a copy of the GNU General Public License along with
28
+ # AdLint. If not, see <http://www.gnu.org/licenses/>.
29
+ #
30
+ #++
31
+
32
+ require "adlint/token"
33
+ require "adlint/message"
34
+ require "adlint/code"
35
+ require "adlint/metric"
36
+
37
+ module AdLint #:nodoc:
38
+
39
+ # == DESCRIPTION
40
+ # Report information collector.
41
+ class Report
42
+ # === DESCRIPTION
43
+ # Constructs an empty report.
44
+ def initialize(msg_fpath, met_fpath, &block)
45
+ @msg_fpath = msg_fpath
46
+ @msg_file = open_message_file(msg_fpath)
47
+
48
+ @met_fpath = met_fpath
49
+ @met_file = open_metric_file(met_fpath)
50
+
51
+ @unique_messages = Set.new
52
+
53
+ yield(self)
54
+ ensure
55
+ @msg_file.close if @msg_file
56
+ @met_file.close if @met_file
57
+ end
58
+
59
+ attr_reader :msg_fpath
60
+ attr_reader :met_fpath
61
+
62
+ # === DESCRIPTION
63
+ # Adds a message to this report.
64
+ #
65
+ # === PARAMETER
66
+ # _message_:: Message -- Message to be added.
67
+ #
68
+ # === RETURN VALUE
69
+ # Report -- Self.
70
+ def add_message(message)
71
+ @msg_file.puts(message.to_csv)
72
+ $stderr.puts(message.to_s) unless verbose?
73
+ self
74
+ end
75
+
76
+ def add_unique_message(message)
77
+ if @unique_messages.add?(message)
78
+ add_message(message)
79
+ end
80
+ self
81
+ end
82
+
83
+ # === DESCRIPTION
84
+ # Adds code structure information to this report.
85
+ #
86
+ # === PARAMETER
87
+ # _code_struct_:: CodeStructure -- Code structure information to be added.
88
+ #
89
+ # === RETURN VALUE
90
+ # Report -- Self.
91
+ def add_code_struct(code_struct)
92
+ @met_file.puts(code_struct.to_csv)
93
+ self
94
+ end
95
+
96
+ def add_code_metric(code_metric)
97
+ @met_file.puts(code_metric.to_csv)
98
+ self
99
+ end
100
+
101
+ private
102
+ def open_message_file(fpath)
103
+ File.open(fpath, "w").tap do |io|
104
+ io.set_encoding(Encoding.default_external)
105
+ io.puts(["V", SHORT_VERSION, Time.now.to_s, Dir.getwd].to_csv)
106
+ end
107
+ end
108
+
109
+ def open_metric_file(fpath)
110
+ File.open(fpath, "w").tap do |io|
111
+ io.set_encoding(Encoding.default_external)
112
+ io.puts(["VER", SHORT_VERSION, Time.now.to_s, Dir.getwd].to_csv)
113
+ end
114
+ end
115
+ end
116
+
117
+ module MessageUniqueness
118
+ @@messages_to_be_unique = Set.new
119
+
120
+ def ensure_uniqueness_of(message_id)
121
+ @@messages_to_be_unique.add(message_id)
122
+ nil
123
+ end
124
+
125
+ def must_be_unique?(message_id)
126
+ @@messages_to_be_unique.include?(message_id)
127
+ end
128
+ module_function :must_be_unique?
129
+ end
130
+
131
+ # == DESCRIPTION
132
+ # Report manipulation utility.
133
+ module ReportUtil
134
+ # === DESCRIPTION
135
+ # Adds an error message to the report.
136
+ #
137
+ # Abbreviation below is available.
138
+ # add_error_message(id, location, ...) => E(id, location, ...)
139
+ #
140
+ # === PARAMETER
141
+ # _id_:: String -- Message id string.
142
+ # _location_:: Location -- Location where the message detected.
143
+ # _parts_:: Array< Object > -- Message formatting parts.
144
+ #
145
+ # === RETURN VALUE
146
+ # None.
147
+ def add_error_message(id, location, *parts)
148
+ add_message(ErrorMessage.new(id, location, *parts))
149
+ end
150
+ alias :E :add_error_message
151
+ module_function :add_error_message, :E
152
+
153
+ # === DESCRIPTION
154
+ # Adds a warning message to the report.
155
+ #
156
+ # Abbreviation below is available.
157
+ # add_warning_message(id, location, ...) => W(id, location, ...)
158
+ #
159
+ # === PARAMETER
160
+ # _id_:: String -- Message id string.
161
+ # _location_:: Location -- Location where the message detected.
162
+ # _parts_:: Array< Object > -- Message formatting parts.
163
+ #
164
+ # === RETURN VALUE
165
+ # None.
166
+ def add_warning_message(id, location, *parts)
167
+ add_message(WarningMessage.new(id, location, *parts))
168
+ end
169
+ alias :W :add_warning_message
170
+ module_function :add_warning_message, :W
171
+
172
+ # === DESCRIPTION
173
+ # Adds a context message to the report.
174
+ #
175
+ # Abbreviation below is available.
176
+ # add_context_message(id, location, ...) => C(id, location, ...)
177
+ #
178
+ # === PARAMETER
179
+ # _id_:: String -- Message id string.
180
+ # _location_:: Location -- Location where the message detected.
181
+ # _parts_:: Array< Object > -- Message formatting parts.
182
+ #
183
+ # === RETURN VALUE
184
+ # None.
185
+ def add_context_message(id, location, *parts)
186
+ add_message(ContextMessage.new(id, location, *parts))
187
+ end
188
+ alias :C :add_context_message
189
+ module_function :add_context_message, :C
190
+
191
+ # === DESCRIPTION
192
+ # Adds a message to the report.
193
+ #
194
+ # === PARAMETER
195
+ # _message_:: Message -- Message to be added.
196
+ #
197
+ # === RETURN VALUE
198
+ # None.
199
+ def add_message(message)
200
+ if MessageUniqueness.must_be_unique?(message.id)
201
+ report.add_unique_message(message)
202
+ else
203
+ report.add_message(message)
204
+ end
205
+ nil
206
+ end
207
+ module_function :add_message
208
+
209
+ # === DESCRIPTION
210
+ # Adds type declaration information to the report.
211
+ #
212
+ # Abbreviation below is available.
213
+ # add_typedcl(...) => TYPEDCL(...)
214
+ #
215
+ # === PARAMETER
216
+ # _location_:: Location -- Location where the declaration appears.
217
+ # _typedcl_type_:: String -- Type declaration type.
218
+ # _type_name_:: String -- Type name.
219
+ # _type_rep_:: String -- Type representation string.
220
+ #
221
+ # === RETURN VALUE
222
+ # None.
223
+ def add_typedcl(location, typedcl_type, type_name, type_rep)
224
+ add_code_struct(TypeDcl.new(location, typedcl_type, type_name, type_rep))
225
+ end
226
+ alias :TYPEDCL :add_typedcl
227
+ module_function :add_typedcl, :TYPEDCL
228
+
229
+ # === DESCRIPTION
230
+ # Adds global variable decaration information to the report.
231
+ #
232
+ # Abbreviation below is available.
233
+ # add_gvardcl(...) => GVARDCL(...)
234
+ #
235
+ # === PARAMETER
236
+ # _location_:: Location -- Location where the declaration appears.
237
+ # _variable_name_:: String -- Global variable name.
238
+ # _type_rep_:: String -- Type representation string.
239
+ #
240
+ # === RETURN VALUE
241
+ # None.
242
+ def add_gvardcl(location, variable_name, type_rep)
243
+ add_code_struct(GVarDcl.new(location, variable_name, type_rep))
244
+ end
245
+ alias :GVARDCL :add_gvardcl
246
+ module_function :add_gvardcl, :GVARDCL
247
+
248
+ # === DESCRIPTION
249
+ # Adds function declaration information to the report.
250
+ #
251
+ # Abbreviation below is available.
252
+ # add_funcdcl(...) => FUNCDCL(...)
253
+ #
254
+ # === PARAMETER
255
+ # _location_:: Location -- Location where the declaration appears.
256
+ # _function_linkage_type_:: String -- Function linkage type string.
257
+ # _function_scope_type_:: String -- Declaration scope type string.
258
+ # _function_identifier_:: String -- Function identifier.
259
+ #
260
+ # === RETURN VALUE
261
+ # None.
262
+ def add_funcdcl(location, function_linkage_type, function_scope_type,
263
+ function_identifier)
264
+ add_code_struct(FuncDcl.new(location, function_linkage_type,
265
+ function_scope_type, function_identifier))
266
+ end
267
+ alias :FUNCDCL :add_funcdcl
268
+ module_function :add_funcdcl, :FUNCDCL
269
+
270
+ # === DESCRIPTION
271
+ # Adds variable definition information to the report.
272
+ #
273
+ # Abbreviation below is available.
274
+ # add_vardef(...) => VARDEF(...)
275
+ #
276
+ # === PARAMETER
277
+ # _location_:: Location -- Location where the definition appears.
278
+ # _var_linkage_type_:: String -- Variable linkage type string.
279
+ # _var_scope_type_:: String -- Variable scope type string.
280
+ # _storage_class_type_:: String -- Variable storage class type.
281
+ # _variable_name_:: String -- Variable name.
282
+ # _type_rep_:: String -- Variable type representation string.
283
+ #
284
+ # === RETURN VALUE
285
+ # None.
286
+ def add_vardef(location, var_linkage_type, var_scope_type,
287
+ storage_class_type, variable_name, type_rep)
288
+ add_code_struct(VarDef.new(location, var_linkage_type, var_scope_type,
289
+ storage_class_type, variable_name, type_rep))
290
+ end
291
+ alias :VARDEF :add_vardef
292
+ module_function :add_vardef, :VARDEF
293
+
294
+ # === DESCRIPTION
295
+ # Adds function definition information to the report.
296
+ #
297
+ # Abbreviation below is available.
298
+ # add_funcdef(...) => FUNCDEF(...)
299
+ #
300
+ # === PARAMETER
301
+ # _location_:: Location -- Location where the definition appears.
302
+ # _function_linkage_type_:: String -- Function linkage type string.
303
+ # _function_scope_type_:: String -- Definition scope type string.
304
+ # _function_identifier_:: String -- Function identifier.
305
+ # _lines_:: Integer -- Physical lines.
306
+ #
307
+ # === RETURN VALUE
308
+ # None.
309
+ def add_funcdef(location, function_linkage_type, function_scope_type,
310
+ function_identifier, lines)
311
+ add_code_struct(FuncDef.new(location, function_linkage_type,
312
+ function_scope_type, function_identifier,
313
+ lines))
314
+ end
315
+ alias :FUNCDEF :add_funcdef
316
+ module_function :add_funcdef, :FUNCDEF
317
+
318
+ # === DESCRIPTION
319
+ # Adds macro definition information to the report.
320
+ #
321
+ # Abbreviation below is available.
322
+ # add_macrodef(...) => MACRODEF(...)
323
+ #
324
+ # === PARAMETER
325
+ # _location_:: Location -- Location where the definition appears.
326
+ # _macro_name_:: String -- Macro name.
327
+ # _macro_type_:: String -- Macro type string.
328
+ #
329
+ # === RETURN VALUE
330
+ # None.
331
+ def add_macrodef(location, macro_name, macro_type)
332
+ add_code_struct(MacroDef.new(location, macro_name, macro_type))
333
+ end
334
+ alias :MACRODEF :add_macrodef
335
+ module_function :add_macrodef, :MACRODEF
336
+
337
+ # === DESCRIPTION
338
+ # Adds label definition information to the report.
339
+ #
340
+ # Abbreviation below is available.
341
+ # add_labeldef(...) => LABELDEF(...)
342
+ #
343
+ # === PARAMETER
344
+ # _location_:: Location -- Location where the definition appears.
345
+ # _label_name_:: String -- Label name.
346
+ #
347
+ # === RETURN VALUE
348
+ # None.
349
+ def add_labeldef(location, label_name)
350
+ add_code_struct(LabelDef.new(location, label_name))
351
+ end
352
+ alias :LABELDEF :add_labeldef
353
+ module_function :add_labeldef, :LABELDEF
354
+
355
+ # === DESCRIPTION
356
+ # Adds initialization information to the report.
357
+ #
358
+ # Abbreviation below is available.
359
+ # add_initialization(...) => INITIALIZATION(...)
360
+ #
361
+ # === PARAMETER
362
+ # _location_:: Location -- Location where the variable appears.
363
+ # _variable_name_:: String -- Initialized variable name.
364
+ # _initializer_rep_:: String -- Initializer representation.
365
+ #
366
+ # === RETURN VALUE
367
+ # None.
368
+ def add_initialization(location, variable_name, initializer_rep)
369
+ add_code_struct(Initialization.new(location, variable_name,
370
+ initializer_rep))
371
+ end
372
+ alias :INITIALIZATION :add_initialization
373
+ module_function :add_initialization, :INITIALIZATION
374
+
375
+ # === DESCRIPTION
376
+ # Adds assignment information to the report.
377
+ #
378
+ # Abbreviation below is available.
379
+ # add_assignment(...) => ASSIGNMENT(...)
380
+ #
381
+ # === PARAMETER
382
+ # _location_:: Location -- Location where the variable appears.
383
+ # _variable_name_:: String -- Assigned variable name.
384
+ # _assignment_rep_:: String -- Assignment expression representation.
385
+ #
386
+ # === RETURN VALUE
387
+ # None.
388
+ def add_assignment(location, variable_name, assignment_rep)
389
+ add_code_struct(Assignment.new(location, variable_name,
390
+ assignment_rep))
391
+ end
392
+ alias :ASSIGNMENT :add_assignment
393
+ module_function :add_assignment, :ASSIGNMENT
394
+
395
+ # === DESCRIPTION
396
+ # Adds header include information to the report.
397
+ #
398
+ # Abbreviation below is available.
399
+ # add_include(...) => INCLUDE(...)
400
+ #
401
+ # === PARAMETER
402
+ # _location_:: Location -- Location where the directive appears.
403
+ # _included_fpath_:: Pathname -- Path name of the included file.
404
+ #
405
+ # === RETURN VALUE
406
+ # None.
407
+ def add_include(location, included_fpath)
408
+ add_code_struct(Include.new(location, included_fpath))
409
+ end
410
+ alias :INCLUDE :add_include
411
+ module_function :add_include, :INCLUDE
412
+
413
+ # === DESCRIPTION
414
+ # Adds function call information to the report.
415
+ #
416
+ # Abbreviation below is available.
417
+ # add_call(...) => CALL(...)
418
+ #
419
+ # === PARAMETER
420
+ # _location_:: Location -- Location where the function call appears.
421
+ # _caller_function_:: FunctionIdentifier -- Calling function identifier.
422
+ # _callee_function_:: FunctionIdentifier -- Called function identifier.
423
+ def add_call(location, caller_function, callee_function)
424
+ add_code_struct(Call.new(location, caller_function, callee_function))
425
+ end
426
+ alias :CALL :add_call
427
+ module_function :add_call, :CALL
428
+
429
+ # === DESCRIPTION
430
+ # Adds variable cross reference information to the report.
431
+ #
432
+ # Abbreviation below is available.
433
+ # add_xref_variable(...) => XREF_VAR(...)
434
+ #
435
+ # === PARAMETER
436
+ # _location_:: Location -- Location where the cross-ref appears.
437
+ # _accessor_function_:: FunctionIdentifier -- Accessing function
438
+ # identifier.
439
+ # _access_type_:: String -- Access type string.
440
+ # _accessee_variable_:: String -- Accessed variable name.
441
+ #
442
+ # === RETURN VALUE
443
+ # None.
444
+ def add_xref_variable(location, accessor_function, access_type,
445
+ accessee_variable)
446
+ add_code_struct(XRefVar.new(location, accessor_function, access_type,
447
+ accessee_variable))
448
+ end
449
+ alias :XREF_VAR :add_xref_variable
450
+ module_function :add_xref_variable, :XREF_VAR
451
+
452
+ # === DESCRIPTION
453
+ # Adds function cross reference information to the report.
454
+ #
455
+ # Abbreviation below is available.
456
+ # add_xref_function(...) => XREF_FUNC(...)
457
+ #
458
+ # === PARAMETER
459
+ # _location_:: Location -- Location where the cross-ref appears.
460
+ # _accessor_function_:: FunctionIdentifier -- Accessing function
461
+ # identifier.
462
+ # _access_type_:: String -- Access type string.
463
+ # _accessee_function_:: FunctionIdentifier -- Accessed function identifier.
464
+ #
465
+ # === RETURN VALUE
466
+ # None.
467
+ def add_xref_function(location, accessor_function, access_type,
468
+ accessee_function)
469
+ add_code_struct(XRefFunc.new(location, accessor_function, access_type,
470
+ accessee_function))
471
+ end
472
+ alias :XREF_FUNC :add_xref_function
473
+ module_function :add_xref_function, :XREF_FUNC
474
+
475
+ def add_literal(location, literal_type, literal_prefix, literal_suffix,
476
+ literal_value)
477
+ add_code_struct(Literal.new(location, literal_type, literal_prefix,
478
+ literal_suffix, literal_value))
479
+ end
480
+ alias :LIT :add_literal
481
+ module_function :add_literal, :LIT
482
+
483
+ def add_pp_directive(location, pp_directive, pp_tokens)
484
+ add_code_struct(PPDirective.new(location, pp_directive, pp_tokens))
485
+ end
486
+ alias :PP_DIRECTIVE :add_pp_directive
487
+ module_function :add_pp_directive, :PP_DIRECTIVE
488
+
489
+ # === DESCRIPTION
490
+ # Adds code structure information to the report.
491
+ #
492
+ # === PARAMETER
493
+ # _code_struct_:: CodeStructure -- Code structure information to be added.
494
+ #
495
+ # === RETURN VALUE
496
+ # None.
497
+ def add_code_struct(code_struct)
498
+ report.add_code_struct(code_struct)
499
+ nil
500
+ end
501
+ module_function :add_code_struct
502
+
503
+ def add_FL_STMT(fpath, statement_count)
504
+ add_code_metric(FL_STMT_Metric.new(fpath, statement_count))
505
+ end
506
+ alias :FL_STMT :add_FL_STMT
507
+ module_function :add_FL_STMT, :FL_STMT
508
+
509
+ def add_FL_FUNC(fpath, function_count)
510
+ add_code_metric(FL_FUNC_Metric.new(fpath, function_count))
511
+ end
512
+ alias :FL_FUNC :add_FL_FUNC
513
+ module_function :add_FL_FUNC, :FL_FUNC
514
+
515
+ def add_FN_STMT(function_identifier, location, statement_count)
516
+ add_code_metric(FN_STMT_Metric.new(function_identifier, location,
517
+ statement_count))
518
+ end
519
+ alias :FN_STMT :add_FN_STMT
520
+ module_function :add_FN_STMT, :FN_STMT
521
+
522
+ def add_FN_UNRC(function_identifier, location, unreached_statement_count)
523
+ add_code_metric(FN_UNRC_Metric.new(function_identifier, location,
524
+ unreached_statement_count))
525
+ end
526
+ alias :FN_UNRC :add_FN_UNRC
527
+ module_function :add_FN_UNRC, :FN_UNRC
528
+
529
+ def add_FN_LINE(function_identifier, location, total_lines)
530
+ add_code_metric(FN_LINE_Metric.new(function_identifier, location,
531
+ total_lines))
532
+ end
533
+ alias :FN_LINE :add_FN_LINE
534
+ module_function :add_FN_LINE, :FN_LINE
535
+
536
+ def add_FN_PARA(function_identifier, location, parameter_count)
537
+ add_code_metric(FN_PARA_Metric.new(function_identifier, location,
538
+ parameter_count))
539
+ end
540
+ alias :FN_PARA :add_FN_PARA
541
+ module_function :add_FN_PARA, :FN_PARA
542
+
543
+ def add_FN_UNUV(function_identifier, location, useless_variable_count)
544
+ add_code_metric(FN_UNUV_Metric.new(function_identifier, location,
545
+ useless_variable_count))
546
+ end
547
+ alias :FN_UNUV :add_FN_UNUV
548
+ module_function :add_FN_UNUV, :FN_UNUV
549
+
550
+ def add_FN_CSUB(function_identifier, location, function_call_count)
551
+ add_code_metric(FN_CSUB_Metric.new(function_identifier, location,
552
+ function_call_count))
553
+ end
554
+ alias :FN_CSUB :add_FN_CSUB
555
+ module_function :add_FN_CSUB, :FN_CSUB
556
+
557
+ def add_FN_GOTO(function_identifier, location, goto_count)
558
+ add_code_metric(FN_GOTO_Metric.new(function_identifier, location,
559
+ goto_count))
560
+ end
561
+ alias :FN_GOTO :add_FN_GOTO
562
+ module_function :add_FN_GOTO, :FN_GOTO
563
+
564
+ def add_FN_RETN(function_identifier, location, return_count)
565
+ add_code_metric(FN_RETN_Metric.new(function_identifier, location,
566
+ return_count))
567
+ end
568
+ alias :FN_RETN :add_FN_RETN
569
+ module_function :add_FN_RETN, :FN_RETN
570
+
571
+ def add_FN_UELS(function_identifier, location, if_statement_count)
572
+ add_code_metric(FN_UELS_Metric.new(function_identifier, location,
573
+ if_statement_count))
574
+ end
575
+ alias :FN_UELS :add_FN_UELS
576
+ module_function :add_FN_UELS, :FN_UELS
577
+
578
+ def add_FN_NEST(function_identifier, location, max_nest_level)
579
+ add_code_metric(FN_NEST_Metric.new(function_identifier, location,
580
+ max_nest_level))
581
+ end
582
+ alias :FN_NEST :add_FN_NEST
583
+ module_function :add_FN_NEST, :FN_NEST
584
+
585
+ def add_FN_PATH(function_identifier, location, path_count)
586
+ add_code_metric(FN_PATH_Metric.new(function_identifier, location,
587
+ path_count))
588
+ end
589
+ alias :FN_PATH :add_FN_PATH
590
+ module_function :add_FN_PATH, :FN_PATH
591
+
592
+ def add_FN_CYCM(function_identifier, location, cyclomatic_complexity)
593
+ add_code_metric(FN_CYCM_Metric.new(function_identifier, location,
594
+ cyclomatic_complexity))
595
+ end
596
+ alias :FN_CYCM :add_FN_CYCM
597
+ module_function :add_FN_CYCM, :FN_CYCM
598
+
599
+ def add_FN_CALL(function_signature, location, caller_count)
600
+ add_code_metric(FN_CALL_Metric.new(function_signature, location,
601
+ caller_count))
602
+ end
603
+ alias :FN_CALL :add_FN_CALL
604
+ module_function :add_FN_CALL, :FN_CALL
605
+
606
+ def add_code_metric(code_metric)
607
+ report.add_code_metric(code_metric)
608
+ nil
609
+ end
610
+ module_function :add_code_metric
611
+ end
612
+
613
+ CodeExtraction.class_eval { include ReportUtil }
614
+ MessageDetection.class_eval { extend MessageUniqueness; include ReportUtil }
615
+ MetricMeasurement.class_eval { include ReportUtil }
616
+
617
+ end