ruby-lint 0.0.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.asc +14 -14
  3. data/.gitignore +1 -0
  4. data/.yardopts +1 -1
  5. data/Gemfile +3 -3
  6. data/MANIFEST +16 -3
  7. data/benchmark/virtual_machine.rb +17 -0
  8. data/checksum/ruby-lint-0.0.5.gem.sha512 +1 -0
  9. data/doc/changelog.md +42 -0
  10. data/doc/configuration.md +133 -13
  11. data/lib/ruby-lint/analysis/shadowing_variables.rb +8 -14
  12. data/lib/ruby-lint/analysis/unused_variables.rb +17 -0
  13. data/lib/ruby-lint/ast/node.rb +18 -3
  14. data/lib/ruby-lint/cache.rb +121 -0
  15. data/lib/ruby-lint/cache_entry.rb +44 -0
  16. data/lib/ruby-lint/cli/analyze.rb +37 -18
  17. data/lib/ruby-lint/cli/plot.rb +94 -0
  18. data/lib/ruby-lint/cli.rb +1 -0
  19. data/lib/ruby-lint/configuration.rb +48 -3
  20. data/lib/ruby-lint/definition/ruby_method.rb +28 -1
  21. data/lib/ruby-lint/definition/ruby_object.rb +37 -3
  22. data/lib/ruby-lint/definition_builder/ruby_method.rb +4 -1
  23. data/lib/ruby-lint/definition_builder/ruby_module.rb +4 -1
  24. data/lib/ruby-lint/definition_generator.rb +3 -2
  25. data/lib/ruby-lint/definitions/core/arg0.rb +3 -1
  26. data/lib/ruby-lint/definitions/core/argf.rb +3 -1
  27. data/lib/ruby-lint/definitions/core/argument_error.rb +3 -1
  28. data/lib/ruby-lint/definitions/core/argv.rb +3 -1
  29. data/lib/ruby-lint/definitions/core/array.rb +3 -1
  30. data/lib/ruby-lint/definitions/core/autoload.rb +3 -1
  31. data/lib/ruby-lint/definitions/core/basic_object.rb +2 -0
  32. data/lib/ruby-lint/definitions/core/bignum.rb +3 -1
  33. data/lib/ruby-lint/definitions/core/binding.rb +3 -1
  34. data/lib/ruby-lint/definitions/core/class.rb +2 -0
  35. data/lib/ruby-lint/definitions/core/comparable.rb +3 -1
  36. data/lib/ruby-lint/definitions/core/complex.rb +3 -1
  37. data/lib/ruby-lint/definitions/core/condition_variable.rb +3 -1
  38. data/lib/ruby-lint/definitions/core/continuation.rb +3 -1
  39. data/lib/ruby-lint/definitions/core/data.rb +3 -1
  40. data/lib/ruby-lint/definitions/core/date.rb +3 -1
  41. data/lib/ruby-lint/definitions/core/date_time.rb +3 -1
  42. data/lib/ruby-lint/definitions/core/default_record_separator.rb +3 -1
  43. data/lib/ruby-lint/definitions/core/digest.rb +3 -1
  44. data/lib/ruby-lint/definitions/core/dir.rb +3 -1
  45. data/lib/ruby-lint/definitions/core/encoding.rb +3 -1
  46. data/lib/ruby-lint/definitions/core/encoding_error.rb +3 -1
  47. data/lib/ruby-lint/definitions/core/enumerable.rb +3 -1
  48. data/lib/ruby-lint/definitions/core/enumerator.rb +3 -1
  49. data/lib/ruby-lint/definitions/core/env.rb +4 -1
  50. data/lib/ruby-lint/definitions/core/eoferror.rb +3 -1
  51. data/lib/ruby-lint/definitions/core/erb.rb +2 -0
  52. data/lib/ruby-lint/definitions/core/errno.rb +3 -1
  53. data/lib/ruby-lint/definitions/core/etc.rb +3 -1
  54. data/lib/ruby-lint/definitions/core/exception.rb +3 -1
  55. data/lib/ruby-lint/definitions/core/false.rb +3 -1
  56. data/lib/ruby-lint/definitions/core/false_class.rb +3 -1
  57. data/lib/ruby-lint/definitions/core/fatal_error.rb +3 -1
  58. data/lib/ruby-lint/definitions/core/fiber.rb +3 -1
  59. data/lib/ruby-lint/definitions/core/fiber_error.rb +3 -1
  60. data/lib/ruby-lint/definitions/core/file.rb +3 -1
  61. data/lib/ruby-lint/definitions/core/file_list.rb +3 -1
  62. data/lib/ruby-lint/definitions/core/file_test.rb +3 -1
  63. data/lib/ruby-lint/definitions/core/file_utils.rb +3 -1
  64. data/lib/ruby-lint/definitions/core/fixnum.rb +3 -1
  65. data/lib/ruby-lint/definitions/core/float.rb +3 -1
  66. data/lib/ruby-lint/definitions/core/float_domain_error.rb +3 -1
  67. data/lib/ruby-lint/definitions/core/gc.rb +3 -1
  68. data/lib/ruby-lint/definitions/core/gem.rb +3 -1
  69. data/lib/ruby-lint/definitions/core/hash.rb +3 -1
  70. data/lib/ruby-lint/definitions/core/immediate_value.rb +3 -1
  71. data/lib/ruby-lint/definitions/core/index_error.rb +3 -1
  72. data/lib/ruby-lint/definitions/core/integer.rb +3 -1
  73. data/lib/ruby-lint/definitions/core/interrupt.rb +3 -1
  74. data/lib/ruby-lint/definitions/core/io.rb +3 -1
  75. data/lib/ruby-lint/definitions/core/ioerror.rb +3 -1
  76. data/lib/ruby-lint/definitions/core/kernel.rb +2 -0
  77. data/lib/ruby-lint/definitions/core/key_error.rb +3 -1
  78. data/lib/ruby-lint/definitions/core/load_error.rb +3 -1
  79. data/lib/ruby-lint/definitions/core/local_jump_error.rb +3 -1
  80. data/lib/ruby-lint/definitions/core/marshal.rb +3 -1
  81. data/lib/ruby-lint/definitions/core/match_data.rb +3 -1
  82. data/lib/ruby-lint/definitions/core/math.rb +3 -1
  83. data/lib/ruby-lint/definitions/core/memory_segmention_error.rb +3 -1
  84. data/lib/ruby-lint/definitions/core/method.rb +3 -1
  85. data/lib/ruby-lint/definitions/core/module.rb +2 -0
  86. data/lib/ruby-lint/definitions/core/monitor.rb +3 -1
  87. data/lib/ruby-lint/definitions/core/monitor_mixin.rb +3 -1
  88. data/lib/ruby-lint/definitions/core/mutex.rb +3 -1
  89. data/lib/ruby-lint/definitions/core/name_error.rb +3 -1
  90. data/lib/ruby-lint/definitions/core/nil.rb +3 -1
  91. data/lib/ruby-lint/definitions/core/nil_class.rb +3 -1
  92. data/lib/ruby-lint/definitions/core/no_memory_error.rb +3 -1
  93. data/lib/ruby-lint/definitions/core/no_method_error.rb +3 -1
  94. data/lib/ruby-lint/definitions/core/not_implemented_error.rb +3 -1
  95. data/lib/ruby-lint/definitions/core/numeric.rb +3 -1
  96. data/lib/ruby-lint/definitions/core/object.rb +3 -1
  97. data/lib/ruby-lint/definitions/core/object_space.rb +3 -1
  98. data/lib/ruby-lint/definitions/core/open_struct.rb +3 -1
  99. data/lib/ruby-lint/definitions/core/option_parser.rb +3 -1
  100. data/lib/ruby-lint/definitions/core/precision.rb +3 -1
  101. data/lib/ruby-lint/definitions/core/primitive_failure.rb +3 -1
  102. data/lib/ruby-lint/definitions/core/proc.rb +3 -1
  103. data/lib/ruby-lint/definitions/core/process.rb +3 -1
  104. data/lib/ruby-lint/definitions/core/queue.rb +3 -1
  105. data/lib/ruby-lint/definitions/core/rake.rb +3 -1
  106. data/lib/ruby-lint/definitions/core/rake_file_utils.rb +3 -1
  107. data/lib/ruby-lint/definitions/core/rakeversion.rb +3 -1
  108. data/lib/ruby-lint/definitions/core/random.rb +3 -1
  109. data/lib/ruby-lint/definitions/core/range.rb +3 -1
  110. data/lib/ruby-lint/definitions/core/range_error.rb +3 -1
  111. data/lib/ruby-lint/definitions/core/rational.rb +3 -1
  112. data/lib/ruby-lint/definitions/core/rb_config.rb +3 -1
  113. data/lib/ruby-lint/definitions/core/regexp.rb +3 -1
  114. data/lib/ruby-lint/definitions/core/regexp_error.rb +3 -1
  115. data/lib/ruby-lint/definitions/core/ruby_copyright.rb +3 -1
  116. data/lib/ruby-lint/definitions/core/ruby_description.rb +3 -1
  117. data/lib/ruby-lint/definitions/core/ruby_engine.rb +3 -1
  118. data/lib/ruby-lint/definitions/core/ruby_patchlevel.rb +3 -1
  119. data/lib/ruby-lint/definitions/core/ruby_platform.rb +3 -1
  120. data/lib/ruby-lint/definitions/core/ruby_release_date.rb +3 -1
  121. data/lib/ruby-lint/definitions/core/ruby_version.rb +3 -1
  122. data/lib/ruby-lint/definitions/core/runtime_error.rb +3 -1
  123. data/lib/ruby-lint/definitions/core/scan_error.rb +3 -1
  124. data/lib/ruby-lint/definitions/core/script_error.rb +3 -1
  125. data/lib/ruby-lint/definitions/core/security_error.rb +3 -1
  126. data/lib/ruby-lint/definitions/core/shellwords.rb +3 -1
  127. data/lib/ruby-lint/definitions/core/signal.rb +3 -1
  128. data/lib/ruby-lint/definitions/core/signal_exception.rb +3 -1
  129. data/lib/ruby-lint/definitions/core/singleton.rb +3 -1
  130. data/lib/ruby-lint/definitions/core/sized_queue.rb +3 -1
  131. data/lib/ruby-lint/definitions/core/standard_error.rb +3 -1
  132. data/lib/ruby-lint/definitions/core/stderr.rb +2 -0
  133. data/lib/ruby-lint/definitions/core/stdin.rb +2 -0
  134. data/lib/ruby-lint/definitions/core/stdout.rb +2 -0
  135. data/lib/ruby-lint/definitions/core/stop_iteration.rb +3 -1
  136. data/lib/ruby-lint/definitions/core/string.rb +3 -1
  137. data/lib/ruby-lint/definitions/core/string_io.rb +3 -1
  138. data/lib/ruby-lint/definitions/core/string_scanner.rb +3 -1
  139. data/lib/ruby-lint/definitions/core/struct.rb +3 -1
  140. data/lib/ruby-lint/definitions/core/syck.rb +3 -1
  141. data/lib/ruby-lint/definitions/core/symbol.rb +3 -1
  142. data/lib/ruby-lint/definitions/core/syntax_error.rb +3 -1
  143. data/lib/ruby-lint/definitions/core/system_call_error.rb +3 -1
  144. data/lib/ruby-lint/definitions/core/system_exit.rb +3 -1
  145. data/lib/ruby-lint/definitions/core/system_stack_error.rb +3 -1
  146. data/lib/ruby-lint/definitions/core/thread.rb +3 -1
  147. data/lib/ruby-lint/definitions/core/thread_error.rb +3 -1
  148. data/lib/ruby-lint/definitions/core/thread_group.rb +3 -1
  149. data/lib/ruby-lint/definitions/core/time.rb +3 -1
  150. data/lib/ruby-lint/definitions/core/toplevel_binding.rb +3 -1
  151. data/lib/ruby-lint/definitions/core/true.rb +3 -1
  152. data/lib/ruby-lint/definitions/core/true_class.rb +3 -1
  153. data/lib/ruby-lint/definitions/core/type_error.rb +3 -1
  154. data/lib/ruby-lint/definitions/core/unbound_method.rb +3 -1
  155. data/lib/ruby-lint/definitions/core/unmarshalable.rb +3 -1
  156. data/lib/ruby-lint/definitions/core/unsupported_library_error.rb +3 -1
  157. data/lib/ruby-lint/definitions/core/weak_ref.rb +3 -1
  158. data/lib/ruby-lint/definitions/core/yaml.rb +1 -0
  159. data/lib/ruby-lint/definitions/core/zero_division_error.rb +3 -1
  160. data/lib/ruby-lint/definitions/core/zlib.rb +8840 -0
  161. data/lib/ruby-lint/definitions/rails/abstract_controller.rb +1 -0
  162. data/lib/ruby-lint/definitions/rails/action_controller.rb +1 -0
  163. data/lib/ruby-lint/definitions/rails/action_dispatch.rb +1 -0
  164. data/lib/ruby-lint/definitions/rails/action_mailer.rb +1 -0
  165. data/lib/ruby-lint/definitions/rails/action_pack.rb +1 -0
  166. data/lib/ruby-lint/definitions/rails/action_view.rb +1 -0
  167. data/lib/ruby-lint/definitions/rails/active_model.rb +1 -0
  168. data/lib/ruby-lint/definitions/rails/active_record.rb +1 -0
  169. data/lib/ruby-lint/definitions/rails/active_support.rb +1 -0
  170. data/lib/ruby-lint/definitions/rails/arel.rb +1 -0
  171. data/lib/ruby-lint/definitions/rails/rails.rb +1 -0
  172. data/lib/ruby-lint/definitions/rails/sprockets.rb +1 -0
  173. data/lib/ruby-lint/file_scanner.rb +2 -0
  174. data/lib/ruby-lint/iterator.rb +21 -12
  175. data/lib/ruby-lint/method_call_info.rb +31 -0
  176. data/lib/ruby-lint/node_hash.rb +105 -0
  177. data/lib/ruby-lint/parser.rb +4 -2
  178. data/lib/ruby-lint/runner.rb +62 -6
  179. data/lib/ruby-lint/template/definition.erb +2 -0
  180. data/lib/ruby-lint/version.rb +1 -1
  181. data/lib/ruby-lint/virtual_machine.rb +75 -43
  182. data/lib/ruby-lint.rb +20 -2
  183. data/profiling/virtual_machine.rb +20 -0
  184. data/ruby-lint.gemspec +2 -1
  185. data/spec/fixtures/complex/rcap.rb +29 -0
  186. data/spec/fixtures/complex/slop.rb +21 -0
  187. data/spec/fixtures/file_scanner/lib/ruby-lint/definition/constant_proxy.rb +6 -0
  188. data/spec/fixtures/file_scanner/lib/ruby-lint/global_scope.rb +6 -0
  189. data/spec/ruby-lint/analysis/unused_variables_spec.rb +114 -0
  190. data/spec/ruby-lint/cache_entry_spec.rb +25 -0
  191. data/spec/ruby-lint/cache_spec.rb +53 -0
  192. data/spec/ruby-lint/definition/ruby_method_spec.rb +4 -4
  193. data/spec/ruby-lint/definition/ruby_object_spec.rb +33 -0
  194. data/spec/ruby-lint/iterator_spec.rb +15 -0
  195. data/spec/ruby-lint/node_hash_spec.rb +56 -0
  196. data/spec/ruby-lint/runner_spec.rb +6 -1
  197. data/spec/ruby-lint/virtual_machine/assignments/variables_spec.rb +2 -2
  198. data/spec/ruby-lint/virtual_machine/location_spec.rb +64 -0
  199. data/spec/ruby-lint/virtual_machine/method_call_tracking_spec.rb +64 -0
  200. data/spec/spec_helper.rb +7 -0
  201. data/task/generate.rake +1 -1
  202. data.tar.gz.asc +14 -14
  203. metadata +34 -7
  204. metadata.gz.asc +14 -14
  205. data/debug/memory_usage.rb +0 -14
  206. data/debug/profile.rb +0 -18
  207. data/task/profile.rake +0 -27
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::NodeHash do
4
+ before do
5
+ @node_hash = RubyLint::NodeHash.new
6
+ @node = s(:integer, 10)
7
+ end
8
+
9
+ example 'set and get information associated with a node' do
10
+ @node_hash[@node] = 10
11
+
12
+ @node_hash[@node].should == 10
13
+ end
14
+
15
+ example 'check if a node has been added' do
16
+ @node_hash.key?(@node).should == false
17
+
18
+ @node_hash[@node] = 10
19
+
20
+ @node_hash.key?(@node).should == true
21
+ end
22
+
23
+ example 'return all keys' do
24
+ @node_hash[@node] = 10
25
+
26
+ @node_hash.keys.should == [@node.sha1]
27
+ end
28
+
29
+ example 'return all values' do
30
+ @node_hash[@node] = 10
31
+
32
+ @node_hash.values.should == [10]
33
+ end
34
+
35
+ example 'convert to an Array' do
36
+ @node_hash[@node] = 10
37
+
38
+ @node_hash.to_a.should == [[@node.sha1, 10]]
39
+ end
40
+
41
+ example 'merge with another node hash' do
42
+ other = RubyLint::NodeHash.new(@node.sha1 => 10)
43
+
44
+ @node_hash.merge!(other)
45
+
46
+ @node_hash.key?(@node).should == true
47
+ end
48
+
49
+ example 'merge with another hash' do
50
+ other = {@node => 10}
51
+
52
+ @node_hash.merge_hash!(other)
53
+
54
+ @node_hash.key?(@node).should == true
55
+ end
56
+ end
@@ -3,6 +3,11 @@ require 'spec_helper'
3
3
  describe RubyLint::Runner do
