ruby-lint 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. data.tar.gz.asc +14 -14
  2. data/.gitignore +1 -2
  3. data/.rubocop.yml +59 -0
  4. data/.travis.yml +3 -7
  5. data/.yardopts +2 -2
  6. data/Gemfile +4 -0
  7. data/MANIFEST +103 -67
  8. data/README.md +13 -31
  9. data/Rakefile +1 -6
  10. data/checksum/ruby-lint-0.0.3.gem.sha512 +1 -0
  11. data/debug/memory_usage.rb +14 -0
  12. data/debug/profile.rb +18 -0
  13. data/doc/architecture.md +14 -18
  14. data/doc/changelog.md +29 -0
  15. data/doc/code_analysis.md +12 -12
  16. data/doc/configuration.md +21 -50
  17. data/doc/graphviz/flow.dot +1 -1
  18. data/doc/images/flow.png +0 -0
  19. data/lib/ruby-lint.rb +33 -19
  20. data/lib/ruby-lint/analysis/argument_amount.rb +84 -0
  21. data/lib/ruby-lint/analysis/base.rb +132 -0
  22. data/lib/ruby-lint/analysis/confusing_variables.rb +26 -0
  23. data/lib/ruby-lint/analysis/pedantics.rb +36 -0
  24. data/lib/ruby-lint/analysis/shadowing_variables.rb +47 -0
  25. data/lib/ruby-lint/analysis/undefined_methods.rb +91 -0
  26. data/lib/ruby-lint/analysis/undefined_variables.rb +46 -0
  27. data/lib/ruby-lint/analysis/unused_variables.rb +49 -0
  28. data/lib/ruby-lint/ast/builder.rb +17 -0
  29. data/lib/ruby-lint/ast/node.rb +39 -0
  30. data/lib/ruby-lint/cli.rb +0 -19
  31. data/lib/ruby-lint/cli/analyze.rb +54 -28
  32. data/lib/ruby-lint/cli/ast.rb +21 -6
  33. data/lib/ruby-lint/cli/base.rb +0 -23
  34. data/lib/ruby-lint/configuration.rb +112 -42
  35. data/lib/ruby-lint/constant_loader.rb +10 -28
  36. data/lib/ruby-lint/default_names.rb +19 -0
  37. data/lib/ruby-lint/definition/constant_proxy.rb +56 -0
  38. data/lib/ruby-lint/definition/ruby_method.rb +21 -143
  39. data/lib/ruby-lint/definition/ruby_object.rb +142 -246
  40. data/lib/ruby-lint/definition_builder/base.rb +43 -0
  41. data/lib/ruby-lint/definition_builder/primitive.rb +39 -0
  42. data/lib/ruby-lint/definition_builder/ruby_array.rb +77 -0
  43. data/lib/ruby-lint/definition_builder/ruby_block.rb +34 -0
  44. data/lib/ruby-lint/definition_builder/ruby_class.rb +24 -0
  45. data/lib/ruby-lint/definition_builder/ruby_hash.rb +37 -0
  46. data/lib/ruby-lint/definition_builder/ruby_method.rb +84 -0
  47. data/lib/ruby-lint/definition_builder/ruby_module.rb +68 -0
  48. data/lib/ruby-lint/definition_generator.rb +41 -15
  49. data/lib/ruby-lint/definitions/core/arg0.rb +1 -1
  50. data/lib/ruby-lint/definitions/core/argf.rb +1 -1
  51. data/lib/ruby-lint/definitions/core/argument_error.rb +2 -2
  52. data/lib/ruby-lint/definitions/core/argv.rb +1 -1
  53. data/lib/ruby-lint/definitions/core/array.rb +6 -6
  54. data/lib/ruby-lint/definitions/core/autoload.rb +2 -2
  55. data/lib/ruby-lint/definitions/core/basic_object.rb +3 -3
  56. data/lib/ruby-lint/definitions/core/bignum.rb +2 -2
  57. data/lib/ruby-lint/definitions/core/binding.rb +2 -2
  58. data/lib/ruby-lint/definitions/core/class.rb +2 -2
  59. data/lib/ruby-lint/definitions/core/comparable.rb +1 -1
  60. data/lib/ruby-lint/definitions/core/complex.rb +4 -4
  61. data/lib/ruby-lint/definitions/core/condition_variable.rb +2 -2
  62. data/lib/ruby-lint/definitions/core/continuation.rb +2 -2
  63. data/lib/ruby-lint/definitions/core/data.rb +2 -2
  64. data/lib/ruby-lint/definitions/core/date.rb +34 -34
  65. data/lib/ruby-lint/definitions/core/date_time.rb +26 -26
  66. data/lib/ruby-lint/definitions/core/default_record_separator.rb +1 -1
  67. data/lib/ruby-lint/definitions/core/digest.rb +14 -14
  68. data/lib/ruby-lint/definitions/core/dir.rb +34 -34
  69. data/lib/ruby-lint/definitions/core/encoding.rb +237 -237
  70. data/lib/ruby-lint/definitions/core/encoding_error.rb +2 -2
  71. data/lib/ruby-lint/definitions/core/enumerable.rb +15 -15
  72. data/lib/ruby-lint/definitions/core/enumerator.rb +2 -2
  73. data/lib/ruby-lint/definitions/core/env.rb +1 -1
  74. data/lib/ruby-lint/definitions/core/eoferror.rb +2 -2
  75. data/lib/ruby-lint/definitions/core/erb.rb +22 -22
  76. data/lib/ruby-lint/definitions/core/errno.rb +525 -525
  77. data/lib/ruby-lint/definitions/core/etc.rb +6 -6
  78. data/lib/ruby-lint/definitions/core/exception.rb +2 -2
  79. data/lib/ruby-lint/definitions/core/false.rb +1 -1
  80. data/lib/ruby-lint/definitions/core/false_class.rb +2 -2
  81. data/lib/ruby-lint/definitions/core/fatal_error.rb +2 -2
  82. data/lib/ruby-lint/definitions/core/fiber.rb +2 -2
  83. data/lib/ruby-lint/definitions/core/fiber_error.rb +2 -2
  84. data/lib/ruby-lint/definitions/core/file.rb +68 -68
  85. data/lib/ruby-lint/definitions/core/file_list.rb +2 -2
  86. data/lib/ruby-lint/definitions/core/file_test.rb +1 -1
  87. data/lib/ruby-lint/definitions/core/file_utils.rb +16 -16
  88. data/lib/ruby-lint/definitions/core/fixnum.rb +4 -4
  89. data/lib/ruby-lint/definitions/core/float.rb +16 -16
  90. data/lib/ruby-lint/definitions/core/float_domain_error.rb +2 -2
  91. data/lib/ruby-lint/definitions/core/gc.rb +2 -2
  92. data/lib/ruby-lint/definitions/core/gem.rb +119 -119
  93. data/lib/ruby-lint/definitions/core/hash.rb +14 -14
  94. data/lib/ruby-lint/definitions/core/immediate_value.rb +1 -1
  95. data/lib/ruby-lint/definitions/core/index_error.rb +2 -2
  96. data/lib/ruby-lint/definitions/core/integer.rb +2 -2
  97. data/lib/ruby-lint/definitions/core/interrupt.rb +2 -2
  98. data/lib/ruby-lint/definitions/core/io.rb +38 -38
  99. data/lib/ruby-lint/definitions/core/ioerror.rb +2 -2
  100. data/lib/ruby-lint/definitions/core/kernel.rb +3 -3
  101. data/lib/ruby-lint/definitions/core/key_error.rb +2 -2
  102. data/lib/ruby-lint/definitions/core/load_error.rb +6 -6
  103. data/lib/ruby-lint/definitions/core/local_jump_error.rb +2 -2
  104. data/lib/ruby-lint/definitions/core/main.rb +1 -1
  105. data/lib/ruby-lint/definitions/core/marshal.rb +35 -35
  106. data/lib/ruby-lint/definitions/core/match_data.rb +2 -2
  107. data/lib/ruby-lint/definitions/core/math.rb +7 -7
  108. data/lib/ruby-lint/definitions/core/memory_segmention_error.rb +2 -2
  109. data/lib/ruby-lint/definitions/core/method.rb +2 -2
  110. data/lib/ruby-lint/definitions/core/module.rb +1 -1
  111. data/lib/ruby-lint/definitions/core/monitor.rb +4 -4
  112. data/lib/ruby-lint/definitions/core/monitor_mixin.rb +5 -5
  113. data/lib/ruby-lint/definitions/core/mutex.rb +2 -2
  114. data/lib/ruby-lint/definitions/core/name_error.rb +2 -2
  115. data/lib/ruby-lint/definitions/core/nil.rb +1 -1
  116. data/lib/ruby-lint/definitions/core/nil_class.rb +2 -2
  117. data/lib/ruby-lint/definitions/core/no_memory_error.rb +2 -2
  118. data/lib/ruby-lint/definitions/core/no_method_error.rb +2 -2
  119. data/lib/ruby-lint/definitions/core/not_implemented_error.rb +2 -2
  120. data/lib/ruby-lint/definitions/core/numeric.rb +2 -2
  121. data/lib/ruby-lint/definitions/core/object.rb +2 -2
  122. data/lib/ruby-lint/definitions/core/object_space.rb +1 -1
  123. data/lib/ruby-lint/definitions/core/open_struct.rb +3 -3
  124. data/lib/ruby-lint/definitions/core/option_parser.rb +83 -83
  125. data/lib/ruby-lint/definitions/core/precision.rb +1 -1
  126. data/lib/ruby-lint/definitions/core/primitive_failure.rb +2 -2
  127. data/lib/ruby-lint/definitions/core/proc.rb +2 -2
  128. data/lib/ruby-lint/definitions/core/process.rb +29 -29
  129. data/lib/ruby-lint/definitions/core/psych.rb +149 -149
  130. data/lib/ruby-lint/definitions/core/queue.rb +2 -2
  131. data/lib/ruby-lint/definitions/core/rake.rb +117 -117
  132. data/lib/ruby-lint/definitions/core/rake_file_utils.rb +1 -1
  133. data/lib/ruby-lint/definitions/core/rakeversion.rb +1 -1
  134. data/lib/ruby-lint/definitions/core/random.rb +2 -2
  135. data/lib/ruby-lint/definitions/core/range.rb +4 -4
  136. data/lib/ruby-lint/definitions/core/range_error.rb +2 -2
  137. data/lib/ruby-lint/definitions/core/rational.rb +2 -2
  138. data/lib/ruby-lint/definitions/core/rb_config.rb +3 -3
  139. data/lib/ruby-lint/definitions/core/regexp.rb +28 -28
  140. data/lib/ruby-lint/definitions/core/regexp_error.rb +2 -2
  141. data/lib/ruby-lint/definitions/core/rubinius.rb +1057 -1057
  142. data/lib/ruby-lint/definitions/core/ruby_copyright.rb +1 -1
  143. data/lib/ruby-lint/definitions/core/ruby_description.rb +1 -1
  144. data/lib/ruby-lint/definitions/core/ruby_engine.rb +1 -1
  145. data/lib/ruby-lint/definitions/core/ruby_lint.rb +9 -9
  146. data/lib/ruby-lint/definitions/core/ruby_patchlevel.rb +1 -1
  147. data/lib/ruby-lint/definitions/core/ruby_platform.rb +1 -1
  148. data/lib/ruby-lint/definitions/core/ruby_release_date.rb +1 -1
  149. data/lib/ruby-lint/definitions/core/ruby_version.rb +1 -1
  150. data/lib/ruby-lint/definitions/core/runtime_error.rb +2 -2
  151. data/lib/ruby-lint/definitions/core/scan_error.rb +2 -2
  152. data/lib/ruby-lint/definitions/core/script_error.rb +2 -2
  153. data/lib/ruby-lint/definitions/core/security_error.rb +2 -2
  154. data/lib/ruby-lint/definitions/core/shellwords.rb +1 -1
  155. data/lib/ruby-lint/definitions/core/signal.rb +3 -3
  156. data/lib/ruby-lint/definitions/core/signal_exception.rb +2 -2
  157. data/lib/ruby-lint/definitions/core/singleton.rb +2 -2
  158. data/lib/ruby-lint/definitions/core/sized_queue.rb +2 -2
  159. data/lib/ruby-lint/definitions/core/standard_error.rb +2 -2
  160. data/lib/ruby-lint/definitions/core/stderr.rb +1 -1
  161. data/lib/ruby-lint/definitions/core/stdin.rb +1 -1
  162. data/lib/ruby-lint/definitions/core/stdout.rb +1 -1
  163. data/lib/ruby-lint/definitions/core/stop_iteration.rb +2 -2
  164. data/lib/ruby-lint/definitions/core/string.rb +21 -21
  165. data/lib/ruby-lint/definitions/core/string_io.rb +7 -7
  166. data/lib/ruby-lint/definitions/core/string_scanner.rb +4 -4
  167. data/lib/ruby-lint/definitions/core/struct.rb +20 -20
  168. data/lib/ruby-lint/definitions/core/syck.rb +4 -4
  169. data/lib/ruby-lint/definitions/core/symbol.rb +2 -2
  170. data/lib/ruby-lint/definitions/core/syntax_error.rb +2 -2
  171. data/lib/ruby-lint/definitions/core/system_call_error.rb +2 -2
  172. data/lib/ruby-lint/definitions/core/system_exit.rb +2 -2
  173. data/lib/ruby-lint/definitions/core/system_stack_error.rb +2 -2
  174. data/lib/ruby-lint/definitions/core/thread.rb +6 -6
  175. data/lib/ruby-lint/definitions/core/thread_error.rb +2 -2
  176. data/lib/ruby-lint/definitions/core/thread_group.rb +2 -2
  177. data/lib/ruby-lint/definitions/core/time.rb +3 -3
  178. data/lib/ruby-lint/definitions/core/toplevel_binding.rb +1 -1
  179. data/lib/ruby-lint/definitions/core/true.rb +1 -1
  180. data/lib/ruby-lint/definitions/core/true_class.rb +2 -2
  181. data/lib/ruby-lint/definitions/core/type_error.rb +2 -2
  182. data/lib/ruby-lint/definitions/core/unbound_method.rb +2 -2
  183. data/lib/ruby-lint/definitions/core/unmarshalable.rb +1 -1
  184. data/lib/ruby-lint/definitions/core/unsupported_library_error.rb +2 -2
  185. data/lib/ruby-lint/definitions/core/weak_ref.rb +4 -4
  186. data/lib/ruby-lint/definitions/core/zero_division_error.rb +2 -2
  187. data/lib/ruby-lint/definitions/rails.rb +12 -0
  188. data/lib/ruby-lint/definitions/rails/abstract_controller.rb +335 -0
  189. data/lib/ruby-lint/definitions/rails/action_controller.rb +1244 -0
  190. data/lib/ruby-lint/definitions/rails/action_dispatch.rb +741 -0
  191. data/lib/ruby-lint/definitions/rails/action_mailer.rb +502 -0
  192. data/lib/ruby-lint/definitions/rails/action_pack.rb +16 -0
  193. data/lib/ruby-lint/definitions/rails/action_view.rb +898 -0
  194. data/lib/ruby-lint/definitions/rails/active_model.rb +437 -0
  195. data/lib/ruby-lint/definitions/rails/active_record.rb +2901 -0
  196. data/lib/ruby-lint/definitions/rails/active_support.rb +1963 -0
  197. data/lib/ruby-lint/definitions/rails/arel.rb +665 -0
  198. data/lib/ruby-lint/definitions/rails/rails.rb +452 -0
  199. data/lib/ruby-lint/definitions/rails/sprockets.rb +968 -0
  200. data/lib/ruby-lint/generated_constant.rb +33 -0
  201. data/lib/ruby-lint/helper/constant_paths.rb +30 -21
  202. data/lib/ruby-lint/inspector.rb +20 -2
  203. data/lib/ruby-lint/iterator.rb +11 -171
  204. data/lib/ruby-lint/nested_stack.rb +46 -0
  205. data/lib/ruby-lint/parser.rb +24 -806
  206. data/lib/ruby-lint/report.rb +2 -30
  207. data/lib/ruby-lint/report/entry.rb +2 -2
  208. data/lib/ruby-lint/runner.rb +81 -0
  209. data/lib/ruby-lint/template/definition.erb +12 -8
  210. data/lib/ruby-lint/variable_predicates.rb +16 -58
  211. data/lib/ruby-lint/version.rb +1 -1
  212. data/lib/ruby-lint/virtual_machine.rb +1044 -0
  213. data/ruby-lint.gemspec +17 -7
  214. data/spec/fixtures/complex/rails/basic_controller.rb +9 -0
  215. data/spec/fixtures/complex/rcap.rb +38 -0
  216. data/spec/fixtures/complex/slop.rb +680 -0
  217. data/spec/fixtures/config.yml +8 -0
  218. data/spec/fixtures/invalid.rb +3 -0
  219. data/spec/fixtures/invalid_2.rb +3 -0
  220. data/spec/fixtures/syntax_error.rb +1 -0
  221. data/spec/fixtures/valid.rb +3 -0
  222. data/spec/helper.rb +6 -0
  223. data/spec/ruby-lint/{analyze → analysis}/argument_amount.rb +7 -7
  224. data/spec/ruby-lint/analysis/confusing_variables.rb +46 -0
  225. data/spec/ruby-lint/analysis/pedantics.rb +43 -0
  226. data/spec/ruby-lint/{analyze → analysis}/shadowing_variables.rb +5 -5
  227. data/spec/ruby-lint/{analyze → analysis}/undefined_methods.rb +18 -18
  228. data/spec/ruby-lint/{analyze → analysis}/undefined_variables.rb +19 -25
  229. data/spec/ruby-lint/{analyze → analysis}/unused_variables.rb +29 -16
  230. data/spec/ruby-lint/ast/node.rb +33 -0
  231. data/spec/ruby-lint/cli/analyze.rb +31 -0
  232. data/spec/ruby-lint/cli/ast.rb +23 -0
  233. data/spec/ruby-lint/configuration.rb +45 -6
  234. data/spec/ruby-lint/definition/constant_proxy.rb +31 -0
  235. data/spec/ruby-lint/definition/dsl.rb +13 -20
  236. data/spec/ruby-lint/definition/ruby_method.rb +65 -148
  237. data/spec/ruby-lint/definition/ruby_object.rb +60 -96
  238. data/spec/ruby-lint/definition_builder/primitive.rb +62 -0
  239. data/spec/ruby-lint/definition_builder/ruby_class.rb +108 -0
  240. data/spec/ruby-lint/definition_builder/ruby_method.rb +53 -0
  241. data/spec/ruby-lint/definition_builder/ruby_module.rb +50 -0
  242. data/spec/ruby-lint/iterator.rb +40 -16
  243. data/spec/ruby-lint/nested_stack.rb +23 -0
  244. data/spec/ruby-lint/parser.rb +14 -0
  245. data/spec/ruby-lint/report.rb +0 -10
  246. data/spec/ruby-lint/report/entry.rb +8 -4
  247. data/spec/ruby-lint/runner.rb +32 -0
  248. data/spec/ruby-lint/virtual_machine/assignments/arrays.rb +87 -0
  249. data/spec/ruby-lint/virtual_machine/assignments/hashes.rb +52 -0
  250. data/spec/ruby-lint/virtual_machine/assignments/optional.rb +41 -0
  251. data/spec/ruby-lint/{definitions_builder → virtual_machine}/assignments/return_values.rb +11 -11
  252. data/spec/ruby-lint/virtual_machine/assignments/variables.rb +85 -0
  253. data/spec/ruby-lint/virtual_machine/associate_nodes.rb +17 -0
  254. data/spec/ruby-lint/virtual_machine/autoloading.rb +31 -0
  255. data/spec/ruby-lint/virtual_machine/blocks.rb +64 -0
  256. data/spec/ruby-lint/virtual_machine/classes/class_methods.rb +21 -0
  257. data/spec/ruby-lint/virtual_machine/classes/extending.rb +104 -0
  258. data/spec/ruby-lint/virtual_machine/classes/redefining.rb +24 -0
  259. data/spec/ruby-lint/virtual_machine/classes/sclass.rb +94 -0
  260. data/spec/ruby-lint/virtual_machine/classes/scoping.rb +60 -0
  261. data/spec/ruby-lint/virtual_machine/complex/rails.rb +18 -0
  262. data/spec/ruby-lint/virtual_machine/complex/rcap.rb +15 -0
  263. data/spec/ruby-lint/virtual_machine/complex/slop.rb +16 -0
  264. data/spec/ruby-lint/{definitions_builder → virtual_machine}/for.rb +2 -2
  265. data/spec/ruby-lint/virtual_machine/freeze.rb +13 -0
  266. data/spec/ruby-lint/virtual_machine/interpolation.rb +12 -0
  267. data/spec/ruby-lint/virtual_machine/methods/defining.rb +40 -0
  268. data/spec/ruby-lint/virtual_machine/methods/exporting.rb +19 -0
  269. data/spec/ruby-lint/virtual_machine/methods/parameters.rb +77 -0
  270. data/spec/ruby-lint/virtual_machine/methods/patching.rb +26 -0
  271. data/spec/ruby-lint/virtual_machine/methods/scoping.rb +63 -0
  272. data/spec/ruby-lint/virtual_machine/methods/visibility.rb +64 -0
  273. data/spec/ruby-lint/{definitions_builder → virtual_machine}/modules.rb +16 -16
  274. data/spec/ruby-lint/virtual_machine/reference_amount.rb +33 -0
  275. data/spec/ruby-lint/virtual_machine/unused.rb +17 -0
  276. data/spec/support/bacon.rb +13 -13
  277. data/spec/support/building.rb +23 -16
  278. data/spec/support/coveralls.rb +5 -0
  279. data/spec/support/fixtures.rb +20 -0
  280. data/spec/support/parsing.rb +3 -5
  281. data/spec/support/simplecov.rb +5 -3
  282. data/task/build.rake +1 -1
  283. data/task/cop.rake +11 -0
  284. data/task/generate.rake +40 -2
  285. data/task/profile.rake +27 -0
  286. data/task/todo.rake +6 -0
  287. data/task/travis.rake +7 -0
  288. metadata +160 -75
  289. metadata.gz.asc +14 -14
  290. data/doc/build/.gitkeep +0 -0
  291. data/lib/ruby-lint/analyze/argument_amount.rb +0 -73
  292. data/lib/ruby-lint/analyze/shadowing_variables.rb +0 -32
  293. data/lib/ruby-lint/analyze/undefined_methods.rb +0 -68
  294. data/lib/ruby-lint/analyze/undefined_variables.rb +0 -72
  295. data/lib/ruby-lint/analyze/unused_variables.rb +0 -48
  296. data/lib/ruby-lint/base.rb +0 -85
  297. data/lib/ruby-lint/definitions_builder.rb +0 -692
  298. data/lib/ruby-lint/helper/conversion.rb +0 -33
  299. data/lib/ruby-lint/helper/current_scope.rb +0 -98
  300. data/lib/ruby-lint/helper/methods.rb +0 -91
  301. data/lib/ruby-lint/node.rb +0 -107
  302. data/lib/ruby-lint/parser_error.rb +0 -30
  303. data/spec/ruby-lint/constant_loader.rb +0 -32
  304. data/spec/ruby-lint/definition/method_calls.rb +0 -26
  305. data/spec/ruby-lint/definitions_builder/assignments/arrays.rb +0 -71
  306. data/spec/ruby-lint/definitions_builder/assignments/hashes.rb +0 -65
  307. data/spec/ruby-lint/definitions_builder/assignments/objects.rb +0 -23
  308. data/spec/ruby-lint/definitions_builder/assignments/optional.rb +0 -22
  309. data/spec/ruby-lint/definitions_builder/assignments/variables.rb +0 -71
  310. data/spec/ruby-lint/definitions_builder/associate_nodes.rb +0 -17
  311. data/spec/ruby-lint/definitions_builder/blocks.rb +0 -40
  312. data/spec/ruby-lint/definitions_builder/classes.rb +0 -230
  313. data/spec/ruby-lint/definitions_builder/methods.rb +0 -147
  314. data/spec/ruby-lint/definitions_builder/reference_amount.rb +0 -31
  315. data/spec/ruby-lint/definitions_builder/unused.rb +0 -15
  316. data/spec/ruby-lint/node.rb +0 -38
  317. data/spec/ruby-lint/parser/assignments.rb +0 -225
  318. data/spec/ruby-lint/parser/classes.rb +0 -110
  319. data/spec/ruby-lint/parser/errors.rb +0 -12
  320. data/spec/ruby-lint/parser/metadata.rb +0 -17
  321. data/spec/ruby-lint/parser/method_definitions.rb +0 -111
  322. data/spec/ruby-lint/parser/methods.rb +0 -217
  323. data/spec/ruby-lint/parser/modules.rb +0 -70
  324. data/spec/ruby-lint/parser/operators.rb +0 -40
  325. data/spec/ruby-lint/parser/statements/begin.rb +0 -55
  326. data/spec/ruby-lint/parser/statements/case.rb +0 -34
  327. data/spec/ruby-lint/parser/statements/defined.rb +0 -11
  328. data/spec/ruby-lint/parser/statements/for.rb +0 -34
  329. data/spec/ruby-lint/parser/statements/if.rb +0 -46
  330. data/spec/ruby-lint/parser/statements/return.rb +0 -14
  331. data/spec/ruby-lint/parser/statements/super.rb +0 -49
  332. data/spec/ruby-lint/parser/statements/unless.rb +0 -42
  333. data/spec/ruby-lint/parser/statements/until.rb +0 -25
  334. data/spec/ruby-lint/parser/statements/while.rb +0 -25
  335. data/spec/ruby-lint/parser/statements/yield.rb +0 -18
  336. data/spec/ruby-lint/parser/types/arrays.rb +0 -47
  337. data/spec/ruby-lint/parser/types/booleans.rb +0 -11
  338. data/spec/ruby-lint/parser/types/constants.rb +0 -32
  339. data/spec/ruby-lint/parser/types/hashes.rb +0 -55
  340. data/spec/ruby-lint/parser/types/nil.rb +0 -7
  341. data/spec/ruby-lint/parser/types/numbers.rb +0 -11
  342. data/spec/ruby-lint/parser/types/procs.rb +0 -11
  343. data/spec/ruby-lint/parser/types/ranges.rb +0 -11
  344. data/spec/ruby-lint/parser/types/regexp.rb +0 -27
  345. data/spec/ruby-lint/parser/types/strings.rb +0 -44
  346. data/spec/ruby-lint/parser/types/symbols.rb +0 -15
  347. data/task/stdlib.rake +0 -23
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,13 +12,13 @@ cert_chain: []
12
12
  date: 2013-04-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: ast
