ruby-lint 0.0.4 → 0.0.5

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 (317) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.asc +17 -0
  3. data.tar.gz.asc +14 -14
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +0 -1
  6. data/.yardopts +1 -0
  7. data/CONTRIBUTING.md +41 -0
  8. data/MANIFEST +99 -66
  9. data/README.md +36 -10
  10. data/Rakefile +6 -0
  11. data/checksum/ruby-lint-0.0.4.gem.sha512 +1 -0
  12. data/doc/changelog.md +94 -0
  13. data/lib/ruby-lint.rb +18 -1
  14. data/lib/ruby-lint/analysis/argument_amount.rb +43 -10
  15. data/lib/ruby-lint/analysis/base.rb +23 -17
  16. data/lib/ruby-lint/analysis/pedantics.rb +3 -1
  17. data/lib/ruby-lint/analysis/undefined_methods.rb +48 -10
  18. data/lib/ruby-lint/analysis/unused_variables.rb +27 -5
  19. data/lib/ruby-lint/ast/node.rb +10 -0
  20. data/lib/ruby-lint/cli/analyze.rb +22 -4
  21. data/lib/ruby-lint/cli/base.rb +8 -2
  22. data/lib/ruby-lint/configuration.rb +43 -4
  23. data/lib/ruby-lint/definition/constant_proxy.rb +10 -1
  24. data/lib/ruby-lint/definition/ruby_method.rb +45 -31
  25. data/lib/ruby-lint/definition/ruby_object.rb +56 -15
  26. data/lib/ruby-lint/definition_builder/base.rb +4 -0
  27. data/lib/ruby-lint/definition_builder/primitive.rb +1 -1
  28. data/lib/ruby-lint/definition_builder/ruby_array.rb +1 -1
  29. data/lib/ruby-lint/definition_builder/ruby_block.rb +1 -0
  30. data/lib/ruby-lint/definition_builder/ruby_class.rb +1 -1
  31. data/lib/ruby-lint/definition_builder/ruby_hash.rb +1 -1
  32. data/lib/ruby-lint/definition_builder/ruby_module.rb +3 -1
  33. data/lib/ruby-lint/definition_generator.rb +15 -7
  34. data/lib/ruby-lint/definitions/core/arg0.rb +1 -1
  35. data/lib/ruby-lint/definitions/core/argf.rb +1 -1
  36. data/lib/ruby-lint/definitions/core/argument_error.rb +2 -2
  37. data/lib/ruby-lint/definitions/core/argv.rb +1 -1
  38. data/lib/ruby-lint/definitions/core/array.rb +6 -6
  39. data/lib/ruby-lint/definitions/core/autoload.rb +2 -2
  40. data/lib/ruby-lint/definitions/core/basic_object.rb +8 -12
  41. data/lib/ruby-lint/definitions/core/bignum.rb +2 -2
  42. data/lib/ruby-lint/definitions/core/binding.rb +2 -2
  43. data/lib/ruby-lint/definitions/core/class.rb +2 -2
  44. data/lib/ruby-lint/definitions/core/comparable.rb +1 -1
  45. data/lib/ruby-lint/definitions/core/complex.rb +4 -4
  46. data/lib/ruby-lint/definitions/core/condition_variable.rb +2 -2
  47. data/lib/ruby-lint/definitions/core/continuation.rb +2 -2
  48. data/lib/ruby-lint/definitions/core/data.rb +2 -2
  49. data/lib/ruby-lint/definitions/core/date.rb +34 -34
  50. data/lib/ruby-lint/definitions/core/date_time.rb +26 -26
  51. data/lib/ruby-lint/definitions/core/default_record_separator.rb +1 -1
  52. data/lib/ruby-lint/definitions/core/digest.rb +14 -14
  53. data/lib/ruby-lint/definitions/core/dir.rb +34 -34
  54. data/lib/ruby-lint/definitions/core/encoding.rb +237 -237
  55. data/lib/ruby-lint/definitions/core/encoding_error.rb +2 -2
  56. data/lib/ruby-lint/definitions/core/enumerable.rb +15 -15
  57. data/lib/ruby-lint/definitions/core/enumerator.rb +2 -2
  58. data/lib/ruby-lint/definitions/core/env.rb +1 -1
  59. data/lib/ruby-lint/definitions/core/eoferror.rb +2 -2
  60. data/lib/ruby-lint/definitions/core/erb.rb +30 -23
  61. data/lib/ruby-lint/definitions/core/errno.rb +525 -525
  62. data/lib/ruby-lint/definitions/core/etc.rb +6 -6
  63. data/lib/ruby-lint/definitions/core/exception.rb +2 -2
  64. data/lib/ruby-lint/definitions/core/false.rb +1 -1
  65. data/lib/ruby-lint/definitions/core/false_class.rb +2 -2
  66. data/lib/ruby-lint/definitions/core/fatal_error.rb +2 -2
  67. data/lib/ruby-lint/definitions/core/fiber.rb +2 -2
  68. data/lib/ruby-lint/definitions/core/fiber_error.rb +2 -2
  69. data/lib/ruby-lint/definitions/core/file.rb +68 -68
  70. data/lib/ruby-lint/definitions/core/file_list.rb +2 -2
  71. data/lib/ruby-lint/definitions/core/file_test.rb +1 -1
  72. data/lib/ruby-lint/definitions/core/file_utils.rb +16 -16
  73. data/lib/ruby-lint/definitions/core/fixnum.rb +4 -4
  74. data/lib/ruby-lint/definitions/core/float.rb +16 -16
  75. data/lib/ruby-lint/definitions/core/float_domain_error.rb +2 -2
  76. data/lib/ruby-lint/definitions/core/gc.rb +2 -2
  77. data/lib/ruby-lint/definitions/core/gem.rb +119 -119
  78. data/lib/ruby-lint/definitions/core/hash.rb +14 -14
  79. data/lib/ruby-lint/definitions/core/immediate_value.rb +1 -1
  80. data/lib/ruby-lint/definitions/core/index_error.rb +2 -2
  81. data/lib/ruby-lint/definitions/core/integer.rb +2 -2
  82. data/lib/ruby-lint/definitions/core/interrupt.rb +2 -2
  83. data/lib/ruby-lint/definitions/core/io.rb +38 -38
  84. data/lib/ruby-lint/definitions/core/ioerror.rb +2 -2
  85. data/lib/ruby-lint/definitions/core/kernel.rb +113 -60
  86. data/lib/ruby-lint/definitions/core/key_error.rb +2 -2
  87. data/lib/ruby-lint/definitions/core/load_error.rb +6 -6
  88. data/lib/ruby-lint/definitions/core/local_jump_error.rb +2 -2
  89. data/lib/ruby-lint/definitions/core/marshal.rb +35 -35
  90. data/lib/ruby-lint/definitions/core/match_data.rb +2 -2
  91. data/lib/ruby-lint/definitions/core/math.rb +7 -7
  92. data/lib/ruby-lint/definitions/core/memory_segmention_error.rb +2 -2
  93. data/lib/ruby-lint/definitions/core/method.rb +2 -2
  94. data/lib/ruby-lint/definitions/core/module.rb +39 -3
  95. data/lib/ruby-lint/definitions/core/monitor.rb +4 -4
  96. data/lib/ruby-lint/definitions/core/monitor_mixin.rb +5 -5
  97. data/lib/ruby-lint/definitions/core/mutex.rb +2 -2
  98. data/lib/ruby-lint/definitions/core/name_error.rb +2 -2
  99. data/lib/ruby-lint/definitions/core/nil.rb +1 -1
  100. data/lib/ruby-lint/definitions/core/nil_class.rb +2 -2
  101. data/lib/ruby-lint/definitions/core/no_memory_error.rb +2 -2
  102. data/lib/ruby-lint/definitions/core/no_method_error.rb +2 -2
  103. data/lib/ruby-lint/definitions/core/not_implemented_error.rb +2 -2
  104. data/lib/ruby-lint/definitions/core/numeric.rb +2 -2
  105. data/lib/ruby-lint/definitions/core/object.rb +2 -2
  106. data/lib/ruby-lint/definitions/core/object_space.rb +1 -1
  107. data/lib/ruby-lint/definitions/core/open_struct.rb +3 -3
  108. data/lib/ruby-lint/definitions/core/option_parser.rb +83 -83
  109. data/lib/ruby-lint/definitions/core/precision.rb +1 -1
  110. data/lib/ruby-lint/definitions/core/primitive_failure.rb +2 -2
  111. data/lib/ruby-lint/definitions/core/proc.rb +2 -2
  112. data/lib/ruby-lint/definitions/core/process.rb +29 -29
  113. data/lib/ruby-lint/definitions/core/queue.rb +2 -2
  114. data/lib/ruby-lint/definitions/core/rake.rb +117 -117
  115. data/lib/ruby-lint/definitions/core/rake_file_utils.rb +1 -1
  116. data/lib/ruby-lint/definitions/core/rakeversion.rb +1 -1
  117. data/lib/ruby-lint/definitions/core/random.rb +2 -2
  118. data/lib/ruby-lint/definitions/core/range.rb +4 -4
  119. data/lib/ruby-lint/definitions/core/range_error.rb +2 -2
  120. data/lib/ruby-lint/definitions/core/rational.rb +2 -2
  121. data/lib/ruby-lint/definitions/core/rb_config.rb +3 -3
  122. data/lib/ruby-lint/definitions/core/regexp.rb +28 -28
  123. data/lib/ruby-lint/definitions/core/regexp_error.rb +2 -2
  124. data/lib/ruby-lint/definitions/core/ruby_copyright.rb +1 -1
  125. data/lib/ruby-lint/definitions/core/ruby_description.rb +1 -1
  126. data/lib/ruby-lint/definitions/core/ruby_engine.rb +1 -1
  127. data/lib/ruby-lint/definitions/core/ruby_patchlevel.rb +1 -1
  128. data/lib/ruby-lint/definitions/core/ruby_platform.rb +1 -1
  129. data/lib/ruby-lint/definitions/core/ruby_release_date.rb +1 -1
  130. data/lib/ruby-lint/definitions/core/ruby_version.rb +1 -1
  131. data/lib/ruby-lint/definitions/core/runtime_error.rb +2 -2
  132. data/lib/ruby-lint/definitions/core/scan_error.rb +2 -2
  133. data/lib/ruby-lint/definitions/core/script_error.rb +2 -2
  134. data/lib/ruby-lint/definitions/core/security_error.rb +2 -2
  135. data/lib/ruby-lint/definitions/core/shellwords.rb +1 -1
  136. data/lib/ruby-lint/definitions/core/signal.rb +3 -3
  137. data/lib/ruby-lint/definitions/core/signal_exception.rb +2 -2
  138. data/lib/ruby-lint/definitions/core/singleton.rb +2 -2
  139. data/lib/ruby-lint/definitions/core/sized_queue.rb +2 -2
  140. data/lib/ruby-lint/definitions/core/standard_error.rb +2 -2
  141. data/lib/ruby-lint/definitions/core/stderr.rb +3 -2
  142. data/lib/ruby-lint/definitions/core/stdin.rb +3 -2
  143. data/lib/ruby-lint/definitions/core/stdout.rb +3 -2
  144. data/lib/ruby-lint/definitions/core/stop_iteration.rb +2 -2
  145. data/lib/ruby-lint/definitions/core/string.rb +21 -21
  146. data/lib/ruby-lint/definitions/core/string_io.rb +7 -7
  147. data/lib/ruby-lint/definitions/core/string_scanner.rb +4 -4
  148. data/lib/ruby-lint/definitions/core/struct.rb +20 -20
  149. data/lib/ruby-lint/definitions/core/syck.rb +4 -4
  150. data/lib/ruby-lint/definitions/core/symbol.rb +2 -2
  151. data/lib/ruby-lint/definitions/core/syntax_error.rb +2 -2
  152. data/lib/ruby-lint/definitions/core/system_call_error.rb +2 -2
  153. data/lib/ruby-lint/definitions/core/system_exit.rb +2 -2
  154. data/lib/ruby-lint/definitions/core/system_stack_error.rb +2 -2
  155. data/lib/ruby-lint/definitions/core/thread.rb +6 -6
  156. data/lib/ruby-lint/definitions/core/thread_error.rb +2 -2
  157. data/lib/ruby-lint/definitions/core/thread_group.rb +2 -2
  158. data/lib/ruby-lint/definitions/core/time.rb +3 -3
  159. data/lib/ruby-lint/definitions/core/toplevel_binding.rb +1 -1
  160. data/lib/ruby-lint/definitions/core/true.rb +1 -1
  161. data/lib/ruby-lint/definitions/core/true_class.rb +2 -2
  162. data/lib/ruby-lint/definitions/core/type_error.rb +2 -2
  163. data/lib/ruby-lint/definitions/core/unbound_method.rb +2 -2
  164. data/lib/ruby-lint/definitions/core/unmarshalable.rb +1 -1
  165. data/lib/ruby-lint/definitions/core/unsupported_library_error.rb +2 -2
  166. data/lib/ruby-lint/definitions/core/weak_ref.rb +4 -4
  167. data/lib/ruby-lint/definitions/core/yaml.rb +2361 -0
  168. data/lib/ruby-lint/definitions/core/zero_division_error.rb +2 -2
  169. data/lib/ruby-lint/definitions/global_variables.rb +9 -0
  170. data/lib/ruby-lint/definitions/rails/abstract_controller.rb +174 -28
  171. data/lib/ruby-lint/definitions/rails/action_controller.rb +4959 -550
  172. data/lib/ruby-lint/definitions/rails/action_dispatch.rb +2489 -292
  173. data/lib/ruby-lint/definitions/rails/action_mailer.rb +1285 -42
  174. data/lib/ruby-lint/definitions/rails/action_pack.rb +14 -6
  175. data/lib/ruby-lint/definitions/rails/action_view.rb +6941 -445
  176. data/lib/ruby-lint/definitions/rails/active_model.rb +1212 -69
  177. data/lib/ruby-lint/definitions/rails/active_record.rb +10344 -1450
  178. data/lib/ruby-lint/definitions/rails/active_support.rb +4631 -573
  179. data/lib/ruby-lint/definitions/rails/arel.rb +3211 -319
  180. data/lib/ruby-lint/definitions/rails/rails.rb +2922 -84
  181. data/lib/ruby-lint/definitions/rails/sprockets.rb +3048 -277
  182. data/lib/ruby-lint/docstring/mapping.rb +55 -0
  183. data/lib/ruby-lint/docstring/param_tag.rb +29 -0
  184. data/lib/ruby-lint/docstring/parser.rb +133 -0
  185. data/lib/ruby-lint/docstring/return_tag.rb +24 -0
  186. data/lib/ruby-lint/file_loader.rb +96 -0
  187. data/lib/ruby-lint/file_scanner.rb +91 -0
  188. data/lib/ruby-lint/global_scope.rb +56 -0
  189. data/lib/ruby-lint/helper/constant_paths.rb +1 -1
  190. data/lib/ruby-lint/inspector.rb +11 -33
  191. data/lib/ruby-lint/iterator.rb +31 -4
  192. data/lib/ruby-lint/method_call/alias.rb +46 -0
  193. data/lib/ruby-lint/method_call/assign_member.rb +55 -0
  194. data/lib/ruby-lint/method_call/attribute.rb +102 -0
  195. data/lib/ruby-lint/method_call/base.rb +37 -0
  196. data/lib/ruby-lint/method_call/define_method.rb +17 -0
  197. data/lib/ruby-lint/method_call/include.rb +39 -0
  198. data/lib/ruby-lint/parser.rb +9 -4
  199. data/lib/ruby-lint/presenter/text.rb +2 -1
  200. data/lib/ruby-lint/report.rb +19 -42
  201. data/lib/ruby-lint/report/entry.rb +20 -17
  202. data/lib/ruby-lint/runner.rb +92 -11
  203. data/lib/ruby-lint/template/definition.erb +2 -2
  204. data/lib/ruby-lint/variable_predicates.rb +7 -10
  205. data/lib/ruby-lint/version.rb +1 -1
  206. data/lib/ruby-lint/virtual_machine.rb +265 -188
  207. data/ruby-lint.gemspec +4 -4
  208. data/ruby-lint.yml +7 -0
  209. data/spec/fixtures/associating.rb +7 -0
  210. data/spec/fixtures/file_scanner/lib/example/recursive/source.rb +6 -0
  211. data/spec/fixtures/file_scanner/lib/example/recursive/target.rb +8 -0
  212. data/spec/fixtures/file_scanner/lib/example/user.rb +6 -0
  213. data/spec/fixtures/file_scanner/lib/test-dashes/foo.rb +4 -0
  214. data/spec/fixtures/file_scanner/rails/app/models/example/user.rb +6 -0
  215. data/spec/fixtures/file_scanner/rails/app/models/user.rb +4 -0
  216. data/spec/fixtures/uses_external.rb +1 -0
  217. data/spec/fixtures/uses_external_invalid.rb +3 -0
  218. data/spec/fixtures/uses_external_namespace.rb +1 -0
  219. data/spec/ruby-lint/analysis/{argument_amount.rb → argument_amount_spec.rb} +33 -7
  220. data/spec/ruby-lint/analysis/base_spec.rb +12 -0
  221. data/spec/ruby-lint/analysis/{pedantics.rb → pedantics_spec.rb} +24 -4
  222. data/spec/ruby-lint/analysis/{shadowing_variables.rb → shadowing_variables_spec.rb} +6 -6
  223. data/spec/ruby-lint/analysis/undefined_methods_spec.rb +320 -0
  224. data/spec/ruby-lint/analysis/{undefined_variables.rb → undefined_variables_spec.rb} +33 -10
  225. data/spec/ruby-lint/analysis/{unused_variables.rb → unused_variables_spec.rb} +36 -9
  226. data/spec/ruby-lint/ast/{node.rb → node_spec.rb} +12 -6
  227. data/spec/ruby-lint/cli/{analyze.rb → analyze_spec.rb} +16 -5
  228. data/spec/ruby-lint/cli/{ast.rb → ast_spec.rb} +3 -3
  229. data/spec/ruby-lint/configuration_spec.rb +106 -0
  230. data/spec/ruby-lint/definition/constant_proxy_spec.rb +54 -0
  231. data/spec/ruby-lint/definition/{dsl.rb → dsl_spec.rb} +15 -15
  232. data/spec/ruby-lint/definition/{ruby_method.rb → ruby_method_spec.rb} +31 -17
  233. data/spec/ruby-lint/definition/{ruby_object.rb → ruby_object_spec.rb} +28 -23
  234. data/spec/ruby-lint/definition_builder/{primitive.rb → primitive_spec.rb} +9 -9
  235. data/spec/ruby-lint/definition_builder/{ruby_class.rb → ruby_class_spec.rb} +13 -13
  236. data/spec/ruby-lint/definition_builder/{ruby_method.rb → ruby_method_spec.rb} +9 -9
  237. data/spec/ruby-lint/definition_builder/{ruby_module.rb → ruby_module_spec.rb} +12 -10
  238. data/spec/ruby-lint/docstring/mapping.rb +27 -0
  239. data/spec/ruby-lint/docstring/parser_spec.rb +88 -0
  240. data/spec/ruby-lint/extensions/{string.rb → string_spec.rb} +3 -3
  241. data/spec/ruby-lint/file_loader_spec.rb +69 -0
  242. data/spec/ruby-lint/file_scanner_spec.rb +51 -0
  243. data/spec/ruby-lint/inspector_spec.rb +44 -0
  244. data/spec/ruby-lint/{iterator.rb → iterator_spec.rb} +39 -4
  245. data/spec/ruby-lint/{nested_stack.rb → nested_stack_spec.rb} +4 -4
  246. data/spec/ruby-lint/parser_spec.rb +31 -0
  247. data/spec/ruby-lint/presenter/json_spec.rb +58 -0
  248. data/spec/ruby-lint/presenter/text_spec.rb +49 -0
  249. data/spec/ruby-lint/report/entry_spec.rb +58 -0
  250. data/spec/ruby-lint/report_spec.rb +39 -0
  251. data/spec/ruby-lint/runner_spec.rb +52 -0
  252. data/spec/ruby-lint/virtual_machine/alias_spec.rb +55 -0
  253. data/spec/ruby-lint/virtual_machine/assignments/{arrays.rb → arrays_spec.rb} +7 -7
  254. data/spec/ruby-lint/virtual_machine/assignments/{hashes.rb → hashes_spec.rb} +6 -6
  255. data/spec/ruby-lint/virtual_machine/assignments/{optional.rb → optional_spec.rb} +6 -6
  256. data/spec/ruby-lint/virtual_machine/assignments/{return_values.rb → return_values_spec.rb} +11 -11
  257. data/spec/ruby-lint/virtual_machine/assignments/{variables.rb → variables_spec.rb} +38 -7
  258. data/spec/ruby-lint/virtual_machine/associate_nodes_spec.rb +59 -0
  259. data/spec/ruby-lint/virtual_machine/{autoloading.rb → autoloading_spec.rb} +6 -6
  260. data/spec/ruby-lint/virtual_machine/{blocks.rb → blocks_spec.rb} +30 -4
  261. data/spec/ruby-lint/virtual_machine/classes/{class_methods.rb → class_methods_spec.rb} +3 -3
  262. data/spec/ruby-lint/virtual_machine/classes/{extending.rb → extending_spec.rb} +20 -15
  263. data/spec/ruby-lint/virtual_machine/classes/{redefining.rb → redefining_spec.rb} +3 -3
  264. data/spec/ruby-lint/virtual_machine/classes/{sclass.rb → sclass_spec.rb} +7 -7
  265. data/spec/ruby-lint/virtual_machine/classes/{scoping.rb → scoping_spec.rb} +5 -5
  266. data/spec/ruby-lint/virtual_machine/complex/{rails.rb → rails_spec.rb} +3 -3
  267. data/spec/ruby-lint/virtual_machine/complex/{rcap.rb → rcap_spec.rb} +3 -3
  268. data/spec/ruby-lint/virtual_machine/complex/{slop.rb → slop_spec.rb} +3 -3
  269. data/spec/ruby-lint/virtual_machine/constants_spec.rb +31 -0
  270. data/spec/ruby-lint/virtual_machine/{for.rb → for_spec.rb} +3 -3
  271. data/spec/ruby-lint/virtual_machine/{freeze.rb → freeze_spec.rb} +3 -3
  272. data/spec/ruby-lint/virtual_machine/global_variables_spec.rb +12 -0
  273. data/spec/ruby-lint/virtual_machine/inherit_kernel_spec.rb +15 -0
  274. data/spec/ruby-lint/virtual_machine/{interpolation.rb → interpolation_spec.rb} +3 -3
  275. data/spec/ruby-lint/virtual_machine/methods/attr_spec.rb +116 -0
  276. data/spec/ruby-lint/virtual_machine/methods/define_method_spec.rb +41 -0
  277. data/spec/ruby-lint/virtual_machine/methods/{defining.rb → defining_spec.rb} +4 -4
  278. data/spec/ruby-lint/virtual_machine/methods/docstrings_spec.rb +69 -0
  279. data/spec/ruby-lint/virtual_machine/methods/{exporting.rb → exporting_spec.rb} +3 -3
  280. data/spec/ruby-lint/virtual_machine/methods/{parameters.rb → parameters_spec.rb} +17 -5
  281. data/spec/ruby-lint/virtual_machine/methods/{patching.rb → patching_spec.rb} +4 -4
  282. data/spec/ruby-lint/virtual_machine/methods/{scoping.rb → scoping_spec.rb} +5 -5
  283. data/spec/ruby-lint/virtual_machine/methods/{visibility.rb → visibility_spec.rb} +6 -6
  284. data/spec/ruby-lint/virtual_machine/{modules.rb → modules_spec.rb} +39 -9
  285. data/spec/ruby-lint/virtual_machine/reference_amount_spec.rb +61 -0
  286. data/spec/ruby-lint/virtual_machine/{unused.rb → unused_spec.rb} +4 -4
  287. data/spec/{helper.rb → spec_helper.rb} +6 -4
  288. data/spec/support/building.rb +10 -6
  289. data/spec/support/coveralls.rb +1 -1
  290. data/spec/support/parsing.rb +10 -1
  291. data/spec/support/simplecov.rb +1 -1
  292. data/spec/support/versions.rb +9 -0
  293. data/task/test.rake +2 -4
  294. data/task/travis.rake +1 -0
  295. metadata +144 -143
  296. metadata.gz.asc +14 -14
  297. data/.rubocop.yml +0 -59
  298. data/doc/contributing.md +0 -16
  299. data/lib/ruby-lint/analysis/confusing_variables.rb +0 -26
  300. data/lib/ruby-lint/definitions/core/main.rb +0 -25
  301. data/lib/ruby-lint/definitions/core/psych.rb +0 -2231
  302. data/lib/ruby-lint/definitions/core/rubinius.rb +0 -16637
  303. data/lib/ruby-lint/definitions/core/ruby_lint.rb +0 -93
  304. data/spec/ruby-lint/analysis/confusing_variables.rb +0 -46
  305. data/spec/ruby-lint/analysis/undefined_methods.rb +0 -174
  306. data/spec/ruby-lint/configuration.rb +0 -54
  307. data/spec/ruby-lint/definition/constant_proxy.rb +0 -31
  308. data/spec/ruby-lint/parser.rb +0 -14
  309. data/spec/ruby-lint/presenter/json.rb +0 -31
  310. data/spec/ruby-lint/presenter/text.rb +0 -22
  311. data/spec/ruby-lint/report.rb +0 -50
  312. data/spec/ruby-lint/report/entry.rb +0 -28
  313. data/spec/ruby-lint/runner.rb +0 -32
  314. data/spec/ruby-lint/virtual_machine/associate_nodes.rb +0 -17
  315. data/spec/ruby-lint/virtual_machine/reference_amount.rb +0 -33
  316. data/spec/support/bacon.rb +0 -33
  317. data/task/cop.rake +0 -11
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  describe 'using sclass blocks' do
5
- should 'define a class method using `class << self`' do
5
+ example 'define a class method using `class << self`' do
6
6
  code = <<-CODE