4
4
  before do
5
5
  @configuration = RubyLint::Configuration.new
6
+ @cache_dir = Dir.mktmpdir('ruby-lint')
7
+ end
8
+
9
+ after do
10
+ FileUtils.rm_rf(@cache_dir)
6
11
  end
7
12
 
8
13
  example 'run analysis on a single file' do
@@ -42,7 +47,7 @@ describe RubyLint::Runner do
42
47
 
43
48
  example 'associating nodes with external definitions' do
44
49
  files = [fixture_path('associating.rb')]
45
- dirs = [fixture_path('../../lib')]
50
+ dirs = [fixture_path('file_scanner/lib/ruby-lint')]
46
51
  config = RubyLint::Configuration.new(:directories => dirs)
47
52
  runner = RubyLint::Runner.new(config)
48
53
  output = runner.analyze(files)
@@ -36,8 +36,8 @@ describe RubyLint::VirtualMachine do
36
36
  end
37
37
 
38
38
  example 'assign a value to a constant path' do
39
- defs = build_definitions('Kernel::FOO = 10')
40
- foo = defs.lookup(:const, 'Kernel').lookup(:const, 'FOO')
39
+ defs = build_definitions('module Foo; end; Foo::FOO = 10')
40
+ foo = defs.lookup(:const, 'Foo').lookup(:const, 'FOO')
41
41
 