15
+ name: parser
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 2.0.0.pre2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 2.0.0.pre2
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: slop
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -156,13 +156,29 @@ dependencies:
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  - !ruby/object:Gem::Dependency
159
- name: redcarpet
159
+ name: coveralls
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: json
160
176
  requirement: !ruby/object:Gem::Requirement
161
177
  none: false
162
178
  requirements:
163
179
  - - ! '>='
164
180
  - !ruby/object:Gem::Version
165
- version: 2.1.1
181
+ version: '0'
166
182
  type: :development
167
183
  prerelease: false
168
184
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,7 +186,23 @@ dependencies:
170
186
  requirements:
171
187
  - - ! '>='
172
188
  - !ruby/object:Gem::Version
173
- version: 2.1.1
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: kramdown
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
174
206
  description: A linter and static code analysis tool for Ruby.
175
207
  email: yorickpeterse@gmail.com
176
208
  executables:
@@ -179,6 +211,7 @@ extensions: []
179
211
  extra_rdoc_files: []
180
212
  files:
181
213
  - .gitignore
214
+ - .rubocop.yml
182
215
  - .travis.yml
183
216
  - .yardopts
184
217
  - Gemfile
@@ -188,10 +221,13 @@ files:
188
221
  - Rakefile
189
222
  - bin/ruby-lint
