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,14 +1,14 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Building variable definitions' do
4
4
  describe 'OR assignments' do
5
- should 'assign a non existing local variable' do
5
+ example 'assign a non existing local variable' do
6
6
  defs = build_definitions('number ||= 10')
7
7
 
8
8
  defs.lookup(:lvar, 'number').value.value.should == 10
9
9
  end
10
10
 
11
- should 'not overwrite an existing variable' do
11
+ example 'not overwrite an existing variable' do
12
12
  code = <<-CODE
13
13
  number = 10
14
14
  number ||= 20
@@ -21,13 +21,13 @@ number ||= 20
21
21
  end
22
22
 
23
23
  describe 'AND assignments' do
24
- should 'not assign a non existing local variable' do
24
+ example 'not assign a non existing local variable' do
25
25
  defs = build_definitions('number &&= 10')
26
26
 
27
27
  defs.lookup(:lvar, 'number').nil?.should == true
28
28
  end
29
29
 
30
- should 'overwrite an existing variable' do
30
+ example 'overwrite an existing variable' do
31
31
  code = <<-CODE
32
32
  number = 10
33
33
  number &&= 20
@@ -38,4 +38,4 @@ number &&= 20
38
38
  defs.lookup(:lvar, 'number').value.value.should == 20
39
39
  end
40
40
  end
41
- end
41
+ end
@@ -1,7 +1,7 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Using return values in assignments' do
4
- it 'should assign a return value' do
4
+ example 'assign a return value' do
5
5
  code = 'word = String.new'
6
6
  defs = build_definitions(code)
7
7
  value = defs.lookup(:lvar, 'word').value
@@ -13,7 +13,7 @@ describe 'Using return values in assignments' do
13
13
  value.instance?.should == true
14
14
  end
15
15
 
16
- it 'should assign a nil value for a missing return value' do
16
+ example 'assign a nil value for a missing return value' do
17
17
  code = <<-CODE
18
18
  def example
19
19
  end
@@ -23,10 +23,10 @@ number = example
23
23
 
24
24
  defs = build_definitions(code)
25
25
 
26
- defs.lookup(:lvar, 'number').value.nil?.should == true
26
+ defs.lookup(:lvar, 'number').value.type.should == :unknown
27
27
  end
28
28
 
29
- it 'should assign return values when chaining method calls' do
29
+ example 'assign return values when chaining method calls' do
30
30
  code = 'word = String.new.initialize.initialize'
31
31
  defs = build_definitions(code)
32
32
  value = defs.lookup(:lvar, 'word').value
@@ -39,37 +39,37 @@ number = example
39
39
  end
40
40
 
41
41
  describe 'setting instance types for core Ruby types' do
42
- should 'create a new String instance' do
42
+ example 'create a new String instance' do
43
43
  defs = build_definitions('number = "10"')
44
44
 
45
45
  defs.lookup(:lvar, 'number').value.instance?.should == true
46
46
  end
47
47
 
48
- should 'create a new Symbol instance' do
48
+ example 'create a new Symbol instance' do
49
49
  defs = build_definitions('number = :"10"')
50
50
 
51
51
  defs.lookup(:lvar, 'number').value.instance?.should == true
52
52
  end
53
53
 
54
- should 'create a new Fixnum instance' do
54
+ example 'create a new Fixnum instance' do
55
55
  defs = build_definitions('number = 10')
56
56
 
57
57
  defs.lookup(:lvar, 'number').value.instance?.should == true
58
58
  end
59
59
 
60
- should 'create a new Float instance' do
60
+ example 'create a new Float instance' do
61
61
  defs = build_definitions('number = 10.0')
62
62
 
63
63
  defs.lookup(:lvar, 'number').value.instance?.should == true
64
64
  end
65
65
 
66
- should 'create a new Array instance' do
66
+ example 'create a new Array instance' do
67
67
  defs = build_definitions('number = [10]')
68
68
 