42
42
  foo.is_a?(ruby_object).should == true
43
43
 
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'definition location information' do
5
+ example 'store location information of a class' do
6
+ code = <<-CODE
7
+ # Example class.
8
+ class Example
9
+ end
10
+ CODE
11
+
12
+ defs = build_definitions(code)
13
+ obj = defs.lookup(:const, 'Example')
14
+
15
+ obj.line.should == 2
16
+ obj.column.should == 0
17
+ obj.file.should == '(ruby-lint)'
18
+ end
19
+
20
+ example 'store location information of a module' do
21
+ code = <<-CODE
22
+ # Example module.
23
+ module Example
24
+ end
25
+ CODE
26
+
27
+ defs = build_definitions(code)
28
+ obj = defs.lookup(:const, 'Example')
29
+
30
+ obj.line.should == 2
31
+ obj.column.should == 0
32
+ obj.file.should == '(ruby-lint)'
33
+ end
34
+
35
+ example 'store location information of a method' do
36
+ code = <<-CODE
37
+ # Example module.
38
+ def example
39
+ end
40
+ CODE
41
+
42
+ defs = build_definitions(code)
43
+ obj = defs.lookup(:instance_method, 'example')
44
+
45
+ obj.line.should == 2
46
+ obj.column.should == 0
47
+ obj.file.should == '(ruby-lint)'
48
+ end
49
+
50
+ example 'store location information of a variable' do
51
+ code = <<-CODE
52
+ # Example assignment
53
+ number = 10
54
+ CODE
55
+
56
+ defs = build_definitions(code)
57
+ obj = defs.lookup(:lvar, 'number')
58
+
59
+ obj.line.should == 2
60
+ obj.column.should == 0
61
+ obj.file.should == '(ruby-lint)'
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe RubyLint::VirtualMachine do
4
+ context 'method call tracking' do
5
+ before :all do
6
+ code = <<-CODE
7
+ def first_method
8
+ end
9
+
10
+ def second_method
11
+ end
12
+
13
+ def third_method
14
+ first_method
15
+ second_method
16
+ String.new
17
+ end
18
+ CODE
19
+
20
+ definitions = build_definitions(code)
21
+ @first = definitions.lookup(:instance_method, 'first_method')
22
+ @second = definitions.lookup(:instance_method, 'second_method')
23
+ @third = definitions.lookup(:instance_method, 'third_method')
24
+ @string = definitions.lookup(:const, 'String')
25
+ end
26
+
27
+ example 'track the right amount of method calls' do
28
+ @third.calls.length.should == 3
29
+ end
30
+
31
+ example 'track call location information' do
32
+ @third.calls[0].line.should == 8
33
+ @third.calls[0].column.should == 2
34
+
35
+ @third.calls[1].line.should == 9
36
+ @third.calls[1].column.should == 2
37
+ end
38
+
39
+ example 'track the call definitions' do
40
+ @third.calls[0].definition.should == @first
41
+ @third.calls[1].definition.should == @second
42
+ end
43
+
44
+ example 'track call location information in inverse direction' do
45
+ @first.callers[0].line.should == 8
46
+ @first.callers[0].column.should == 2
47
+
48
+ @second.callers[0].line.should == 9
49
+ @second.callers[0].column.should == 2
50
+ end
51
+
52
+ example 'track method calls in inverse direction' do
53
+ @first.callers[0].definition.should == @third
54
+ @second.callers[0].definition.should == @third
55
+ end
56
+
57
+ example 'should not modify read-only definitions' do
58
+ method = @string.lookup(:method, 'new')
59
+
60
+ @third.calls[2].definition.should == method
61
+ method.callers.empty?.should == true
62
+ end
63
+ end
64
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  require 'rspec'
2
2
  require 'stringio'