190
223
  - checksum/.gitkeep
224
+ - checksum/ruby-lint-0.0.3.gem.sha512
225
+ - debug/memory_usage.rb
226
+ - debug/profile.rb
191
227
  - doc/.gitkeep
192
228
  - doc/DCO.md
193
229
  - doc/architecture.md
194
- - doc/build/.gitkeep
230
+ - doc/changelog.md
195
231
  - doc/code_analysis.md
196
232
  - doc/configuration.md
197
233
  - doc/contributing.md
@@ -201,20 +237,34 @@ files:
201
237
  - doc/images/.gitkeep
202
238
  - doc/images/flow.png
203
239
  - lib/ruby-lint.rb
204
- - lib/ruby-lint/analyze/argument_amount.rb
205
- - lib/ruby-lint/analyze/shadowing_variables.rb
206
- - lib/ruby-lint/analyze/undefined_methods.rb
207
- - lib/ruby-lint/analyze/undefined_variables.rb
208
- - lib/ruby-lint/analyze/unused_variables.rb
209
- - lib/ruby-lint/base.rb
240
+ - lib/ruby-lint/analysis/argument_amount.rb
241
+ - lib/ruby-lint/analysis/base.rb
242
+ - lib/ruby-lint/analysis/confusing_variables.rb
243
+ - lib/ruby-lint/analysis/pedantics.rb
244
+ - lib/ruby-lint/analysis/shadowing_variables.rb
245
+ - lib/ruby-lint/analysis/undefined_methods.rb
246
+ - lib/ruby-lint/analysis/undefined_variables.rb
247
+ - lib/ruby-lint/analysis/unused_variables.rb
248
+ - lib/ruby-lint/ast/builder.rb
249
+ - lib/ruby-lint/ast/node.rb
210
250
  - lib/ruby-lint/cli.rb