7
7
  class First
8
8
  class << self
@@ -20,7 +20,7 @@ end
20
20
  .should == true
21
21
  end
22
22
 
23
- should 'define a class method using `class << self` in the global scope' do
23
+ example 'define a class method using `class << self` in the global scope' do
24
24
  code = <<-CODE
25
25
  class << self
26
26
  def example
@@ -33,7 +33,7 @@ end
33
33
  defs.lookup(:method, 'example').is_a?(ruby_method).should == true
34
34
  end
35
35
 
36
- should 'define a class method using `class << String`' do
36
+ example 'define a class method using `class << String`' do
37
37
  code = <<-CODE
38
38
  class << String
39
39
  def example
@@ -49,7 +49,7 @@ end
49
49
  .should == true
50
50
  end
51
51
 
52
- should 'define a class method using `class << String` nested in a class' do
52
+ example 'define a class method using `class << String` nested in a class' do
53
53
  code = <<-CODE
54
54
  class First
55
55
  class << String
@@ -72,7 +72,7 @@ end
72
72
  .should == true
73
73
  end
74
74
 
75
- should 'define an instance method using `class << variable`' do
75
+ example 'define an instance method using `class << variable`' do
76
76
  code = <<-CODE
77
77
  variable = "foo"
78
78
 
@@ -91,4 +91,4 @@ end
91
91
  .should == true