69
69
  defs.lookup(:lvar, 'number').value.instance?.should == true
70
70
  end
71
71
 
72
- should 'create a new Hash instance' do
72
+ example 'create a new Hash instance' do
73
73
  defs = build_definitions('number = {:a => 10}')
74
74
 
75
75
  defs.lookup(:lvar, 'number').value.instance?.should == true
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
- describe 'variable assignments' do
5
- should 'assign different types of variables' do
4
+ context 'variable assignments' do
5
+ example 'assign different types of variables' do
6
6
  types = {
7
7
  'number' => :lvar,
8
8
  '@number' => :ivar,
@@ -19,7 +19,7 @@ describe RubyLint::VirtualMachine do
19
19
  end
20
20
  end
21
21
 
22
- should 'assign multiple values to multiple variables' do
22
+ example 'assign multiple values to multiple variables' do
23
23
  defs = build_definitions('number, numberx = 10, 20')
24
24
  number = defs.lookup(:lvar, 'number')
25
25
  numberx = defs.lookup(:lvar, 'numberx')
@@ -35,7 +35,7 @@ describe RubyLint::VirtualMachine do
35
35
  numberx.value.value.should == 20
36
36
  end
37
37
 
38
- should 'assign a value to a constant path' do
38
+ example 'assign a value to a constant path' do
39
39
  defs = build_definitions('Kernel::FOO = 10')
40
40
  foo = defs.lookup(:const, 'Kernel').lookup(:const, 'FOO')
41
41
 
@@ -45,7 +45,7 @@ describe RubyLint::VirtualMachine do
45
45
  foo.value.value.should == 10
46
46
  end
47
47
 
48
- should 'assign a single value to multiple variables' do
48
+ example 'assign a single value to multiple variables' do
49
49
  code = 'first = second = third = 10'
50
50
  defs = build_definitions(code)
51
51
 
@@ -59,7 +59,7 @@ describe RubyLint::VirtualMachine do
59
59
  end
60
60
  end
61
61
 
62
- should 'resolve variables in assignments' do
62
+ example 'resolve variables in assignments' do
63
63
  code = <<-CODE
64
64
  a = 1
65
65
  b = a
@@ -81,5 +81,36 @@ d = c
81
81
 
82
82
  defs.lookup(:lvar, 'foo').value.value.should == 100
83
83
  end
84
+
85
+ example 'assign nil to a value' do
86
+ defs = build_definitions('variable = nil')
87
+ value = defs.lookup(:lvar, 'variable').value
88
+
89
+ value.type.should == :nil
90
+ value.parents[0].name.should == 'NilClass'
91
+ end
92
+
93
+ example 'assign true to a value' do
94
+ defs = build_definitions('variable = true')
95
+ value = defs.lookup(:lvar, 'variable').value
96
+
97
+ value.type.should == :true
98
+ value.parents[0].name.should == 'TrueClass'
99
+ end
100
+
101
+ example 'assign false to a value' do
102
+ defs = build_definitions('variable = false')
103
+ value = defs.lookup(:lvar, 'variable').value
104
+
105
+ value.type.should == :false
106
+ value.parents[0].name.should == 'FalseClass'
107
+ end
108
+
109
+ example 'assigning a magic global variable to a variable' do
110
+ defs = build_definitions('variable = $1')
111
+ value = defs.lookup(:lvar, 'variable').value
112
+
113
+ value.type.should == :unknown
114
+ end
84
115
  end
85
116
  end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ example 'associate AST nodes and their definitions' do
5
+ tokens = parse('def foobar; end', false)
6
+ vm = RubyLint::VirtualMachine.new
7
+
8
+ vm.iterate(tokens)
9
+
10
+ defs = vm.definitions
11
+ assoc = vm.associations
12
+ method = tokens.children[0]
13
+
14
+ assoc.key?(method).should == true
15
+ assoc[method].should == defs.lookup(:instance_method, 'foobar')
16
+ end
17
+
18
+ describe 'method calls' do
19
+ example 'should not add associations' do
20
+ associations = build_associations('foo')
21
+ nodes = associations.keys
22
+
23
+ nodes.length.should == 1
24
+ nodes[0].type.should == :root
25
+ end
26
+
27
+ example 'should not add associations for methods with arguments' do
28
+ associations = build_associations('foo(:bar)')
29
+ nodes = associations.keys
30
+
31
+ nodes.length.should == 1
32
+ nodes[0].type.should == :root
33
+ end
34
+
35
+ example 'should not add associations for methods called on methods' do
36
+ associations = build_associations('foo.bar')
37
+ nodes = associations.keys
38
+ values = associations.values
39
+
40
+ nodes.length.should == 2
41
+ nodes[0].type.should == :root
42
+ nodes[1].type.should == :send
43
+
44
+ values[1].type.should == :unknown
45
+ end
46
+
47
+ example 'should not add associations for stacked methods with arguments' do
48
+ associations = build_associations('foo.bar(:baz)')
49
+ nodes = associations.keys
50
+ values = associations.values
51
+
52
+ nodes.length.should == 2
53
+ nodes[0].type.should == :root
54
+ nodes[1].type.should == :send
55
+
56
+ values[1].type.should == :unknown
57
+ end
58
+ end
59
+ end
@@ -1,21 +1,21 @@
1
- require File.expand_path('../../../helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  describe RubyLint::VirtualMachine do
4
4
  after do
5
- RubyLint::VirtualMachine.global_scope.definitions[:const].delete('ERB')
5
+ RubyLint::GlobalScope.definitions.definitions[:const].delete('ERB')
6
6
  end
7
7
 
8
- should 'automatically load constants' do
8
+ example 'automatically load constants' do
9
9
  definitions = build_definitions('ERB')
10
10
 
11
11
  definitions.lookup(:const, 'ERB').is_a?(ruby_object).should == true
12
12
 
13
- RubyLint::VirtualMachine.global_scope.lookup(:const, 'ERB') \
13
+ RubyLint::GlobalScope.definitions.lookup(:const, 'ERB') \
14
14
  .is_a?(ruby_object) \
15
15
  .should == true
16
16
  end
17
17
 
18
- should 'automatically load constant paths' do
18
+ example 'automatically load constant paths' do
19
19
  definitions = build_definitions('Enumerable::Enumerator')
20
20
 
21
21
  definitions.lookup(:const, 'Enumerable') \
@@ -23,7 +23,7 @@ describe RubyLint::VirtualMachine do
23
23
  .is_a?(ruby_object) \
24
24
  .should == true
25
25
 
26
- RubyLint::VirtualMachine.global_scope.lookup(:const, 'Enumerable') \
26
+ RubyLint::GlobalScope.definitions.lookup(:const, 'Enumerable') \
27
27
  .lookup(:const, 'Enumerator') \
28
28
  .is_a?(ruby_object) \
29
29
  .should == true
@@ -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 'make variables available in a block' do
4
+ example 'make variables available in a block' do
5
5
  code = <<-CODE
6
6
  number = 10
7
7
 
@@ -17,7 +17,7 @@ end
17
17
  number.value.value.should == 10
18
18
  end
19
19
 
20
- should 'make block arguments available as variables inside the block only' do
20
+ example 'make block arguments available as variables inside the block only' do
21
21
  code = <<-CODE
22
22
  example do
23
23
  number = 10
@@ -33,7 +33,33 @@ end
33
33
  block_def.lookup(:lvar, 'number').value.value.should == 10
34
34
  end
35
35
 
36
- should 'update outer variables modified in the block' do
36
+ example 'blocks should be instances by default' do
37
+ code = <<-CODE
38
+ example do
39
+ end
40
+ CODE
41
+
42
+ block = build_associations(code).to_a.last.last
43
+
44
+ block.type.should == :block
45
+ block.instance_type.should == :instance
46
+ end
47
+
48
+ example 'blocks should inherit the instance type from the outer scope' do
49
+ code = <<-CODE
50
+ class A
51
+ example do
52
+ end
53
+ end
54
+ CODE
55
+
56
+ block = build_associations(code).to_a.last.last
57
+
58
+ block.type.should == :block
59
+ block.instance_type.should == :class
60
+ end
61
+
62
+ example 'update outer variables modified in the block' do
37
63
  code = <<-CODE
38
64
  number = 10
39
65
  @number = 10
@@ -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 class methods' do
5
- should 'define a single class method using `self`' do
5
+ example 'define a single class method using `self`' do
6
6
  code = <<-CODE
7
7
  class Example
8
8
  def self.class_method
@@ -18,4 +18,4 @@ end
18
18
  .should == true
19
19
  end
20
20
  end
21
- end
21
+ 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 'extending classes' do
5
- should 'set the default parent class' do
5
+ example 'set the default parent class' do
6
6
  defs = build_definitions('class First; end')
7
7
 
8
8
  defs.lookup(:const, 'First') \
@@ -11,7 +11,7 @@ describe RubyLint::VirtualMachine do
11
11
  .should == true
12
12
  end
13
13
 
14
- should 'extend a class using a parent' do
14
+ example 'extend a class using a parent' do
15
15
  code = <<-CODE
16
16
  class First
17
17
  def example
@@ -35,7 +35,7 @@ end
35
35
  .should == true
36
36
  end
37
37
 
38
- should 'extend a class using a constant path as the parent class' do
38
+ example 'extend a class using a constant path as the parent class' do
39
39
  code = <<-CODE
40
40
  class First
41
41
  class Second
@@ -61,7 +61,7 @@ end
61
61
  .should == true
62
62
  end
63
63
 
64
- should 'extend a class using a variable' do
64
+ example 'extend a class using a variable' do
65
65
  code = <<-CODE
66
66
  parent = String
67
67
 
@@ -77,22 +77,27 @@ end
77
77
  parents.include?(defs.lookup(:const, 'String')).should == true
78
78
  end
79
79
 
80
- # Ruby only allows classes to inherit from constants.
81
- should 'not be able to inherit non constant values' do
80
+ # This is to ensure that ruby-lint doesn't blow itself up when trying to
81
+ # use a constant as a parent class that can't be found (e.g. a user defined
82
+ # class).
83
+ #
84
+ # See https://github.com/YorickPeterse/ruby-lint/issues/32 for the
85
+ # motivation behind this fix/test.
86
+ example 'inherit Object as a fallback when the parent can not be found' do
82
87
  code = <<-CODE
83
- class MyString < 'foo'
84
-
88
+ class Foo < Bar
85
89
  end
86
90
  CODE
87
91
 
88
- error = should.raise?(TypeError) do
89
- build_definitions(code)
90
- end
92
+ defs = build_definitions(code)
93
+ parents = defs.lookup(:const, 'Foo').parents
94
+
95
+ parents.length.should == 2
91
96
 
92
- error.message.should == 'classes can only inherit another class'
97
+ parents.include?(defs.lookup(:const, 'Object')).should == true
93
98
  end
94
99
 
95
- should 'inherit from Object when importing String' do
100
+ example 'inherit from Object when importing String' do
96
101
  defs = build_definitions('String')
97
102
 
98
103
  defs.lookup(:const, 'String') \
@@ -101,4 +106,4 @@ end
101
106
  .should == true
102
107
  end
103
108
  end
104
- end
109
+ 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 'redefining classes' do
5
- should 'update a class when it is redefined' do
5
+ example 'update a class when it is redefined' do
6
6
  code = <<-CODE
7
7
  class First
8
8
  end
@@ -21,4 +21,4 @@ end
21
21
  .should == true
22
22
  end
23
23
  end
24
- end
24
+ end