211
251
  - lib/ruby-lint/cli/analyze.rb
212
252
  - lib/ruby-lint/cli/ast.rb
213
253
  - lib/ruby-lint/cli/base.rb
214
254
  - lib/ruby-lint/configuration.rb
215
255
  - lib/ruby-lint/constant_loader.rb
256
+ - lib/ruby-lint/default_names.rb
257
+ - lib/ruby-lint/definition/constant_proxy.rb
216
258
  - lib/ruby-lint/definition/ruby_method.rb
217
259
  - lib/ruby-lint/definition/ruby_object.rb
260
+ - lib/ruby-lint/definition_builder/base.rb
261
+ - lib/ruby-lint/definition_builder/primitive.rb
262
+ - lib/ruby-lint/definition_builder/ruby_array.rb
263
+ - lib/ruby-lint/definition_builder/ruby_block.rb
264
+ - lib/ruby-lint/definition_builder/ruby_class.rb
265
+ - lib/ruby-lint/definition_builder/ruby_hash.rb
266
+ - lib/ruby-lint/definition_builder/ruby_method.rb
267
+ - lib/ruby-lint/definition_builder/ruby_module.rb
218
268
  - lib/ruby-lint/definition_generator.rb
219
269
  - lib/ruby-lint/definitions/core.rb