3
3
  require 'redcard'
4
+ require 'tmpdir'
5
+ require 'fileutils'
6
+ require 'tempfile'
7
+ require 'benchmark'
4
8
 
5
9
  if ENV['COVERAGE']
6
10
  require_relative 'support/simplecov'
@@ -10,6 +14,9 @@ if ENV['COVERALLS']
10
14
  require_relative 'support/coveralls'
11
15
  end
12
16
 
17
+ # Disable caching of RubyLint::Runner for all tests.
18
+ ENV['RUBY_LINT_DISABLE_CACHE'] = '1'
19
+
13
20
  require_relative '../lib/ruby-lint'
14
21
  require_relative 'support/building'
15
22
  require_relative 'support/parsing'
data/task/generate.rake CHANGED
@@ -25,7 +25,7 @@ namespace :generate do
25
25
  generator = RubyLint::DefinitionGenerator.new(
26
26
  Object,
27
27
  directory,
28
- :ignore => %w{BasicObject Class GEMSPEC Module},
28
+ :ignore => %w{BasicObject Class GEMSPEC Module Kernel},
29
29
  :overwrite => !!args[:overwrite]
30
30
  )
31
31
 
data.tar.gz.asc CHANGED
@@ -1,17 +1,17 @@
1
1
  -----BEGIN PGP SIGNATURE-----