92
92
  end
93
93
  end
94
- end
94
+ end
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  describe 'scoping class definitions' do
5
- should 'process a global class' do
5
+ example 'process a global class' do
6
6
  defs = build_definitions('class Example; end')
7
7
  example = defs.lookup(:const, 'Example')
8
8
 
@@ -12,7 +12,7 @@ describe RubyLint::VirtualMachine do
12
12
  example.name.should == 'Example'
13
13
  end
14
14
 
15
- should 'process a nested class' do
15
+ example 'process a nested class' do
16
16
  code = <<-CODE
17
17
  class First
18
18
  class Second
@@ -32,7 +32,7 @@ end
32
32
  .should == true
33
33
  end
34
34
 
35
- should 'process a global and nested class' do
35
+ example 'process a global and nested class' do
36
36
  code = <<-CODE
37
37
  class First
38
38
  class Second
@@ -57,4 +57,4 @@ end
57
57
  defs.lookup(:const, 'Third').is_a?(ruby_object).should == true
58
58
  end
59
59
  end
60
- end
60
+ end
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  describe 'rails' do
5
- should 'process a basic Rails controller' do
5
+ example 'process a basic Rails controller' do
6
6
  code = fixture('complex/rails/basic_controller.rb')
7
7
  defs = build_definitions(code)