220
270
  - lib/ruby-lint/definitions/core/arg0.rb
@@ -355,107 +405,141 @@ files:
355
405
  - lib/ruby-lint/definitions/core/unsupported_library_error.rb
356
406
  - lib/ruby-lint/definitions/core/weak_ref.rb
357
407
  - lib/ruby-lint/definitions/core/zero_division_error.rb
358
- - lib/ruby-lint/definitions_builder.rb
408
+ - lib/ruby-lint/definitions/rails.rb
409
+ - lib/ruby-lint/definitions/rails/abstract_controller.rb
410
+ - lib/ruby-lint/definitions/rails/action_controller.rb
411
+ - lib/ruby-lint/definitions/rails/action_dispatch.rb
412
+ - lib/ruby-lint/definitions/rails/action_mailer.rb
413
+ - lib/ruby-lint/definitions/rails/action_pack.rb
414
+ - lib/ruby-lint/definitions/rails/action_view.rb
415
+ - lib/ruby-lint/definitions/rails/active_model.rb
416
+ - lib/ruby-lint/definitions/rails/active_record.rb
417
+ - lib/ruby-lint/definitions/rails/active_support.rb
418
+ - lib/ruby-lint/definitions/rails/arel.rb
419
+ - lib/ruby-lint/definitions/rails/rails.rb
420
+ - lib/ruby-lint/definitions/rails/sprockets.rb
359
421
  - lib/ruby-lint/extensions/string.rb