2
- Version: GnuPG v2.0.21 (GNU/Linux)
2
+ Version: GnuPG v2.0.22 (GNU/Linux)
3
3
 
4
- iQIcBAABAgAGBQJSI1ZdAAoJEPMbESk2SfREfKkP/izxfJRPVk8TzuiXs3lc6lmR
5
- siLgOCzBwLJK9Pm5iAENQ6D8jyOcWBjOK/NMLgccMyg6KbW54TGFWfZ2n2X3k0QI
6
- 38+HjeDGym92tE1LPOtIHslFKpojRJqUZxFNXhwMtmh1i8Ieqpwq/yA+hyeyFF5Y
7
- S8i2utYzuWs32bcCSs25wG9ke9rwtO2HiGoDLeIWysYcoAWdSWe0HyAcL9ip3KF+
8
- 1tnKkfRaiFflSWh2o8fmuhc73/yL7vNSTpZtaxDuE7Dsg3Dm/OrIyw/h3ud8LHsa
9
- uV0SJHMDBg2xJo7JqYJDnazzAqAja/N2IfvywGT1CJfE5qsDdrHyFBPXSuBYRAZy
10
- dphjD6whpUkuJLGS6vMm7WAFo2xFOaHM7r6ulO5LWZkaiJLEEIJ/34NijKbS7xsm
11
- L5XH6Zhwoli3rMVJBPjnhT+blOXYSP1+Lw84xbI8OpbQMoGtWtErIOJuHNPrP5YP
12
- B5x/OnE8KaT4gvyakSjRl/lTeAfTtvI+TFI5Atmye2+Q0eSOhnpxHQaqtNp/HFUl
13
- ECDmkkVH2lc8L/7H9EqjgNTJiNLtPfPWxDBAzBIVyT2i4WzKKQC4eJjEhZuzAvcX
14
- SZNcPoUIXf4P2mE4APGILziitM3k+azdiIvHZ2FzU2ruVA5g5nvD86VEPczw5zDL
15
- LQCMOKMtg15IP5HWWrWB
16
- =x7n/
4
+ iQIcBAABAgAGBQJSWugYAAoJEPMbESk2SfREyWwQAK79Sx6k+kT89iV25d17afIF
5
+ 8VwlL7+gqQV9NiSeK8hgWHpvy7A+sP1cYifsm5R1nxesN350m3QhdZO9HeJbr97e
6
+ MSWPToL23rwCNj/J0YMcKDJpRZgU4qQLbPG/ZXprv2mmkxeWziNZnPMdRD1eVXmE
7
+ rMAIlvCHgzyGpxrNrZ7BFGCrBSZp8jjIEvWoURSQJT7i8JcVE8Pi5KIHuiCIgbyM
8
+ qp3DPM/K5Gln/7uRyoFjphIz+pOT978kTJzKQwg1dEwttvrW0jAD5K3BxiIy5IF9
9
+ exO2Ngd+9e/2efDQ5rXK8JCJ7WtChplmuaj1pGn1J3YHfyzZecqV5ei7t2SfP5Pa
10
+ vMOr1z09V2/IAOi43hWsNm+AUZj+Bg8+AXUmW2bFNxmbPw1J96FJbmRaVJLUcxyf
11
+ TWibwq+z4q7d8wEcoOEPmzqdHQG9mHf+mvLlhDUKZrgcF0asKJwHNpHt6ppxFdpd
12
+ X9AXWGUFvKd4/LVxBJVTYNN4ynBzyMe23thVIbcxbaXj6oM1oV6Jz6y3CSnApQm9
13
+ 3hpzLLr4eCak35uHatTWmur4n8XQI8S7W5H6h7VfYTOKdVG5vRa4daYtRMyRSDcz
14
+ J7L7Y5DgL9GZMF59kuSo1gQFYWLQOxg1zt/t1V/YAubX6A3VU4bcll/CWB7D3eR0
15
+ o0VlVQPGIgrfvr4SXlBq
16
+ =ZCLE
17
17
  -----END PGP SIGNATURE-----
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yorick Peterse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-01 00:00:00.000000000 Z
11
+ date: 2013-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0.pre6
19
+ version: 2.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0.pre6
26
+ version: 2.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: slop
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: gnuplot
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  description: A linter and static code analysis tool for Ruby.
182
196
  email: yorickpeterse@gmail.com