8
8
 
@@ -15,4 +15,4 @@ describe RubyLint::VirtualMachine do
15
15
  .should == true
16
16
  end
17
17
  end
18
- end
18
+ end
@@ -1,9 +1,9 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  # https://github.com/farrel/RCAP/blob/master/lib/rcap/cap_1_2/alert.rb
5
5
  describe 'rcap' do
6
- should 'process the Alert class' do
6
+ example 'process the Alert class' do
7
7
  code = fixture('complex/rcap.rb')
8
8
  defs = build_definitions(code)
9
9
  const = defs.lookup_constant_path('RCAP::CAP_1_2::Alert')
@@ -12,4 +12,4 @@ describe RubyLint::VirtualMachine do
12
12
  const.has_definition?(:instance_method, 'xmlns').should == true
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  describe 'slop' do
5
- should 'process the Slop gem' do
5
+ example 'process the Slop gem' do
6
6
  code = fixture('complex/slop.rb')
7
7
  defs = build_definitions(code)
8
8
  const = defs.lookup(:const, 'Slop')
@@ -13,4 +13,4 @@ describe RubyLint::VirtualMachine do
13
13
  const.has_definition?(:method, 'parse!').should == true
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'generic constants' do
5
+ # These tests are put in place to ensure that a class/module can refer to
6
+ # itself without having to look anything up in parent scopes. An example:
7
+ #
8
+ # class Foo
9
+ # Foo # => points to the class
10
+ # end
11
+ #
12
+ example 'add the constant to itself' do
13
+ code = <<-CODE
14
+ module A
15
+ end
16
+
17
+ class B
18
+ end
19
+ CODE
20
+
21
+ defs = build_definitions(code)
22
+ mod = defs.lookup(:const, 'A')
23
+ klass = defs.lookup(:const, 'B')
24
+
25
+ # `lookup_parent` is set to false to ensure that the code doesn't use
26
+ # parent scopes to find the constant.
27
+ mod.lookup(:const, 'A', false).should == mod
28
+ klass.lookup(:const, 'B', false).should == klass
29
+ end
30
+ end
31
+ end
@@ -1,7 +1,7 @@
1
- require File.expand_path('../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Building variable definitions using for loops' do
4
- should 'create local variables' do
4
+ example 'create local variables' do
5
5
  code = <<-CODE
6
6
  for key, value in something
7
7
 
@@ -13,4 +13,4 @@ end
13
13
  defs.lookup(:lvar, 'key').is_a?(ruby_object).should == true
14
14
  defs.lookup(:lvar, 'value').is_a?(ruby_object).should == true
15
15
  end
16
- end
16
+ end
@@ -1,7 +1,7 @@
1
- require File.expand_path('../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
- should 'freeze the VM and all instance variables' do
4
+ example 'freeze the VM and all instance variables' do
5
5
  vm = RubyLint::VirtualMachine.new
6
6
 
7
7
  vm.freeze
@@ -10,4 +10,4 @@ describe RubyLint::VirtualMachine do
10
10
  vm.definitions.frozen?.should == true
11
11
  vm.associations.frozen?.should == true
12
12
  end
13
- end
13
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ describe 'global variables' do
5
+ example 'provide a list of default global variables' do
6
+ scope = RubyLint::GlobalScope.definitions
7
+
8
+ scope.lookup(:gvar, '$LOAD_PATH').is_a?(ruby_object).should == true
9
+ scope.lookup(:gvar, '$9').is_a?(ruby_object).should == true
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'inheriting definitions using modules' do
5
+ example 'modules should inherit from Kernel' do
6
+ code = 'module Foo; end'
7
+ defs = build_definitions(code)
8
+
9
+ defs.lookup(:const, 'Foo')
10
+ .lookup(:method, 'alias_method')
11
+ .is_a?(ruby_method)
12
+ .should == true
13
+ end
14
+ end
15
+ end
@@ -1,12 +1,12 @@
1
- require File.expand_path('../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  describe 'string interpolation' do
5
- should 'process an assignment in a string' do
5
+ example 'process an assignment in a string' do
6
6
  code = '"hello #{number = 10}"'
7
7
  defs = build_definitions(code)
8
8
 
9
9
  defs.lookup(:lvar, 'number').value.value.should == 10
10
10
  end
11
11
  end
12
- end
12
+ end
@@ -0,0 +1,116 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'attr methods' do
5
+ example 'should define a read-only attribute using #attr' do
6
+ code = <<-CODE
7
+ class Example
8
+ attr :number
9
+ end
10
+ CODE
11
+
12
+ defs = build_definitions(code)
13
+
14
+ defs.lookup(:const, 'Example')
15
+ .has_definition?(:instance_method, 'number')
16
+ .should == true
17
+
18
+ defs.lookup(:const, 'Example')
19
+ .has_definition?(:ivar, '@number')
20
+ .should == true
21
+
22
+ defs.lookup(:const, 'Example')
23
+ .lookup(:ivar, '@number')
24
+ .used?
25
+ .should == true
26
+ end
27
+
28
+ example 'should define an accessor attribute using #attr' do
29
+ code = <<-CODE
30
+ class Example
31
+ attr :number, true
32
+ end
33
+ CODE
34
+
35
+ defs = build_definitions(code)
36
+
37
+ defs.lookup(:const, 'Example')
38
+ .has_definition?(:instance_method, 'number')
39
+ .should == true
40
+
41
+ defs.lookup(:const, 'Example')
42
+ .has_definition?(:instance_method, 'number=')
43
+ .should == true
44
+
45
+ defs.lookup(:const, 'Example')
46
+ .has_definition?(:ivar, '@number')
47
+ .should == true
48
+ end
49
+
50
+ example 'should define a read-only attribute using #attr_reader' do
51
+ code = <<-CODE
52
+ class Example
53
+ attr_reader :number
54
+ end
55
+ CODE
56
+
57
+ defs = build_definitions(code)
58
+
59
+ defs.lookup(:const, 'Example')
60
+ .has_definition?(:instance_method, 'number')
61
+ .should == true
62
+
63
+ defs.lookup(:const, 'Example')
64
+ .has_definition?(:instance_method, 'number=')
65
+ .should == false
66
+
67
+ defs.lookup(:const, 'Example')
68
+ .has_definition?(:ivar, '@number')
69
+ .should == true
70
+ end
71
+
72
+ example 'should define a write-only attribute using #attr_writer' do
73
+ code = <<-CODE
74
+ class Example
75
+ attr_writer :number
76
+ end
77
+ CODE
78
+
79
+ defs = build_definitions(code)
80
+
81
+ defs.lookup(:const, 'Example')
82
+ .has_definition?(:instance_method, 'number')
83
+ .should == false
84
+
85
+ defs.lookup(:const, 'Example')
86
+ .has_definition?(:instance_method, 'number=')
87
+ .should == true
88
+
89
+ defs.lookup(:const, 'Example')
90
+ .has_definition?(:ivar, '@number')
91
+ .should == true
92
+ end
93
+
94
+ example 'should define an accessor attribute using #attr_accessor' do
95
+ code = <<-CODE
96
+ class Example
97
+ attr_accessor :number
98
+ end
99
+ CODE
100
+
101
+ defs = build_definitions(code)
102
+
103
+ defs.lookup(:const, 'Example')
104
+ .has_definition?(:instance_method, 'number')
105
+ .should == true
106
+
107
+ defs.lookup(:const, 'Example')
108
+ .has_definition?(:instance_method, 'number=')
109
+ .should == true
110
+
111
+ defs.lookup(:const, 'Example')
112
+ .has_definition?(:ivar, '@number')
113
+ .should == true
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'define_method' do
5
+ example 'change the instance type of the block to `:instance`' do
6
+ code = <<-CODE
7
+ class A
8
+ define_method(:example) do
9
+ end
10
+ end
11
+ CODE
12
+
13
+ assoc = build_associations(code).to_a.last.last
14
+
15
+ assoc.type.should == :block
16
+ assoc.instance_type.should == :instance
17
+ end
18
+
19
+ example 'should not mess up nested blocks' do
20
+ code = <<-CODE
21
+ class A
22
+ something.each do
23
+ define_method(:example) do
24
+ end
25
+ end
26
+ end
27
+ CODE
28
+
29
+ assoc = build_associations(code).to_a
30
+
31
+ something = assoc[2].last
32
+ define = assoc[4].last
33
+
34
+ something.type.should == :block
35
+ something.instance_type.should == :class
36
+
37
+ define.type.should == :block
38
+ define.instance_type.should == :instance
39
+ end
40
+ end
41
+ end
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  describe 'defining methods' do
5
- should 'process a definition with a variable assignment in the body' do
5
+ example 'process a definition with a variable assignment in the body' do
6
6
  code = <<-CODE
7
7
  def example
8
8
  number = 10
@@ -19,7 +19,7 @@ describe RubyLint::VirtualMachine do
19
19
  defs.lookup(:lvar, 'number').nil?.should == true
20
20
  end
21
21
 
22
- should 'process a definition with a receiver' do
22
+ example 'process a definition with a receiver' do
23
23
  code = <<-CODE
24
24
  def String.example
25
25
  number = 10
@@ -37,4 +37,4 @@ describe RubyLint::VirtualMachine do
37
37
  defs.lookup(:instance_method, 'example').nil?.should == true
38
38
  end
39
39
  end
40
- end
40
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'method arguments and docstrings' do
5
+ example 'extract the type of a parameter' do
6
+ code = <<-CODE
7
+ # @param [Numeric] number
8
+ def example(number)
9
+ end
10
+ CODE
11
+
12
+ defs = build_definitions(code)
13
+
14
+ number = defs.lookup(:instance_method, 'example').lookup(:lvar, 'number')
15
+ numeric = RubyLint::GlobalScope.global_constant('Numeric')
16
+
17
+ number.is_a?(ruby_object).should == true
18
+ number.parents.include?(numeric).should == true
19
+ end
20
+
21
+ example 'extract the type of a parameter using a method' do
22
+ code = <<-CODE
23
+ # @param [#to_s] number
24
+ def example(number)
25
+ end
26
+ CODE
27
+
28
+ defs = build_definitions(code)
29
+ number = defs.lookup(:instance_method, 'example').lookup(:lvar, 'number')
30
+
31
+ number.is_a?(ruby_object).should == true
32
+ number.lookup(:instance_method, 'to_s').is_a?(ruby_method).should == true
33
+ end
34
+
35
+ example 'extract multiple types from a parameter' do
36
+ code = <<-CODE
37
+ # @param [Float|Fixnum] number
38
+ def example(number)
39
+ end
40
+ CODE
41
+
42
+ float = RubyLint::GlobalScope.global_constant('Float')
43
+ fixnum = RubyLint::GlobalScope.global_constant('Fixnum')
44
+
45
+ defs = build_definitions(code)
46
+ number = defs.lookup(:instance_method, 'example').lookup(:lvar, 'number')
47
+
48
+ number.is_a?(ruby_object).should == true
49
+ number.parents.include?(float).should == true
50
+ number.parents.include?(fixnum).should == true
51
+ end
52
+ end
53
+
54
+ context 'method return values and docstrings' do
55
+ example 'extract the type of a return tag' do
56
+ code = <<-CODE
57
+ # @return [Numeric]
58
+ def example
59
+ end
60
+ CODE
61
+
62
+ defs = build_definitions(code)
63
+ method = defs.lookup(:instance_method, 'example')
64
+ numeric = RubyLint::GlobalScope.global_constant('Numeric')
65
+
66
+ method.return_value.should == numeric
67
+ end
68
+ end
69
+ end