422
+ - lib/ruby-lint/generated_constant.rb
360
423
  - lib/ruby-lint/helper/constant_paths.rb
361
- - lib/ruby-lint/helper/conversion.rb
362
- - lib/ruby-lint/helper/current_scope.rb
363
- - lib/ruby-lint/helper/methods.rb
364
424
  - lib/ruby-lint/inspector.rb
365
425
  - lib/ruby-lint/iterator.rb
366
- - lib/ruby-lint/node.rb
426
+ - lib/ruby-lint/nested_stack.rb
367
427
  - lib/ruby-lint/parser.rb
368
- - lib/ruby-lint/parser_error.rb
369
428
  - lib/ruby-lint/presenter/json.rb
370
429
  - lib/ruby-lint/presenter/text.rb
371
430
  - lib/ruby-lint/report.rb
372
431
  - lib/ruby-lint/report/entry.rb
432
+ - lib/ruby-lint/runner.rb
373
433
  - lib/ruby-lint/template/definition.erb
374
434
  - lib/ruby-lint/template/scope.rb
375
435
  - lib/ruby-lint/variable_predicates.rb
376
436
  - lib/ruby-lint/version.rb
437
+ - lib/ruby-lint/virtual_machine.rb
377
438
  - ruby-lint.gemspec
439
+ - spec/fixtures/complex/rails/basic_controller.rb
440
+ - spec/fixtures/complex/rcap.rb
441
+ - spec/fixtures/complex/slop.rb
442
+ - spec/fixtures/config.yml
443
+ - spec/fixtures/invalid.rb
444
+ - spec/fixtures/invalid_2.rb
445
+ - spec/fixtures/syntax_error.rb
446
+ - spec/fixtures/valid.rb
378
447
  - spec/helper.rb
379
- - spec/ruby-lint/analyze/argument_amount.rb
380
- - spec/ruby-lint/analyze/shadowing_variables.rb
381
- - spec/ruby-lint/analyze/undefined_methods.rb
382
- - spec/ruby-lint/analyze/undefined_variables.rb
383
- - spec/ruby-lint/analyze/unused_variables.rb
448
+ - spec/ruby-lint/analysis/argument_amount.rb
449
+ - spec/ruby-lint/analysis/confusing_variables.rb
450
+ - spec/ruby-lint/analysis/pedantics.rb
451
+ - spec/ruby-lint/analysis/shadowing_variables.rb
452
+ - spec/ruby-lint/analysis/undefined_methods.rb
453
+ - spec/ruby-lint/analysis/undefined_variables.rb
454
+ - spec/ruby-lint/analysis/unused_variables.rb
455
+ - spec/ruby-lint/ast/node.rb
456
+ - spec/ruby-lint/cli/analyze.rb
457
+ - spec/ruby-lint/cli/ast.rb
384
458
  - spec/ruby-lint/configuration.rb
385
- - spec/ruby-lint/constant_loader.rb
459
+ - spec/ruby-lint/definition/constant_proxy.rb
386
460
  - spec/ruby-lint/definition/dsl.rb
387
- - spec/ruby-lint/definition/method_calls.rb
388
461
  - spec/ruby-lint/definition/ruby_method.rb
389
462
  - spec/ruby-lint/definition/ruby_object.rb
390
- - spec/ruby-lint/definitions_builder/assignments/arrays.rb
391
- - spec/ruby-lint/definitions_builder/assignments/hashes.rb
392
- - spec/ruby-lint/definitions_builder/assignments/objects.rb
393
- - spec/ruby-lint/definitions_builder/assignments/optional.rb
394
- - spec/ruby-lint/definitions_builder/assignments/return_values.rb
395
- - spec/ruby-lint/definitions_builder/assignments/variables.rb
396
- - spec/ruby-lint/definitions_builder/associate_nodes.rb
397
- - spec/ruby-lint/definitions_builder/blocks.rb
398
- - spec/ruby-lint/definitions_builder/classes.rb
399
- - spec/ruby-lint/definitions_builder/for.rb
400
- - spec/ruby-lint/definitions_builder/methods.rb
401
- - spec/ruby-lint/definitions_builder/modules.rb
402
- - spec/ruby-lint/definitions_builder/reference_amount.rb
403
- - spec/ruby-lint/definitions_builder/unused.rb
463
+ - spec/ruby-lint/definition_builder/primitive.rb
464
+ - spec/ruby-lint/definition_builder/ruby_class.rb
465
+ - spec/ruby-lint/definition_builder/ruby_method.rb
466
+ - spec/ruby-lint/definition_builder/ruby_module.rb
404
467
  - spec/ruby-lint/extensions/string.rb
405
468
  - spec/ruby-lint/iterator.rb