183
197
  executables:
@@ -195,12 +209,12 @@ files:
195
209
  - MANIFEST
196
210
  - README.md
197
211
  - Rakefile
212
+ - benchmark/virtual_machine.rb
198
213
  - bin/ruby-lint
199
214
  - checksum/.gitkeep
200
215
  - checksum/ruby-lint-0.0.3.gem.sha512
201
216
  - checksum/ruby-lint-0.0.4.gem.sha512
202
- - debug/memory_usage.rb
203
- - debug/profile.rb
217
+ - checksum/ruby-lint-0.0.5.gem.sha512
204
218
  - doc/.gitkeep
205
219
  - doc/DCO.md
206
220
  - doc/architecture.md
@@ -222,10 +236,13 @@ files:
222
236
  - lib/ruby-lint/analysis/unused_variables.rb
223
237
  - lib/ruby-lint/ast/builder.rb
224
238
  - lib/ruby-lint/ast/node.rb
239
+ - lib/ruby-lint/cache.rb
240
+ - lib/ruby-lint/cache_entry.rb
225
241
  - lib/ruby-lint/cli.rb
226
242
  - lib/ruby-lint/cli/analyze.rb
227
243
  - lib/ruby-lint/cli/ast.rb
228
244
  - lib/ruby-lint/cli/base.rb
245
+ - lib/ruby-lint/cli/plot.rb
229
246
  - lib/ruby-lint/configuration.rb
230
247
  - lib/ruby-lint/constant_loader.rb
231
248
  - lib/ruby-lint/default_names.rb
@@ -377,6 +394,7 @@ files:
377
394
  - lib/ruby-lint/definitions/core/weak_ref.rb
378
395
  - lib/ruby-lint/definitions/core/yaml.rb
379
396
  - lib/ruby-lint/definitions/core/zero_division_error.rb
397
+ - lib/ruby-lint/definitions/core/zlib.rb
380
398
  - lib/ruby-lint/definitions/global_variables.rb
381
399
  - lib/ruby-lint/definitions/rails.rb
382
400
  - lib/ruby-lint/definitions/rails/abstract_controller.rb
@@ -409,7 +427,9 @@ files:
409
427
  - lib/ruby-lint/method_call/base.rb
410
428
  - lib/ruby-lint/method_call/define_method.rb
411
429
  - lib/ruby-lint/method_call/include.rb
430
+ - lib/ruby-lint/method_call_info.rb
412
431
  - lib/ruby-lint/nested_stack.rb
432
+ - lib/ruby-lint/node_hash.rb
413
433
  - lib/ruby-lint/parser.rb
414
434
  - lib/ruby-lint/presenter/json.rb
415
435
  - lib/ruby-lint/presenter/text.rb
@@ -421,6 +441,7 @@ files:
421
441
  - lib/ruby-lint/variable_predicates.rb
422
442
  - lib/ruby-lint/version.rb
423
443
  - lib/ruby-lint/virtual_machine.rb
444
+ - profiling/virtual_machine.rb
424
445
  - ruby-lint.gemspec
425
446
  - ruby-lint.yml
426
447
  - spec/fixtures/associating.rb
@@ -431,6 +452,8 @@ files:
431
452
  - spec/fixtures/file_scanner/lib/example/recursive/source.rb
432
453
  - spec/fixtures/file_scanner/lib/example/recursive/target.rb
433
454
  - spec/fixtures/file_scanner/lib/example/user.rb
455
+ - spec/fixtures/file_scanner/lib/ruby-lint/definition/constant_proxy.rb
456
+ - spec/fixtures/file_scanner/lib/ruby-lint/global_scope.rb
434
457
  - spec/fixtures/file_scanner/lib/test-dashes/foo.rb
435
458
  - spec/fixtures/file_scanner/rails/app/models/example/user.rb
436
459
  - spec/fixtures/file_scanner/rails/app/models/user.rb
@@ -449,6 +472,8 @@ files:
449
472
  - spec/ruby-lint/analysis/undefined_variables_spec.rb
450
473
  - spec/ruby-lint/analysis/unused_variables_spec.rb
451
474
  - spec/ruby-lint/ast/node_spec.rb
475
+ - spec/ruby-lint/cache_entry_spec.rb
476
+ - spec/ruby-lint/cache_spec.rb
452
477
  - spec/ruby-lint/cli/analyze_spec.rb
453
478
  - spec/ruby-lint/cli/ast_spec.rb
454
479
  - spec/ruby-lint/configuration_spec.rb
@@ -468,6 +493,7 @@ files:
468
493
  - spec/ruby-lint/inspector_spec.rb
469
494
  - spec/ruby-lint/iterator_spec.rb
470
495
  - spec/ruby-lint/nested_stack_spec.rb
496
+ - spec/ruby-lint/node_hash_spec.rb
471
497
  - spec/ruby-lint/parser_spec.rb
472
498
  - spec/ruby-lint/presenter/json_spec.rb
473
499
  - spec/ruby-lint/presenter/text_spec.rb
@@ -497,6 +523,8 @@ files:
497
523
  - spec/ruby-lint/virtual_machine/global_variables_spec.rb
498
524
  - spec/ruby-lint/virtual_machine/inherit_kernel_spec.rb
499
525
  - spec/ruby-lint/virtual_machine/interpolation_spec.rb