406
- - spec/ruby-lint/node.rb
407
- - spec/ruby-lint/parser/assignments.rb
408
- - spec/ruby-lint/parser/classes.rb
409
- - spec/ruby-lint/parser/errors.rb
410
- - spec/ruby-lint/parser/metadata.rb
411
- - spec/ruby-lint/parser/method_definitions.rb
412
- - spec/ruby-lint/parser/methods.rb
413
- - spec/ruby-lint/parser/modules.rb
414
- - spec/ruby-lint/parser/operators.rb
415
- - spec/ruby-lint/parser/statements/begin.rb
416
- - spec/ruby-lint/parser/statements/case.rb
417
- - spec/ruby-lint/parser/statements/defined.rb
418
- - spec/ruby-lint/parser/statements/for.rb
419
- - spec/ruby-lint/parser/statements/if.rb
420
- - spec/ruby-lint/parser/statements/return.rb
421
- - spec/ruby-lint/parser/statements/super.rb
422
- - spec/ruby-lint/parser/statements/unless.rb
423
- - spec/ruby-lint/parser/statements/until.rb
424
- - spec/ruby-lint/parser/statements/while.rb
425
- - spec/ruby-lint/parser/statements/yield.rb
426
- - spec/ruby-lint/parser/types/arrays.rb
427
- - spec/ruby-lint/parser/types/booleans.rb
428
- - spec/ruby-lint/parser/types/constants.rb
429
- - spec/ruby-lint/parser/types/hashes.rb
430
- - spec/ruby-lint/parser/types/nil.rb
431
- - spec/ruby-lint/parser/types/numbers.rb
432
- - spec/ruby-lint/parser/types/procs.rb
433
- - spec/ruby-lint/parser/types/ranges.rb
434
- - spec/ruby-lint/parser/types/regexp.rb
435
- - spec/ruby-lint/parser/types/strings.rb
436
- - spec/ruby-lint/parser/types/symbols.rb
469
+ - spec/ruby-lint/nested_stack.rb
470
+ - spec/ruby-lint/parser.rb
437
471
  - spec/ruby-lint/presenter/json.rb
438
472
  - spec/ruby-lint/presenter/text.rb
439
473
  - spec/ruby-lint/report.rb
440
474
  - spec/ruby-lint/report/entry.rb
475
+ - spec/ruby-lint/runner.rb
476
+ - spec/ruby-lint/virtual_machine/assignments/arrays.rb
477
+ - spec/ruby-lint/virtual_machine/assignments/hashes.rb
478
+ - spec/ruby-lint/virtual_machine/assignments/optional.rb
479
+ - spec/ruby-lint/virtual_machine/assignments/return_values.rb
480
+ - spec/ruby-lint/virtual_machine/assignments/variables.rb
481
+ - spec/ruby-lint/virtual_machine/associate_nodes.rb
482
+ - spec/ruby-lint/virtual_machine/autoloading.rb
483
+ - spec/ruby-lint/virtual_machine/blocks.rb
484
+ - spec/ruby-lint/virtual_machine/classes/class_methods.rb
485
+ - spec/ruby-lint/virtual_machine/classes/extending.rb
486
+ - spec/ruby-lint/virtual_machine/classes/redefining.rb
487
+ - spec/ruby-lint/virtual_machine/classes/sclass.rb
488
+ - spec/ruby-lint/virtual_machine/classes/scoping.rb
489
+ - spec/ruby-lint/virtual_machine/complex/rails.rb
490
+ - spec/ruby-lint/virtual_machine/complex/rcap.rb
491
+ - spec/ruby-lint/virtual_machine/complex/slop.rb
492
+ - spec/ruby-lint/virtual_machine/for.rb
493
+ - spec/ruby-lint/virtual_machine/freeze.rb
494
+ - spec/ruby-lint/virtual_machine/interpolation.rb
495
+ - spec/ruby-lint/virtual_machine/methods/defining.rb
496
+ - spec/ruby-lint/virtual_machine/methods/exporting.rb
497
+ - spec/ruby-lint/virtual_machine/methods/parameters.rb
498
+ - spec/ruby-lint/virtual_machine/methods/patching.rb
499
+ - spec/ruby-lint/virtual_machine/methods/scoping.rb
500
+ - spec/ruby-lint/virtual_machine/methods/visibility.rb
501
+ - spec/ruby-lint/virtual_machine/modules.rb
502
+ - spec/ruby-lint/virtual_machine/reference_amount.rb
503
+ - spec/ruby-lint/virtual_machine/unused.rb
441
504
  - spec/support/bacon.rb
442
505
  - spec/support/building.rb
506
+ - spec/support/coveralls.rb
443
507
  - spec/support/definitions.rb
508
+ - spec/support/fixtures.rb
444
509
  - spec/support/parsing.rb
445
510
  - spec/support/simplecov.rb
446
511
  - task/build.rake
447
512
  - task/checksum.rake
513
+ - task/cop.rake
448
514
  - task/coverage.rake
449
515
  - task/doc.rake
450
516
  - task/generate.rake
451
517
  - task/graphviz.rake
452
518
  - task/manifest.rake
453
- - task/stdlib.rake
519
+ - task/profile.rake
454
520
  - task/tag.rake
455
521
  - task/test.rake
522
+ - task/todo.rake
523
+ - task/travis.rake
456
524
  homepage: https://github.com/yorickpeterse/ruby-lint/
457
- licenses: []
458
- post_install_message:
525
+ licenses:
526
+ - MIT
527
+ post_install_message: ! 'Thanks for installing ruby-lint. Keep in mind that ruby-lint
528
+ is still a young
529
+
530
+ project and as such there will be bugs, false positives and otherwise weird
531
+
532
+ behaviour. If you encounter any of these issues please report them (and provide
533
+
534
+ some sample code) at the issue tracker:
535
+
536
+
537
+ https://github.com/YorickPeterse/ruby-lint/issues/new
538
+
539
+
540
+ If you have any further questions you can find me on Twitter/Freenode/Github
541
+
542
+ using the handle "yorickpeterse".'
459
543
  rdoc_options: []
460
544
  require_paths:
461
545
  - lib
@@ -478,3 +562,4 @@ signing_key:
478
562
  specification_version: 3
479
563
  summary: A linter and static code analysis tool for Ruby.
480
564
  test_files: []
565
+ has_rdoc: yard
metadata.gz.asc CHANGED
@@ -1,17 +1,17 @@
1
1
  -----BEGIN PGP SIGNATURE-----