526
+ - spec/ruby-lint/virtual_machine/location_spec.rb
527
+ - spec/ruby-lint/virtual_machine/method_call_tracking_spec.rb
500
528
  - spec/ruby-lint/virtual_machine/methods/attr_spec.rb
501
529
  - spec/ruby-lint/virtual_machine/methods/define_method_spec.rb
502
530
  - spec/ruby-lint/virtual_machine/methods/defining_spec.rb
@@ -524,7 +552,6 @@ files:
524
552
  - task/generate.rake
525
553
  - task/graphviz.rake
526
554
  - task/manifest.rake
527
- - task/profile.rake
528
555
  - task/tag.rake
529
556
  - task/test.rake
530
557
  - task/todo.rake
metadata.gz.asc CHANGED
@@ -1,17 +1,17 @@
1
1
  -----BEGIN PGP SIGNATURE-----
2
- Version: GnuPG v2.0.21 (GNU/Linux)
2
+ Version: GnuPG v2.0.22 (GNU/Linux)
3
3
 
4
- iQIcBAABAgAGBQJSI1ZdAAoJEPMbESk2SfRED5gQAKyjQeBLhUlFdrBqItO2uQTt
5
- tlZoZWSrprz/yHDOI7uVAbPaE/LmwaRQgSy8lbdp0d8M/m9UAdEyOT3COB+LcTtt
6
- YwN0X4MZ6OckJfQnS+ZTIfgnj+R4tI430Ifq1U11D3uleJDLrjL7/6yvVz5Z6ZqB
7
- haeFIc0oNSQUxSg6c7So18BdTPDi1dEC4+xRBkFi4F0s+JTIyMrzvPQdPjYDFC3v
8
- c1smx7DqLIO58DLNVcvPivouFYIrfuX4hubu2TkS4HFCh4Swn6r1gNpFg8A5Z+qV
9
- t5hzX3PQoN1OK88GCJxVjcoJEtZ3lVAU1G61Pt29LrKZHkrpWXYFsU8LHkpatvFX
10
- f3q+HbvddrToaR8nTxZAor3Xf4rb9+RwVYAEeePRySXObcfEd+ZTL6ljQ6RsbWqS
11
- IR5zmKbMitEH/d1qfH8D3oKoe8FVhP6l8Cwi7SGmjlRJ/HrJInTn0sge1kw2jDet
12
- YXCBGj3jxizmD5nAPhPcDXeul704VmgBsoQF3pNOGD7Rd1sjxKiKpWMfTqZShSPu
13
- DHXJ2sBCOP3QoWxYuRyw6mMXMpt57RZ/e37KrRHIBsCEIh2Qpgvkv3x443rCSo+X
14
- zVKIW5hR7T2kkY9tziIe6SmOkPz3JXQCzVuk/o9F9pOnbSORS6kuJc1haQ6vnFXN
15
- lG3YOvdp/Bomj64R+wSP
16
- =73rz
4
+ iQIcBAABAgAGBQJSWugYAAoJEPMbESk2SfREyAwP/Rr9jTup5rlAjLVhAYYtXnjO
5
+ pUrPFcsUUwYS/5N/o3p2HlQK3bbXehfQVJ235N4faF7eyS8V07Ak4BDz3aYkYny3
6
+ vFwYbkbPOcptbNRbSyNo+tF6OzXuZ+dSRB9XXbZ/OadTAKDyGfcouGvMLcP01CeF
7
+ 1KaQOTzn/Mi2Jg6gXbEoGzoG1AjHLp7r2IVYZ97anGbQD2nprcMVKGZwXP4qTfZH
8
+ qB6Tm2DAogoziMDcqXRbOLFrEJe5LU88SAqR9Ks7x158D40dAbw/9WcoQBgdRZBQ
9
+ 97hxbOa5pgOPMI+TMojeDsT1PEASScVxO6OuNsMnZt/30roxv6Lb+G1MpeYk4HV0
10
+ 7oaYAvTwKF+WQeFSmPvnkJ3dWaJwq3danWlm4L51YNP4ulGZf86ApoSEura4Kjpa
11
+ BXVIPlzjNESrQ8Lo7wu+h+ZZKGJzFFbHliF3s6wkdRB5WInjSb5ajSkhZIOyLi8b
12
+ p4OxxR7aSiQfbSlrcdmhVCHpMAARG7rQbYvQTp01NbwJmzmmsx6PiYLzLQNrW+v+
13
+ pQMCqkmIlbIKrZfb/YyXkB70/nBiPMLOM3oz/X1t8EyuOJd2Tc6IO5n8n3ilvZdW
14
+ WhljFlEj11DGWeKhrRiWZcTOkU7SMHG9IVbPfhZrXBwsn2MzzBjSB78oFPbjHAFq
15
+ xNmx+U9HE3H7mMpce8r5
16
+ =Zjwg
17
17
  -----END PGP SIGNATURE-----