2
- Version: GnuPG v2.0.19 (GNU/Linux)
2
+ Version: GnuPG v2.0.20 (GNU/Linux)
3
3
 
4
- iQIcBAABAgAGBQJRdZvaAAoJEPMbESk2SfREY1gP/0UTWkTwDBrtPXxDQSF6M0lk
5
- v2AxKsRx/fyQZx6QAgNuCR+aOGKTHwiyHzJ6Kkk8uRqH8x4XUUj8drl3ASToZxGc
6
- hYrm26FPKUovqkoyW9zP6Ybp1GhkEdSLq1MoFg5ZZAgvRovz4RXLHQulwMo0f2Yd
7
- 0KFHMYQyyEH+S+nq7gt0ZBtsxPzoLG4l2g4QV9d4iie0mU7hXOFmhW6QQ02sx9EP
8
- qTEFHCIalpGBLHfCL+GEPo8P6ro1jSMRqWCvB15mtdGtqCKpg4u/EB5c2YQsgJAl
9
- UGFUOIEYw6UyfEqu3D0gPmNf8PUviL3BAI6CUBeN0tV6XNBzgcEAHrCqY+wwoC9b
10
- gFzRLW2q7A1Kq41NRNCUnrrc81ojEZeA/9V+y5hJWrQWPTQtTPeFcLbPUqDkh6FX
11
- yX+CjhHoKvG52d1IcpExctKr74jXUmyQVPxrFEfumt8HrMTqGuPVaKAUI10wZvAE
12
- tWAtTioTQbJ+2AUQnS0J33CVEZbih1MwDHUCnJQEYV1wqacW7sBPaV5OBFFXBcr7
13
- xENLrtctZFGfQNxAFZEasLsTOmnY8sekW8axAs2Lb3VPd8sK1MXYFWnlFzkZc+jR
14
- kGxzEHdmWytp4y2UIj2rnNQqv2y6muB61b53CbFJT3LIv+KhCb09/leg7oa7yYu5
15
- +fQy0GBWGfzgWdidG/8z
16
- =0Dl7
4
+ iQIcBAABAgAGBQJR4u6hAAoJEPMbESk2SfREnqUP/R7Tapkj2dpmTWb0bXJmInfs
5
+ TIBaj0XehyDCp6+miY89xsZ/H7BhS44qtnZRP1fxUdXQ6bs1aYZJagby3LnQzqH3
6
+ kqOrHYSmXXPiM7abv+UFn/t9qYKqD1htgY2X+Mp8kMI+kGqj109YIMP+8o4VwiXL
7
+ Ltpxr57mDe/kMEB6+cFyHlMur6VV2Qpsfee36/QG8moB9BgS6qrX8DvCrVb92dV1
8
+ +32dzVVAszVXtdkwjurv7fDVdb/CS7QfSkoijGhQ7cquNPihfGy0j0ydtx8cpi+n
9
+ zjAaO19fE8tb/sqrHMDUvx88cbd1dXQlfovN7O4cWeyP95fE1zD14VbjSBPSK1jx
10
+ RMfOQS5bQJ3fa9VbBRwm85vXgSm4vqqSr2lwigyk3WxMj0mPVycXUQH7GrWdY9f8
11
+ hQ7Vt2jgFihQ3p9hE6eAo2Gd4w2ZB/qIdMm6kKjd2F3km8kt45eZtAX4Cp6gdUo5
12
+ wGywos0xMFphqZip8bSXdvZ8M/EQipQpkR2rm8XVo6bAschktotulrkoxY/yHZ/R
13
+ TPO0J0yBu1dYeJDzr3jHsKYGyy7S2c3mvRV4IoKAmFPlSSevQg/7V3H9QQ93mGmc
14
+ hG7Wo8zYiDqdfn6OZGlbx0AySXFr9xtdVVIMxWpsoqRtSglYHYror23DtAoF40Ic
15
+ WAX2NFSm2sLwqfZvmnq6
16
+ =3Ibf
17
17
  -----END PGP SIGNATURE-----
data/doc/build/.gitkeep DELETED
File without changes
@@ -1,73 +0,0 @@
1
- module RubyLint
2
- module Analyze
3
- ##
4
- # The ArgumentAmount class is an analysis class that verifies the amount of
5
- # arguments given with each method call and adds errors whenever an invalid
6
- # amount was given.
7
- #
8
- class ArgumentAmount < Iterator
9
- include Helper::Methods
10
-
11
- ##
12
- # @param [RubyLint::Node] node
13
- #
14
- def on_method(node)
15
- return if invalid_receiver?(node) || !method_defined?(node)
16
-
17
- definition = lookup_method(node)
18
- specified = node.gather_arguments.length
19
- minimum = definition.length_of(:arguments)
20
- optional = definition.length_of(:optional_arguments)
21
- maximum = minimum + optional
22
- rest = !definition.rest_argument.nil?
23
- expected_text = expected_text(minimum, maximum, optional)
24
-
25
- unless correct_argument_amount(minimum, maximum, specified, rest)
26
- error(
27
- "wrong number of arguments (expected #{expected_text} but " \
28
- "got #{specified})",
29
- node
30
- )
31
- end
32
- end
33
-
34
- private
35
-
36
- ##
37
- # @param [Numeric] minimum
38
- # @param [Numeric] maximum
39
- # @param [Numeric] specified
40
- # @param [TrueClass|FalseClass] rest
41
- # @return [TrueClass|FalseClass]
42
- #
43
- def correct_argument_amount(minimum, maximum, specified, rest = false)
44
- valid = false
45
-
46
- if rest
47
- valid = specified >= minimum
48
- else
49
- valid = specified >= minimum && specified <= maximum
50
- end
51
-
52
- return valid
53
- end
54
-
55
- ##
56
- # Creates a string that indicates the amount of parameters that can be
57
- # specified for a method.
58
- #
59
- # @param [Numeric] minimum
60
- # @param [Numeric] maximum
61
- # @param [Numeric] optional
62
- # @return [String]
63
- #
64
- def expected_text(minimum, maximum, optional)
65
- if optional > 0
66
- return "#{minimum}..#{maximum}"
67
- else
68
- return minimum.to_s
69
- end
70
- end
71
- end # ArgumentAmount
72
- end # Analyze
73
- end # RubyLint